目标检测中的多尺度问题

1 SSD
最后一层由多个尺度的特征图一起组成的目标检测中的多尺度问题_第1张图片
然而他最后一层的多尺度是有限的,对于极小的目标识别,SSD就无能为力了。
2 FPN
特征金字塔网络,不是一味的下采样去提取语义信息来识别物体,而是从顶层的每一层都进行上采样来获取准确的像素位置信息(类似残差网络的挑层连接)
目标检测中的多尺度问题_第2张图片
因为卷积操作可以高效的提取语义信息,但是存在像素错位的问题,这种上采样还原特征图的方式很好的缓解了像素不准的问题。但是这样带来了计算量的增多。
目标检测中的多尺度问题_第3张图片
3 SNIPER
在每个尺度下都有一个重点关注区域,框中区域的目标都在最佳尺度。
还加入了重点排除区域,在许多背景中,许多目标是无需识别的。
目标检测中的多尺度问题_第4张图片
scale variation带来的问题新的解决方法
之前的刚发主要是两种
一种是将图像进行不同尺度的缩放,然后送给detecter进行检测,引发了snip这些操作
另外一种就是feature pyramid,直接在feature层面上来近似image pyramid,在不同的下采样层上进行检测不同大小的物体,再在后续TDM和FPN加入新的top-down分支补充底层语义信息的不足
实际上,这种近似虽然有效,但是性能和image pyramid有较大的差距
对于一个检测器而言,backbone有三个因素影响性能
1,network depth
2、downsample rate
3、receptive field
网络越深,结果越好,下采样次数越多对于小物体就越有负面的影响,研究发现:不同尺度的检测性能与dilation rate正相关。
我们的TridentNet在原始的backbone上做了三点变化:第一点是构造了不同receptive field的parallel multi-branch,第二点是对于trident block中每一个branch的weight是share的。第三点是对于每个branch,训练和测试都只负责一定尺度范围内的样本,也就是所谓的scale-aware。这三点在任何一个深度学习框架中都是非常容易实现的。

参考文献
1 TridentNet:处理目标检测中尺度变化新思路 | 极市开发者社区 http://bbs.cvmart.net/articles/231/tridentnet-chu-li-mu-biao-jian-ce-zhong-chi-du-bian-hua-xin-si-lu?from=timeline
2 https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247486578&idx=1&sn=7086aaf9c8c826b8fda36361d94f7e5b&chksm=ec1fe18bdb68689dc8e50f1017bb36ef6d2a2bce6e985714bf372303740007c4babd1916f10a&mpshare=1&scene=1&srcid=0108F29fh0E5DlDWgLiSb4QD#rd

机器视觉 目标检测补习贴之SSD实时检测, Multibox Single Shot Detector
Feature Pyramid Networks for Object Detection
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
SNIPER: Efficient Multi-Scale Training
https://github.com/mahyarnajibi/SNIPER

你可能感兴趣的:(机器学习,目标检测)