欢迎来到学术参考网
当前位置:发表论文>论文发表

物体检测最新论文

发布时间:2023-03-13 05:05

物体检测最新论文

论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation

提出时间:2014年

论文地址:

针对问题:

从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。

创新点:

RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。

参考博客: 。

论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

提出时间:2014年

论文地址:

针对问题:

该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。

创新点:

在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。

参考博客:

论文题目:Scalable Object Detection using Deep Neural Networks

提出时间:2014年

论文地址:

针对问题:

既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。

创新点:

本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。

参考博客:

论文题目:DeepBox: Learning Objectness with Convolutional Networks

提出时间:2015年ICCV

论文地址:

主要针对的问题:

本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。

创新点:

本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。

参考博客:

论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection

提出时间:2015年ICCV

论文地址:

主要针对的问题:

对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢?

创新点:

通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。

参考博客:

论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

提出时间:2014年

论文地址:

针对问题:

如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。

创新点:

作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。

参考博客 :

论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model

提出时间:2015年

论文地址:

针对问题:

既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。

创新点:

作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。

参考博客 :

论文题目:Fast-RCNN

提出时间:2015年

论文地址:

针对问题:

RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢?

创新点:

作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。

参考博客 :

论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers

提出时间:2015年

论文地址:

主要针对的问题:

本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。

创新点:

作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。

论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

提出时间:2015年NIPS

论文地址:

主要针对的问题:

由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢?

创新点:

将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。

参考博客 :

Graph R-CNN for Scene Graph Generation论文解读

(该分享持续更新中...)
这篇论文主要有三个贡献点:

目前,物体检测、语义分割等技术都是集中在如何在图片上检测出物体,但是忽略了物体与物体之间的关系。一项最近的工作提出了用图(场景图)来代表一个场景。场景图是图像的可解释的结构化表示,可以支持更高级别的视觉智能任务,如captioning。
将每一对节点(对象)视为潜在的边(关系)的自然方法本质上是对全连通图的推理,这种方法在建模上下文关系时通常是有效的,但对对象数量的缩放效果很差(二次),很快就变得不切实际。嘴朴素的修正方法是采用随机采样,虽然它是efficient,但不是effective,因为对象之间的相互作用的分布远远不是随机的。
作者的解决办法:

图1.给一张图片,模型从图片中抽取出objects(a), 所有节点考虑可能存在的边(b),通过一个医学系的方法‘relatedness’裁去不可能发关系,从而产生更稀疏的候选图结构(c)。最后,利用aGCN去集成全局信息并且更新物体节点和关系的标签(d)

在这项工作中,我们提出了一个新的框架,Graph R-CNN,它通过两种机制有效地利用对象关系规则来智能地稀疏化和推理候选场景图。我们的模型可以分解为三个逻辑阶段:1)对象节点提取,2)关系边缘剪枝,3)图上下文集成,如图1所示。

在对象节点提取阶段,我们使用了一个标准的对象检测的pipeline(faster rcnn)。这就产生了一组localized object regions,如图1b所示。我们将在剩下的pipeline中引入两个重要的新特性,以合并上面讨论的对象关系中的真实世界的规则性。首先,我们介绍了一个关系建议网络(RePN),该网络能够有效地计算对象对之间的关联分数,这些分数被用来智能地修剪不太可能的场景图连接(与之前工作中的随机修剪不同),剪枝后的稀疏图如图1c所示。其次,给出了稀疏连接的候选场景图,我们应用了一个注意图卷积网络(aGCN)来在整个图中传播higher-order上下文——更新每个对象及其基于其邻居的关系表示。与现有的工作相比,我们预测每个节点的边attention,使我们的方法能够学习调节不可靠或不太可能的边缘之间的信息流。我们在图1d中显示了细化的图形标签和边缘attention(与边缘宽度成比例)。

现有对于场景图生成的指标是基于召回⟨主题、谓词、对象⟩三元组或给定ground truth的object localizations的对象和谓词。为了揭示这些度量标准存在的问题,考虑一个方法,该方法将图1a中的boy误认为是man,但在其他方面识别出他是1)站在消防栓后面,2)靠近一辆汽车,3)穿着一件毛衣。在基于三元组的度量标准下,这个小错误(boy vs man)将被严重惩罚,尽管大多数boy的关系被正确识别。尽管提供ground-truth区域的度量方法通过严格关注关系预测来回避这个问题,但是它不能准确地反映整个场景图生成系统的测试时性能。
为了解决这种不匹配,我们引入了一种新的评估度量(SGGen+),它更全面地评估场景图生成的性能,包括对象、属性(如果有的话)和关系。我们提出了度量SGGen +计算总的recall对于独立实体(对象和谓词),pair 实体⟨对象,属性⟩(如果有的话),和三元组实体⟨主题、谓词、对象⟩。我们在这个新的度量下报告现有方法的结果,发现我们的方法也显著地优于最先进的方法。更重要的是,这个新的度量为生成的场景图和真实场景图之间的相似性提供了一个更鲁棒、更全面的度量。

具体来说,本工作通过引入一种新的模型(graph R-CNN)来解决场景图生成问题,该模型可以利用对象关系的规律性,并提出了一种更全面的场景图生成评价指标(SGGen+)。我们将我们的模型与现有的标准度量方法进行基准测试,而这个新度量方法的性能优于现有方法。

利用上下文来提高场景理解的想法在计算机视觉中有着悠久的历史[16,27,28,30]。最近,Johnson等人受到图形界研究的表示方法的启发,提出了从图像中提取场景图的问题,这将对象检测的任务[6,7,22,31,32]概括为也检测对象的关系和属性。

已经提出了许多方法来检测对象及其关系。尽管这些工作中的大多数指出,对场景图中二次关系的推理是棘手的,但每个都采用了启发式方法,如随机抽样来解决这个问题。我们的工作是第一个引入一个可训练的关系建议网络(RePN),它学会了在不牺牲efficacy的情况下从图中删除不可能的关系边缘。RePN提供了高质量的候选关系,我们发现它提高了场景图生成的整体性能。
大多数场景图生成方法还包括上下文传播和对候选场景图进行推理的机制,以细化最终的标记。在[40]中,Xu等人将问题分解为两个子图,一个用于对象,另一个用于关系,并执行消息传递。类似地,在[17]中,作者提出了两种消息传递策略(并行顺序),用于在对象和关系之间传播信息。Dai等人将场景图生成过程建模为条件随机场(CRF)的推理。Newell等人提出直接从图像像素中生成场景图,而不需要使用基于关联图嵌入的对象检测器。在我们的工作中,我们开发了一种新的注意图卷积网络(aGCN)来更新节点和关系表示,通过在候选场景图的节点之间传播上下文来操作视觉和语义特征。虽然在功能上类似于上述基于消息传递的方法,但aGCN是高效的,可以学习将注意力放在可靠的边缘,并减弱不太可能的影响。
以往的许多方法都注意到在场景图生成过程中具有很强的规律性,从而激发了我们的方法。在[23]中,Lu等人整合了语言中的语义先验,以改进对对象之间有意义关系的检测。同样,Li等人[18]证明了region caption也可以为场景图生成提供有用的上下文。与我们的动机最相关的是,Zeller等人将motifs的概念(即经常出现的图结构)形式化。并在VG数据集[14]中检测它们的出现的概率。作者还提出了一个令人惊讶的强基线,它直接使用频率先验来明确地综合图结构中的规律来预测关系。

我们的关系建议网络(Relationship Proposal Network, RePN)受到了RPN的启发,与用于对象检测的faster R-CNN[32]的区域建议网络(region Proposal Network, RPN)紧密相关。我们的RePN在本质上也类似于最近提出的关系建议网络(Rel-PN)[45]。这些方法之间有许多细微的差别。Rel-PN模型独立地预测主题、对象和谓词的建议,然后重新对所有有效的三元组进行评分,而我们的RePN根据对象生成关系,允许它学习对象对关系的偏差。此外,他们的方法是类无关的,并没有用于场景图生成。

GCNs最初是在[13]的半监督学习环境中提出的。GCNs将图数据上的复杂计算分解为一系列局部化操作(通常只涉及相邻节点),用于每个节点的每个时间步。在计算之前,结构和边缘强度通常是固定的。为了完整起见,我们注意到即将出版的出版物[36]同时独立地开发了一个类似的GCN注意机制(如aGCN),并在其他(非计算机视觉)上下文中显示了它的有效性。

在这项工作中,我们将场景图建模为包含图像区域、关系及其标签的图。 代表image, 代表nodes集合(一个node对应一个localized object region), 代表物体间的关系, 分别代表object和relationship的labels。因此,我们的目标是为 建模,在我们的工作中,我们把场景图的生成分解为三部分:

将图的构造(节点和边)与图的标注分离开来。这个因式分解背后的直觉很简单。首先,object region proposal 通常使用现成的对象检测系统(如faster rcnn[32])进行建模,以生成候选区域。值得注意的是,现有的方法通常将第二个关系建议项 建模为顶点 之间潜在边的均匀随机抽样。相反,我们提出了一个关系建议网络(RePN)来直接建模 ——使我们的方法成为第一个允许学习整个生成过程端到端。最后,图标记过程 通常被视为迭代求精过程。模型的pipeline如图2所示:

每一个object proposal 都与一个空间区域 , 一个合并的特征向量 , 一个初始化估计标签分布 over 相关联。我们将对于所有n个proposals的向量集合表示为矩阵 以及

3.2 Relation Proposal Network
给定上一步提出的n个对象节点,它们之间可能有 个连接;然而,正如前面所讨论的,由于真实对象交互中的规则性,大多数对象对不太可能有关系。为了对这些规律进行建模,我们引入了一个关系建议网络(RePN),该网络能够有效地估计对象对之间的关联性。通过对不太可能关系的边缘进行剪枝,可以有效地稀疏化候选场景图,保留可能的边缘,抑制不太可能的边缘带来的噪声。
在这篇论文中,我们利用估计的类别分布( )来推断关联性——本质上是学习软类别关系的先验。这种选择与我们的直觉一致,即与其他类相比,某些类相对不太可能交互。具体,给定初始对象分类分布 ,我们给所有的 有向对 评分, 计算 时的相关性,其中 是一个习得的相关性对函数。 的一个直接实现可以将连接[p^o_i, p^o_j]作为输入传递给一个多层感知器,该感知器输出分数。然而,考虑到对象对的平方数,这种方法将消耗大量的内存和计算。为了避免这种情况,我们考虑一个非对称的内核函数:

分别代表在关系中主语和宾语对映射函数。这个分解使得,仅使用 的两个投影过程,然后执行一次矩阵乘法就能获得分数矩阵 。对于 和 ,我们使用两个多层感知器(mlp)与相同的架构(但不同的参数)。我们还对分数矩阵S进行了sigmoid操作,使得每一个元素都为0~1之间。
在获得分数矩阵后,我们将其降序排序,然后选择前K对。然后,我们使用非最大抑制(NMS)来过滤出与其他对象有明显重叠的对象对。每个关系都有一对边界框,组合顺序很重要。我们计算两个对象对 and 之间对重叠:

计算两个box交集的区域, 计算并集区域。剩余的m个对象对被认为是具有意义关系E的候选对象。利用E,我们得到了一个图 ,它比原来的全连通图稀疏得多。随着图的边的提出,我们还通过从每个对象对的联合框中提取特征,得到所有m个关系的可视化表示 。

为了整合由图结构提供的上下文信息,我们提出了一个注意图卷积网络(aGCN)。在描述我们提出的aGCN之前,让我们简要回顾一下“普通的”GCN,其中每个节点 都有一个表示 如在[13]中提出的那样。简单,目标节点图中,相邻节点的表示 首先通过学习改变线性变换矩阵 .然后,这些转换表示与预先确定的权值α聚集,紧随其后的是一个非线性函数σ(ReLU [25])。这种分层传播可以写成:

或者我们可以把节点整合进一个矩阵中,就可以得到:

与i不相邻的节点设定为0,并且设定αii为1。在传统的GCN中,图中的连接是已知并且系数向量αi是基于对称规范化邻接矩阵的特性预设的。
在这篇论文中,我们将传统的GCN拓展了attention版本,通过调节α。为了能够从节点features预测attention,我们通过一个拼接的节点feature学习了一个两层的MLP,并且对得到的分数进行一次softmax。对于节点i的attention是:

and 是习得参数,[·, ·] 是拼接操作。通过定义,我们设定 and 。由于注意力机制是节点特征的函数,每次迭代都会导致注意力的改变,从而影响后续的迭代。

回想一下,在前面的小节中,我们有一组N个对象区域和m个关系。在此基础上,我们构造了一个图G,其中节点对应于对象和关系建议。我们在关系节点及其关联对象之间插入边。我们还在所有对象节点之间直接添加了跳转连接边。这些连接允许信息直接在对象节点之间流动。最近的研究表明,对目标相关性进行推理可以提高检测的性能。我们将aGCN应用于此图,基于全局上下文更新对象和关系表示。
注意到我们的图捕获到不同类型到连接( ↔ relationship, relationship ↔ subject and object ↔ object)。此外,每个连接之间的信息流可能是不对称的(the 信息量 of subject on relationship might be quite different from relationship to subject)。我们学习了每种类型和顺序的不同转换——将节点类型a到节点类型b的线性转换表示为 ,其中s=subject、o=objects和r=relationships。Object node的representation的更新公式如下(object features为 , relationship features为 ):

with and similarly for relationship nodes as:

一个开放的选择是如何初始化object and relationship node represenstions ,它可能被设置为任何intermediate feature representations,甚至是对应类标签的pre-softmax输出。在实践中,我们同时运行可视化的和语义化的aGCN计算——一个具有可视化的特性,另一个使用pre-softmax输出。通过这种方式,我们既可以推断出较低层的视觉细节,也可以推断出较高级别的语义共现(即汽车轮子)。进一步地,我们把语义aGCN的注意力放在视觉aGCN上——基于视觉线索有效地调节语义信息流。这也加强了两个图中表示的真实对象和关系以相同的方式与其他对象交互。
3.4 Loss Function
在Graph R-CNN,我们把场景图生成过程分解成三个子过程: 。在训练阶段,这些子过程都是使用监督训练。对于 ,我们用RPN相同的损失(binary cross entropy loss on proposals,regression loss for anchors)。对于 ,我们使用另一个binary cross entropy loss on the relation proposals。对于最后的场景图生成 ,两个muti-class cross entropy losses是被用于object classification and predicate classification。

场景图生成是一个结构化的图上预测问题,如何正确、有效地对预测进行评价是当前场景图生成研究中尚未解决的问题。我们注意到图论[5]对基于最小图编辑距离的图相似度进行了深入的研究;然而,计算准确的解决方案是np完全和ap近似的APX-hard[20]。
以前的工作通过在[40]中引入一个简单的基于三元组回归的度量来评估场景图的生成,从而绕过了这些问题。根据这个指标,我们将称之为SGGen, the ground truth of 场景图表示为一组<object, relationship, subject>通过精确匹配计算。也就是说,在生成的场景图中,如果三个元素都被正确地标记,并且object和subject nodes都被正确地定位(例如,边界框IoU > 0.5)。虽然计算简单,但这种度量导致了一些不直观的相似度概念,如图3所示。
SGGen+的计算公式:

是一个计数操作, 是正确被定位和识别的物体节点数; 是正确谓词的数目。由于谓词的定位取决于subject和object的正确定位,所以只有在主语和宾语都正确定位并且正确识别谓词的情况下,我们才会将其算作一个。 是针对三元组的,和SGGen一样。N是ground真值图中的条目数(对象、谓词和关系的总数)。

小目标检测相关技巧总结

小目标问题在物体检测和语义分割等视觉任务中一直是存在的一个难点,小目标的检测精度通常只有大目标的一半。

CVPR2019论文: Augmentation for small object detection 提到了一些应对小目标检测的方法,笔者结合这篇论文以及查阅其它资料,对小目标检测相关技巧在本文进行了部分总结。

小目标的定义: 在MS COCO数据集中,面积小于 32*32 的物体被认为是小物体。

小目标难以检测的原因: 分辨率低,图像模糊,携带的信息少。由此所导致特征表达能力弱,也就是在提取特征的过程中,能提取到的特征非常少,这不利于我们对小目标的检测。

1、由于小目标面积太小,可以放大图片后再做检测,也就是在尺度上做文章,如FPN(Feature Pyramid Networks for Object Detection),SNIP(An Analysis of Scale Invariance in Object Detection – SNIP)。

Feature-Fused SSD: Fast Detection for Small Objects, Detecting Small Objects Using a Channel-Aware Deconvolutional Network 也是在多尺度上做文章的论文。

2、在Anchor上做文章(Faster Rcnn,SSD, FPN都有各自的anchor设计),anchor在设置方面需要考虑三个因素:

anchor的密度: 由检测所用feature map的stride决定,这个值与前景阈值密切相关。

anchor的范围: RetinaNet中是anchor范围是32~512,这里应根据任务检测目标的范围确定,按需调整anchor范围,或目标变化范围太大如MS COCO,这时候应采用多尺度测试。

anchor的形状数量: RetinaNet每个位置预测三尺度三比例共9个形状的anchor,这样可以增加anchor的密度,但stride决定这些形状都是同样的滑窗步进,需考虑步进会不会太大,如RetinaNet框架前景阈值是0.5时,一般anchor大小是stride的4倍左右。

该部分anchor内容参考于:

3、在ROI Pooling上做文章,文章SINet: A Scale-Insensitive Convolutional Neural Network for Fast Vehicle Detection 认为小目标在pooling之后会导致物体结构失真,于是提出了新的Context-Aware RoI Pooling方法。

4、用生成对抗网络(GAN)来做小目标检测:Perceptual Generative Adversarial Networks for Small Object Detection。

1、从COCO上的统计图可以发现,小目标的个数多,占到了41.43%,但是含有小目标的图片只有51.82%,大目标所占比例为24.24%,但是含有大目标的图像却有82.28%。这说明有一半的图像是不含小目标的,大部分的小目标都集中在一些少量的图片中。这就导致在训练的过程中,模型有一半的时间是学习不到小目标的特性的。

此外,对于小目标,平均能够匹配的anchor数量为1个,平均最大的IoU为0.29,这说明很多情况下,有些小目标是没有对应的anchor或者对应的anchor非常少的,即使有对应的anchor,他们的IoU也比较小,平均最大的IoU也才0.29。

如上图,左上角是一个anchor示意图,右上角是一个小目标所对应的anchor,一共有只有三个anchor能够与小目标配对,且配对的IoU也不高。左下角是一个大目标对应的anchor,可以发现有非常多的anchor能够与其匹配。匹配的anchor数量越多,则此目标被检出的概率也就越大。

实现方法: 1、Oversampling :我们通过在训练期间对这些图像进行过采样来解决包含小对象的相对较少图像的问题(多用这类图片)。在实验中,我们改变了过采样率和研究不仅对小物体检测而且对检测中大物体的过采样效果

2、Copy-Pasting Strategies:将小物体在图片中复制多分,在保证不影响其他物体的基础上,增加小物体在图片中出现的次数(把小目标扣下来贴到原图中去),提升被anchor包含的概率。

如上图右下角,本来只有一个小目标,对应的anchor数量为3个,现在将其复制三份,则在图中就出现了四个小目标,对应的anchor数量也就变成了12个,大大增加了这个小目标被检出的概率。从而让模型在训练的过程中,也能够有机会得到更多的小目标训练样本。

具体的实现方式如下图:图中网球和飞碟都是小物体,本来图中只有一个网球,一个飞碟,通过人工复制的方式,在图像中复制多份。同时要保证复制后的小物体不能够覆盖该原来存在的目标。

网上有人说可以试一下lucid data dreaming Lucid Data Dreaming for Multiple Object Tracking ,这是一种在视频跟踪/分割里面比较有效的数据增强手段,据说对于小目标物体检测也很有效。

基于无人机拍摄图片的检测目前也是个热门研究点(难点是目标小,密度大)。 相关论文: The Unmanned Aerial Vehicle Benchmark: Object Detection and Tracking(数据集) Drone-based Object Counting by Spatially Regularized Regional Proposal Network Simultaneously Detecting and Counting Dense Vehicles from Drone Images Vision Meets Drones: A Challenge(数据集)

1: 2: 3: 4: 5: 6: 7:

检测论文综述(一) : 从RCNN到Mask-RCNN

对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得。

R-CNN的意思就是Region based,主要思路就是根据一张图像,提取多个region,再将每个Region输入CNN来进行特征的提取。因此RCNN就可以分为 Region proposals , Feature extraction 两个主要部分,提取的特征就可以输入任意一个分类器来进行分类。 模型的流程图如下:

在训练的时候,首先使用的是已经训练好的CNN网络作为特征提取器,但是由于预训练是在分类数据集上,因此在应用到检测之前要做finetune。也就是说,为了将用ImageNet数据集训练的网络应用到新的任务(检测),新的数据集(region)上,作者将原来的CNN最后的1000类的fc层,更改为了 层, 代表待检测的物体的类别数。然后,对于所有的region,如果它和ground truth的重叠率大于0.5,就认为是正类。 对于分类器的训练,作者发现选择多大的IoU来区分正类和负类非常关键。并且,对于每一类,都会训练一个分类器。

框的回归非常重要,在对每一个region proposal使用分类器进行打分评价之后,作者使用一个回归器来预测一个新的框作为结果。这个回归器使用的特征是从CNN中提取的特征。回归器的训练中,输入是 region proposal 的 和ground truth的 ,目标是学习一种变换,使得region proposal通过该变换能够接近ground truth。同时,希望这种变换拥有尺度不变性,也就是说尺度变化的话,变换不会改变。 如下图所示,每一个regressor会学习一组参数,特征输入是pool 5的特征输出,拟合的目标是 。

Fast-RCNN 主要解决的问题是在RCNN中对于每一个region proposal都进行特征提取,会产生非常多的冗余计算,因此可以先对一张图像进行特征提取,再根据region proposal在相应的特征上进行划分得到对应region的特征(映射关系)。 这样便可以实现共享计算提高速度,但是与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,如下图:

RoI pooling的方法很简单,类似于空间金字塔pooling,它将proposal部分对应卷积层输出的特征(称之为RoI,因为用于做pooling的特征是 region of interest,也就是我们感兴趣的区域)划分成 块,然后对每一块求最大值,最终得到了一个 的特征图。可以看出,它只是空间金字塔pooling的一部分。 但是SPP-nets的空间金字塔也是可以求导的,那么它到底不好在哪里呢?因为当每一个RoI都可能来源于不同的图像的时候(R-CNN和SPPnets的训练策略是从一个batch的不同图像中,分别挑选一个proposal region),SPPNets的训练非常地低效,这种低效来源于在SPPnets的训练中,每个RoI的感受野都非常地大,很可能对应了原图的整个图像,因此,得到的特征也几乎对应了整张图像,所以输入的图像也就很大。 为了提高效率,Fast-RCNN首先选取 个图像,再从每个图像上选择 个RoI,这样的效率就比从每个图像提取一个RoI提高了 倍。

为了将分类和框回归结合起来,作者采用了多任务的loss,来进行联合的训练。具体来说就是将分类的loss和框回归的loss结合起来。网络的设计上非常直接,就是将RoI得到的特征接几个FC层后,分别接不同的输出层。对应于分类部分,特征会接一个softmax输出,用于分类,对于框回归部分,会接一个输出4维特征的输出层,然后分别计算loss,用于反向传播。loss的公式如下:

回归的target可以参考前面的R-CNN部分。

notes

为什么比fast还fast呢?主要原因是在这篇论文中提出了一个新的层:RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。 RPN的目的:

为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为 ,输入后会映射(用 的卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用 的卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:

在每一个滑动窗口(可以参考 ),为了考虑到尽可能多的框的情况,作者设计了anchors来作为region proposal。anchors就是对于每一个滑动窗口的中心位置,在该位置对应的原图位置的基础上,按照不同的尺度,长宽比例框出 个不同的区域。然后根据这些anchors对应的原始图像位置以及区域,和ground truth,就可以给每一个滑动窗口的每一个anchor进行标记,也就是赋予label,满足一定条件标记为正类(比如和ground truth重叠大于一个值),一定条件为负类。对于正类,就可以根据ground truth和该anchor对应的原图的区域之间的变换关系(参考前面的R-CNN的框回归),得到回归器中的目标,用于训练。也就是论文中的loss function部分:

自然地,也就要求RPN的两个并联的FC层一个输出2k个值用于表示这k个anchor对应的区域的正类,负类的概率,另一个输出4k个值,用于表示框回归的变换的预测值。

对于整个网络的训练,作者采用了一种叫做 4-step Alternating Training 的方法。具体可以参考论文。

与之前的检测任务稍有不同,mask r-cnn的任务是做instance segmentation。因此,它需要对每一个像素点进行分类。 与Faster R-CNN不同,Faster R-CNN对每一个候选框产生两个输出,一个是类别,一个是bounding box的offset。Mask R-CNN新增加了一个输出,作为物体的mask。这个mask类似于ps中的蒙版。

与Faster R-CNN类似的是,Mask R-CNN同样采用RPN来进行Region Proposal。但是在之后,对于每一个RoI,mask r-cnn还输出了一个二值化的mask。

不像类别,框回归,输出都可以是一个向量,mask必须保持一定的空间信息。因此,作者采用FCN来从每个RoI中预测一个 的mask。

由于属于像素级别的预测问题,就需要RoI能够在进行特征提取的时候保持住空间信息,至少在像素级别上能够对应起来。因此,传统的取最大值的方法就显得不合适。 RoI Pooling,经历了两个量化的过程: 第一个:从roi proposal到feature map的映射过程。 第二个:从feature map划分成7*7的bin,每个bin使用max pooling。

为此,作者使用了RoIAlign。如下图

为了避免上面提到的量化过程

可以参考

作者使用ResNet作为基础的特征提取的网络。 对于预测类别,回归框,mask的网络使用如下图结构:

整体看完这几篇大佬的论文,虽说没有弄清楚每一个实现细节,但是大体上了解了算法的思路。可以看出,出发点都源于深度神经网络在特征提取上的卓越能力,因此一众大神试图将这种能力应用在检测问题中。从R-CNN中简单地用于特征提取,到为了提高速度减少计算的Fast R-CNN,再到为了将region proposal集成进入整个模型中,并且利用GPU加速的RPN,也就是Faster R-CNN。再到为了应用于instance segmentation任务中,设计的RoIAlign和mask。包括bounding box regression,pooling层的设计,训练方法的选择,loss的设计等等细节,无一不体现了大师们的思考和创造力。 可能在我们这些“拿来”者的眼中,这些方法都显得“理所应当”和巧妙,好用,但是,它们背后隐藏的选择和这些选择的思考却更值得我们学习。 以及,对待每一个问题,如何设计出合理的解决方案,以及方案的效率,通用性,更是应该我们努力的方向。

上一篇:邮政员工毕业论文

下一篇:复制论文格式错乱