论文地址:http://papers.nips.cc/paper/5207-deep-neural-networks-for-object-detection.pdf
1.简述
文章发表于2013年,在当时cnn对目标边界框的定位表现还不是很好,当时对目标检测的主流算法之一是the deformable part-based model,这种方法由在star model里一系列分别的训练部分组成,它由两层模型组成,第一层为划分组件,第二部分为星形模型。这种算法的弱点为模型组件是基于人工设计的hog(histogram of Gradients ),而且组件的结构基于运动学动机。这种方法称为组件模型,用于检测的组件模型是基于像primitives , focus on shape , use Gabor filters ,larger HOG filters 这种分割方式,这些方法存在训练比较困难,需要对所学习的程序进行特殊设计以及Inference time需要结合Bottom-up 和 Top-down过程。
作者在本文提出了用DNN来做目标检测(目标检测 = 目标识别 +目标定位),把目标检测当做回归的问题,即回归目标窗口Bounding Box的位置。主要解决的问题是用有限的计算资源,在一张图片上寻找大量的多尺度的潜在目标实例。
2.算法思想
本文给出一个能够在给定图像上预测多目标的bounding box的方式,通过基于DNN的回归输出目标bounding box的二进制掩码,过程如图一所示。
为了进一步精细定位目标,还需要调整bounding box,本文也在整张图片上生成多个mask,以及在切割的大子图上生成mask,然后从这些mask进行目标框提取。
说白了,就是对特征图二进制掩码进行回归,有目标的框标为1,目标框外标为0。一次DNN回归,可以生成一张图片上多个目标的掩码。为了提升定位精度,还在一系列图像子窗口上进行DNN回归。
3.模型设计
特征提取的模型使用ImageNet, 模型共7层,前5层为卷积层,后两层是全连接层。与分类模型不同的是该模型的最后一层是Regression Layer,而非Softmax Layer。
回归层生成一个目标的二进制掩码框,x是图像,是网络参数,N是图像像素总数,模型的输出维度固定,因此模型所预测的掩码大小为 N=d×d,若掩码像素在目标框内,该像素设为1,否则设为0.
模型损失函数为:最小化每张图片x 回归输出的Binary Mask与Ground Truth mask 的L2范式
D为训练集图片和ground truth mask,参数是为了调整非目标框内元素权重值,试想,大多数待检测目标跟原图相比都比较小,网络很容易将他们忽略掉,即为相应掩码位置像素分配0。而且小时,函数对m为0的值惩罚力度比较小。
本文中作者模型输入为255*255,输出d*d其中d=24.
4.通过DNN产生的masks对目标进行更精确定位
首先作者罗列了三个问题:
第一,模型输出的单个Object Mask无法有效地对相互靠近的歧义Objects进行对象检测;
第二,由于模型输出大小的限制,所生成的Obinary Mask的尺寸相对于原始图片显得及其小,故每个mask像素对应原图图像块区域很大,故无法精确地对对象进行定位;
第三,受输入是整张图片的影响,尺寸比较小的Objects对网络模型提取特征的影响很小,从而使得识别变得困难。
1.Multiple Masks for Robust Localization
为了图片中相互接触的目标,我们生成不是一个而是几个Obinary Masks,每个Obinary Mask表示完整目标或其一部分。由于我们的最终目标是产生一个边界框,我们使用一个网络(模型)来预测Object Box Mask和四个额外的网络来预测四个半框,即Bottom, Top, Left 和 Right 半框。对于,, 如果相同类型的两个对象彼此相邻放置,则所产生的5个Binary Masks中至少有2个Binary Masks无法合并成一个大的mask,这将允许消除它们的歧义。
训练过程中,我们在原图中标注的ground truth mask,需要下采样为m(i,j),尺寸为网络输出的大小,才能利用损失函数进行回归。
其中m(i,j)公式为:
bb(h)为几个不同尺度的ground truth object box, 定义 T(i,j) 为模型输出坐标 (i,j) 对应原始图片中小方格的大小,则这个小方框左上角的坐标为,原始图片上小方格大小为,d 是网络输出的binary mask大小,d1,d2 是输入图像的高和宽。
2.Object Localization from DNN Output
这一部分是关于产生一系列预测框以及这些框如何选取的算法。
本文最后目标是估计Bounding Boxes bb=(i,j,k,l) 的参数,即在模型输出Mask坐标系下标定出Bounding Boxes bb 的左上角坐标 (i,j) 以及右下角坐标 (k,l)。
作者使用表示每个Bounding Box bb 与Masks具有一致性的分数 S,并利用具有最高分数的 S 来推断Boxes.
其中 (i,j) 是模型输出的Binary Masks的索引,m=DNN(x)是模型输出的Binary Masks。作者将 S(bb,m) 扩展到所有的5中Mask类型,最后得到的分数 S(bb) 如下:
其中 halves={full,bottom,top,left,right},h 是 halves 中的一个, 被定义为与 h 相反的一半。例如,被检测对象的Top Mask应该被模型输出的Top Mask完全覆盖,而不是完全由Bottom Mosk覆盖。对于 h=full,我们用Bounding Box bb周围的矩形区域表示,如果Full Mask延伸到Bounding Box bb之外,则其分数S(bb)将被惩罚。在上述求和公式中,如果Bounding Box bb与所有5个Binary Masks一致,则被检测对象的得分将很大。由以上的公式可以极大地搜索出可能存在的Bounding Boxes。
3.Multi-scale Refinement of DNN Localizer
两种方式:
(i)将DNN Localizer应用于若干Scales和几个大Sub-Windows;
(ii)通过在顶部推断的Bounding Boxes上应用DNN Localizer来改进检测
使用各种Scales的大窗口,我们生成几个Masks,并将它们合并为更高分辨率的Masks,每个Scale一个。 合适Scales的范围取决于图像的Resolution和Localizer的Receptive Field的大小 - 我们希望图像被以更高分辨率操作的网络输出覆盖,同时我们希望每个对象落在至少一个窗口内并且这些窗口的数量比较少。
文中使用三个Scales:完整图像和两个其他Scales,使得在给定Scale下的窗口的尺寸是先前给定Scale窗口尺寸的一半。 我们用每个Scale的窗口覆盖图像,使得这些窗口具有小的重叠 - 其面积的20%。 这些窗口在数量上相对较小并且在几个尺度上覆盖图像。 最重要的是,最小尺度的窗口允许以更高的分辨率定位。
参考:https://blog.csdn.net/qingqingdeaini/article/details/53099468?locationNum=16&fps=1
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于DNN的目标检测Deep Neural Networks for Object Detection - Python技术站