计算机视觉研究院出品:目标检测的细节,你到底知道多少?
点击上方蓝字关注我们
计算机视觉研究院专栏
作者:Edison_G
现在目标检测发展应该到了一个瓶颈,但是现存很多很多优质的检测框架,尤其是针对于大目标的检测,比如人、汽车和常见动物,但另一方面,小目标检测仍然是现在亟待解决的问题。 那这么多检测框,你到底对其内部知道多少?你又忽略了多少细节呢?
学习群|扫码在主页获取加入方式
关注并星标
从此不迷路
1
背景
2
经典框架回顾
DPM
说到DPM,让我想到研究生搞学术第一个接触到的算法。
DPM算法采用了改进后的HOG特征,SVM分类器和滑动窗口(Sliding Windows)检测思想,针对目标的多视角问题,采用了多组件(Component)的策略,针对目标本身的形变问题,采用了基于图结构(Pictorial Structure)的部件模型策略。此外,将样本的所属的模型类别,部件模型的位置等作为潜变量(Latent Variable),采用多示例学习(Multiple-instance Learning)来自动确定。
通过Hog特征模板来刻画每一部分,然后进行匹配。并且采用了金字塔,即在不同的分辨率上提取Hog特征。
利用提出的Deformable PartModel,在进行object detection时,detect window的得分等于part的匹配得分减去模型变化的花费。
在训练模型时,需要训练得到每一个part的Hog模板,以及衡量part位置分布cost的参数。文章中提出了LatentSVM方法,将deformable part model的学习问题转换为一个分类问题:利用SVM学习,将part的位置分布作为latent values,模型的参数转化为SVM的分割超平面。具体实现中,作者采用了迭代计算的方法,不断地更新模型。
RCNN
这个算法是真的机智!在大家还摸不着思绪的时候,就想出这种经典框架。在原图上,通过各种穷举法获取各种候选的边界框,然后通过深度学习CNN获取的高级语义特征,这些特征分别送入多个SVM分类,回归修正boundingbox,最后使用NMS和边缘检测再次修正,整个过程如上图所示。它的缺点也很明显,候选区域重复提取特征导致速度很慢。
Faster-RCNN
后来的Faster RCNN,它的核心思想是将候选区域生成也交给网络来做。候选区域生成网络本质上也是一个Fast RCNN,它的输入是预先设置好的图像中的一个区域,输出是该区域属于前景还是背景和修正后的区域。这样的方法只指定了少数几个可能为目标的区域,无论是比起滑窗,还是比起过分割,都快上了很多。
Yolo
3
问题分析
简单回顾下检测框架,可以发现基本都是考虑效率和精度,但是从哪些方面考虑呢?有些人是从头开始处理,有些人从中间产物各种处理,还有一批人从尾处理。以至于现在出现了各种各样眼花缭乱的检测框架,今天我来说最近比较火的几个框架,基于他们分析下检测过程到底需要考虑哪些因素?
EFPN
其中,EFPN的前4层是vanilla FPN层。FTT模块集成了P3中的语义内容和P2的区域纹理。然后,类似FPN的自顶向下路径将FTT模块输出向下传递,形成最终的扩展金字塔层P'2。扩展的特征金字塔(P'2,P2,P3,P4,P5)被馈送到后续的检测器,以进行进一步的目标定位和分类。顶部4层金字塔自顶向下构成,用于中型和大型目标检测。EFPN的底部扩展在图中包含一个FTT模块,一个自上而下的路径和一个紫色金字塔层,旨在捕获小目标的区域细节。
更具体地讲,在扩展中,SR模块FTT将图中绿色-黄色层表示的EFPN第三层-第四层金字塔混合,产生具有所选区域信息的中间特征P'3,图中用蓝色菱形表示。然后,自上而下的路径将P'3与定制的高分辨率CNN特征图C'2合并,生成最终的扩展金字塔层P'2。
小目标检测的难度在于目标很小,其特征比较浅(如亮度/边缘信息等),语义信息较少;另外小目标和背景之间尺寸不均衡,用较小的感受野去关注其特征的话,很难提取全局语义信息;用较大感受野去关注背景信息的话,那么小目标的特征会丢失信息。以下一些思路是现在提升的技巧:
数据增强 特征融合 利用上下文信息,或者目标之间建立联系 GAN 提升图像分辨率 ROI pooling被ROI align替换 多尺度空间融合 锚点设计 匹配策略,不用IoU
YOLO Nano
比Tiny YOLOv3小8倍,性能提升11个点的Yolo Nano。通过设计用于处理目标检测的深卷积神经网络,在这一领域取得了长足的进展和成功。尽管取得了这些成功,但在边缘和移动场景中广泛部署此类对象检测网络面临的最大挑战之一是高计算和内存需求。因此,针对边缘和移动应用的高效深层神经网络体系结构的设计越来越受到人们的关注。
我们将介绍一种高度紧密的深度卷积神经网路YOLO Nano,来完成目标检测的任务。利用人机协同设计策略创建YOLO Nano,其中基于YOLO系列单镜头目标检测网络架构的设计原则的原则性网络设计原型,与machine driven设计探索相结合,创建一个具有高度定制模块级宏体系结构和为嵌入式目标检测任务定制的微体系结构设计的紧凑网络。所提出的YOLO Nano只有4MB的模型大小!
虽然前面介绍的网络展示了最先进的目标检测性能,但由于计算和内存限制,它们在边缘和移动设备上部署是非常具有挑战性的,甚至是不可能的。事实上,在嵌入式处理器上运行时,即使是更快的变体,在低的单位数帧速率下也有推断速度。这极大地限制了此类网络在无人机、视频监控、需要本地嵌入式处理的自动驾驶等广泛应用中的广泛应用。
YOLO Nano的第一个设计阶段是一个原则性的网络设计原型阶段,在这个阶段中,根据人类驱动的设计原则创建一个初始的网络设计原型,以指导机器驱动的设计探索阶段。
更具体地说,构建了一个初始的网络设计原型,该原型基于YOLO系列单点架构的设计原则。YOLO网络体系结构家族的一个突出特点是,与基于区域建议的网络不同,基于区域候选的网络依赖于构建区域候选网络来生成场景中目标所在位置的建议,然后对生成的建议进行分类,相反,它们利用单一的网络架构来处理输入图像并生成输出结果。因此,针对单个图像的所有目标检测预测都是在单个前向过程中进行的,而对于基于区域候选的网络,需要执行数百到数千个过程才能得到最终结果。这使得YOLO系列网络架构的运行速度大大加快,因此更适合于嵌入式对象检测。
现在出现的网络都是走轻量级路线,为了更好的部署,这也是一个趋势,因为不能总是停留在理论的假想中。
今天暂时说到这里,下一期我们再来说说针对现在的问题,我们应该怎么去做,才能提升精度和效率,加速我们研究的进度。下期更加精彩,不要错过!
转载请联系本公众号获得授权
计算机视觉研究院学习群等你加入!
扫码关注
计算机视觉研究院
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
往期推荐
🔗