目标检测中的anchor-based 和anchor free

  1. anchor-free 和anchor-based 区别

深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。

anchor-free是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。预测物体中心时,将中心预测融入到类别预测的 target 里面,也可以预测一个 soft 的 centerness score。对于四条边框的预测,则比较一致,都是预测该像素点到
ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。

  1. anchor-free类算法归纳

A.基于多关键点联合表达的方法

a.CornerNet/CornerNet-lite:左上角点+右下角点

b.ExtremeNet:上下左右4个极值点+中心点

c.CenterNet:Keypoint Triplets for Object Detection:左上角点+右下角点+中心点

d.RepPoints:9个学习到的自适应跳动的采样点

e.FoveaBox:中心点+左上角点+右下角点

f.PLN:4个角点+中心点

B.基于单中心点预测的方法

a.CenterNet:Objects as Points:中心点+宽度+高度

b.CSP:中心点+高度(作者预设了目标宽高比固定,根据高度计算出宽度)

c.FCOS:中心点+到框的2个距离

  1. 为什么 anchor-free 能卷土重来

anchor-free 的方法能够在精度上媲美 anchor-based 的方法,最大的功劳我觉得应该归于 FPN,其次归于 Focal Loss。(内心OS:RetinaNet
赛高)。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss 则是对中心区域的预测有很大帮助。当然把方法调 work 并不是这么容易的事情,相信有些细节会有很大影响,例如对重叠区域的处理,对回归范围的限制,如何将 target assign 给不同的 FPN level,head 是否 share 参数等等。

  1. anchor-free 和single anchor

上面提到的 anchor-free 和每个位置有一个正方形 anchor 在形式上可以是等价的,也就是利用 FCN 的结构对 feature map 的每个位置预测一个框(包括位置和类别)。但 anchor-free 仍然是有意义的,我们也可以称之为
anchor-prior-free。另外这两者虽然形式上等价,但是实际操作中还是有区别的。在
anchor-based 的方法中,虽然每个位置可能只有一个 anchor,但预测的对象是基于这个 anchor 来匹配的,而在 anchor-free 的方法中,通常是基于这个点来匹配的。

  1. anchor-free 的局限性

虽然上面几种方法的精度都能够与 RetinaNet 相媲美,但也没有明显优势(或许速度上有),离两阶段和级联方法相差仍然较远。和 anchor-based 的单阶段检测器一样,instance-level 的 feature representation 是不如两阶段检测器的,在 head 上面的花样也会比较少一些。顺便吐槽一下,上面的少数 paper 为了达到更好看的结果,在实验上隐藏了一些细节或者有一些不公平的比较。

  1. 目标检测算法一般可分为anchor-based、anchor-free、两者融合类,区别就在于有没有利用anchor提取候选目标框。

A. anchor-based类算法代表是fasterRCNN、SSD、YoloV2/V3等。

fasterRCNN-设置了3种尺度3种宽高ratio一共9个anchor提取候选框。

B. anchor-free类算法代表是CornerNet、ExtremeNet、CenterNet、FCOS等。

CornerNet-直接预测每个点是左上、右下角点的概率,通过左上右下角点配对提取目标框

C.融合anchor-based和anchor-free分支的方法:FSAF、SFace、GA-RPN等

FSAF-既有根据先验设定的anchor-based分支,也有anchor-free分支增强对异常ratio目标的检测能力

  1. anchor(也被称为anchor box)是在训练之前,在训练集上利用k-means等方法聚类出来的一组矩形框,代表数据集中目标主要分布的长宽尺度。在推理时生成的特征图上由这些anchor滑动提取n个候选矩形框再做进一步的分类和回归(详细叙述请参考提出anchor思想的fasterRCNN一文)。也就是传统目标检测算法中,在图像金字塔上使用的那个m*n的滑窗。只不过传统方法中特征图是不同尺度的,滑窗一般是固定大小的;而类似于fasterRCNN算法中特征图是固定的,anchor是多尺度的。

三种典型的目标检测框架流程图

  1. Yolo算法一共有三个版本,YoloV1可以算作anchor-free类;YoloV2开始引入anchor,YoloV3也使用了anchor。

目标检测中的anchor-based 和anchor free相关推荐

  1. 【学习笔记】目标检测中,为什么要对anchor候选框进行坐标/尺寸归一化处理?

    ssd\src\utils.py 中的代码段 for idx, sfeat in enumerate(self.feat_size):sk1 = scales[idx] / fig_size # sc ...

  2. 目标检测中Anchor的本质分析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨东林钟声@知乎 来源丨https://zhuanlan.zhihu.com/p/84398108 ...

  3. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾

    前段时间,YOLOv4&v5大火,很多人忽视了yolov5在anchor上的一些细节变化,因此,本文从Faster RCNN着手,逐步分析SSD.YOLOv4&v5的anchor机制. ...

  4. 目标检测中的Anchor

    前言: 在计算机视觉四大基本任务(检测.分类.定位.分割)中,图像的目标检测受到的了研究者们越来越多的关注.今天我们就来聊一聊在目标检测中一项重要的机制--Anchor.Anchor机制在凯明大神提出 ...

  5. CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor

    点击上方"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 本文是收录于CVPR2020的工作,其实文章在去年就挂在了网上,整体思路还算不错.具体来 ...

  6. 目标检测中Anchor如何映射到原图

    Anchor在目标检测中是比较常见的,引入Anchor主要是为了让检测更精准,当然现在有很多Anchor Free的方法也达到了较好的结果,但是最近项目中用的是基于Anchor的方法,但是置于Anch ...

  7. 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本

    本文转自|AI公园 导读 又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能.GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布 ...

  8. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

    如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...

  9. 目标检测中的anchor-base与anchor-free

    前言 本文参考目标检测阵营 | Anchor-Base vs Anchor-Free 如何评价zhangshifeng最新的讨论anchor based/ free的论文? - 知乎 基础知识 | 目 ...

最新文章

  1. verilog 浮点转定点_定点数优化:性能成倍提升
  2. [ActionScript 3.0] AS3.0 下雨及涟漪效果
  3. Java面试题中高级,javaif循环语句
  4. idea抽取重复方法快捷键_使用 IDEA 几分钟就重构了同事800 行quot;又臭又长quot; 的类!真香!...
  5. 关于CALayer导致的crash问题
  6. 一次tomcat数据乱码事件
  7. 在Vue文件中引用模块的相对路径“@“符号表示什么意思?
  8. 计算机应用技术Word文档题目,计算机应用技术复习题(word版)
  9. python爬虫+数据分析之NBA球员LBJ13个赛季的数据分析
  10. dedecms教程:龙书浩最新DedeCmsV5.7建站仿站VIP视频教程免费下载
  11. 时间序列(ARIMA)模型
  12. 【入门学习四】基于 FPGA 使用 Verilog 实现串口回传通信代码及原理讲解
  13. cortex M7 MPU 总结
  14. 一分钟读懂广告投放各计费CPM、CPC等(公式推导干货)
  15. C语言:离散数学8.1.5 笛卡尔积
  16. 投资公司属于什么行业?投资行业赚钱吗?
  17. 什么是边缘服务器?边缘计算的未来如何?
  18. 【文件操作专题】java 实现多张图片合成PDF
  19. (抗震支架安装方法)管廊内抗震支架的安装方法与应用范围
  20. 计算机网络:时延、时延带宽积、RTL、利用率

热门文章

  1. 一图了解git常用开源许可证书
  2. html+spring boot简单的ajax数据传输实现
  3. 基于Golang的简单web服务程序开发——CloudGo
  4. 每个年龄段,都有每个年龄段的“好”
  5. 谷歌BERT预训练源码解析(二):模型构建
  6. The listener supports no services
  7. LeetCode简单题之字符串中的单词数
  8. 2021年大数据Spark(九):Spark On Yarn两种模式总结
  9. CentOS7 php7.0 升级到php7.3
  10. git命令合并分支代码