首页 > 编程语言 >深度学习中的两种anchor算法anchor-based 和anchor free 的区别

深度学习中的两种anchor算法anchor-based 和anchor free 的区别

时间:2022-12-06 10:22:27浏览次数:43  
标签:box 正例 based min free anchor select RPN

anchor-based:这里基于fasterrcnn中选择anchor的方法

## RPN阶段(anchor target):
1. 计算所有样本点(w x h)与9个anchor拼在一起形成w x h x 9个框,得到all_anchors(以图像为单位)
- mesh_grid,featuremap中每个点为中心(乘以stride),与9个anchor为宽高,形成H x W x 9个框(以图像为单位)
- labels[...] = -1
2. 删除all_anchors中越界的框得到inside_anchors
3. 对于每个样本点9个anchor中,选择与targets重叠度最高的,如果重叠度低于阈值(RPN_NEGATIVE_OVERLAP = 0.3),则认为是负例 0
- Inside_Anchors(N, N <= HxWx9), targets(M) -> iou = NxM
- max_iou = Nx1
- HxWx9这个groundtruth的默认初始值是-1(忽略的)
- select_anchor_index = iou.max(dim=1) (Nx1) < RPN_NEGATIVE_OVERLAP
- labels[select_anchor_index] = 0
4. 对于每个样本点9个anchor中,选择与targets重叠度最高的,作为正例 1,注意,这里会覆盖第3条的结果
- iou = MxN Inside_Anchors(N, N <= HxWx9), targets(M)
- 以M为主,选N个中最大值对应的anchor,为正例, select_anchor = iou.argmax(dim=1) select_anchor = Mx1
- labels[select_anchor] = 1
- 如果gt匹配不到任何anchor(指,无法超过正例阈值的)
- 每个targets必须有最少一个anchor匹配
5. 对于每个样本点9个anchor中,选择与targets重叠度最高的,如果重叠度大于等于阈值(RPN_POSITIVE_OVERLAP = 0.7),则认为是正例 1
6. 选择50%正例(RPN_FG_FRACTION * RPN_BATCHSIZE = 0.5 * 256),如果正例数量超出,则随机忽略多出的 -1
7. 选择50%负例(RPN_BATCHSIZE - num_fg),如果负例数量超出,则随机忽略多出的
8. 统计所有label >= 0,即负例和正例总数,为num_examples
9. 正负例的样本点权重给予1 / num_examples
10. 计算RPN阶段的Loss

 

anchor free:基于yolov5中的理解

1. BPR(best precision recall)
- 对于N个框,和M个anchor,如果每个框最少匹配一个anchor,则为True,否则为False。统计其均值,得到的就是BPR
- 匹配的原则是:box与anchor的max(max(box宽/anchor宽,box宽/anchor宽), max(anchor宽/box宽, anchor高/box高)) < anchor_t(取4)
- 匹配原则可以转换为:min(min(box宽/anchor宽,box宽/anchor宽), min(anchor宽/box宽, anchor高/box高)) > 1 / anchor_t
2.fitness,适应度
- 对于N个框,和M个anchor,最佳匹配的比例系数,其实就是:(min(min(box宽/anchor宽,box宽/anchor宽), min(anchor宽/box宽, anchor高/box高)) * 匹配标志) 取平均值
- 用来遗传算法衡量效果的,获得最优anchor的
3.anchor的最优计算流程
- 计算默认anchor与数据集的bpr,如果小于0.99则需要重新计算anchor,否则直接使用默认anchor
- a. 计算时,对数据集的box的宽高,进行kmeans得到新的起始anchor,定义为K
- b. 计算K的适应度
- c. 计算变异系数v
- 只变异90%的元素
- 得到随机系数,范围是0.3 - 3.0。其中使用到了正态分布随机数
- d. 使用v变异K,得到变异后的anchor,定义为mutate_anchor
- e. 计算mutate_anchor的适应度(fitness),如果大于当前适应度,则保留,替换K为mutate_anchor
- f. 循环c步骤,总共循环1000次
- g. 最后计算K的bpr,如果K的bpr小于默认anchor的bpr,则不采纳,否则替换anchor为K

标签:box,正例,based,min,free,anchor,select,RPN
From: https://www.cnblogs.com/xiaoruirui/p/16954449.html

相关文章

  • Linux的free命令与OOM的简单总结
    简介查看操作系统配置最关键的几个命令是lscpu查看CPU信息以及free查看内存信息.不过free信息有一个疑惑点他的free的值可能很小.会让搭建产生误解.这里简单说......
  • HOW-TO install ffmpeg, Mplayer, mencoder,FLVtool2 and Yamdi on Plesk Linux based
    SologinwithSSHandenterasroot.Weneedtomakesurethecorrectlibdirectoriesaresetupinldconfig.Editthe /etc/ld.so.conf fileandaddthefollowi......
  • jfreechart火速应用
    JAVA中的图表方面,Jfreechart是十分不错的老大了,网上有个具体的英文手册类库下载可以参考的,下面以一个投票的例子来个火速应用,简单介绍一下首先,可以将投票结果以servlet的形......
  • Freemarker列表判断不走else
    Freemarker列表判断​​1.正常操作​​1.正常操作<#iflist??&&(list?size>0)><#else></#if>但是到我这里,死活就是不进​​<#else>​​然后试了下分成两次判......
  • freeimage数据转opencv数据
    freeimage存储格式为FIBITMAP;opencv存储格式为cv::Mat;freeimage善于读取和保存各种格式的图片;opencv具备各种图像处理算法;真实项目中经常会将两者结合,发挥各自最大优势......
  • word 97+java+freemarker导出word
    java中,导出word,一般是可以先用word做好模版,然后另存为mht网页文件,然后利用freemaker中做标记,再用java程序填充,但要注意,保存为网页文件后,要改下编......
  • Springboot+freemaker+eureka+fegin实现多文件上传,完整demo
    可能一般用fegin实现文件上传的不多,但这也算是一个文件上传方式吧,如果用到了,可以考虑借鉴一下,直接上代码好了eurekapom.xml<?xmlversion="1.0"encoding="UTF-8"?><......
  • memcpy与free的时机
    这里的pickle_value结点就是解析的每个json数据的结点,定义如下。注意共用体中的第二个结构体中有一个字符串指针,如果当前结点的type是PICKLE_STRING类型也就是字符串类型......
  • EAV Antivirus Suite Free Edition/EAV防病毒软件套装免费版
    EAVAntivirusSuiteFreeEdition/EAV防病毒软件套装免费版许可协议:免费(Free)系统要求:Windows95/98/Me/NT/2000/XP/Vista限制:无(Nolimitations)当前版本:5.61界面截图:​......
  • 基于ResNet的花卉图片分类 —— tensorflow版(flowers image classification based on
    最近看了《TensorFlow深度学习实战(微课视频版)》——清华大学出版社一书中的11章节《基于ResNet的花卉图片分类》,觉得写的不错,是个关于ResNet的好例子,所以整理下,分享给......