当前位置: 代码迷 >> 综合 >> 《Scalable Object Detection using Deep Neural Networks》Bounding Box目标检测的思想
  详细解决方案

《Scalable Object Detection using Deep Neural Networks》Bounding Box目标检测的思想

热度:39   发布时间:2023-12-06 00:46:41.0

Scalable Object Detection using Deep Neural Networks

阅读意图:在研究Inception全家桶的论文时发现本文这篇有被作为参考文献,并且该篇论文讲述了BoundingBoxBounding BoxBoundingBox做目标检测的思想,也算是开山之作,想到YOLO的思路中也有用到BoundingBoxBounding BoxBoundingBox的思想,我想有必要了解一下这方面的知识,以方便更好地了解应用在yolov的这部分技术。

论文

Scalable Object Detection using Deep Neural Networks

博客

  • 非极大值抑制(Non-Maximum Suppression)
  • 交叉熵损失函数
  • 论文中ground truth的解释

论文理解

论文的方法

我们的目标是通过预测一组表示潜在对象的BoundingBoxBounding BoxBoundingBox来实现与类无关的可伸缩对象检测。更准确地说,我们使用深度神经网络(DNN),它输出固定数量的BoundingBoxBounding BoxBoundingBox。此外,它为每个表示包含对象的盒子的网络置信度的盒子输出一个分数。

训练一个DNN来预测每幅训练图像的BoundingBoxBounding BoxBoundingBox和置信度,最高得分的框就能很好的很好的匹配图像中的groundtruthground\ truthground truth物体。

训练时只优化与groundtruthground\ truthground truth数据最匹配的预测框的子集,并且优化它们的位置以提高它们的匹配度和最大化它们的置信度。同时,将剩余预测的置信度最小化,认为这些预测不能很好的定位真实的物体。

为了实现上述目标,我们为每个训练示例制定一个分配问题。我们xij∈{0,1}x_{ij}∈\{0,1\}xij?{ 0,1}表示赋值:如果第iii个预测被赋值给第jjj个真实对象,xij=1x_{ij}= 1xij?=1。这项任务的目标可以表述为:

在这里插入图片描述

  • FmatchF_{match}Fmatch?表示目标函数,类似均方误差
  • lil_ili?表示第iiiBoundingBoxBounding BoxBoundingBox的位置向量,包含了BoundingBoxBounding BoxBoundingBox的左上角和右下角的坐标,是一个位置向量,这些坐标是归一化
  • gjg_jgj?表示被BoundingBoxBounding BoxBoundingBox框住的第jjj个对象

我们希望根据任务xxx优化框的置信度。最大化指定预测的置信度能被表示为:
在这里插入图片描述
上述置信度基于交叉熵损失定义,其中∑jxij=1\sum_{j}x_{ij}=1j?xij?=1表示预测框iii已经匹配到一个groundtruthground\ truthground truthcic_ici?表示第iiiBoundingBoxBounding BoxBoundingBox的置信度,在∑jxij=1\sum_{j}x_{ij}=1j?xij?=1情况下,cic_ici?被最大化, 而相反的情况cic_ici?被最小化。

上述术语的另一种解释是:如果我们将∑jxij\sum_{j}x_{ij}j?xij?看作预测框iii包含了一个感兴趣对象的概率,则上述损失函数为熵的负值,对应为最大熵损失。(这里不是很懂,为何loss为熵的负值)

最终的损失目标函数结合了匹配损失函数和置信度损失函数:

在这里插入图片描述
受公式(1)约束,α\alphaα平衡了不同损失项的贡献。

对每个训练示例,我们求解一个预测到真实框的最优任务x?x^*x?
在这里插入图片描述
公式(4)最小化损失目标函数
式子(5)∑ixij=1\sum_{i}x_{ij}=1i?xij?=1表示第jjj个对象一定会被所有的BoundingBoxBounding BoxBoundingBox中的其中仅有的一个包含。

训练方法
采用三种方法能显著得达到更好得精度:

  1. groundtruthground\ truthground truth的位置进行聚类,找到KKK个这样的簇/质心,我们可以使用它们作为每个预测位置的先验知识。因此,对每个预测位置,学习算法被激励去学习一个残差到一个先验
  2. 在匹配过程中使用这些先验知识:我们在K个先验和groundtruthground\ truthground truth之间找到最佳的匹配,而不是用K个预测匹配N个groundtruthground\ truthground truth的位置。一旦匹配完成,目标置信度像之前一样计算。
  3. 此外,位置预测损失函数也没有改变:对于任何匹配的一对(目标,预测)位置,损失函数是由groundtruthground\ truthground truth和匹配的先验相对应的坐标定义的。我们称先验的使用为先验匹配,并假设它使预测多样化。

应该注意的是,尽管我们以类不可知的方式定义了方法,但我们可以将其应用于预测特定类的对象框。要做到这一点,我们只需要在类的BoundingBoxBounding BoxBoundingBox上训练模型。

实验结果

网络结构和实验细节
网络结构采用和AlexNet结构相同的网络,使用AdagradAdagradAdagrad控制学习速率的衰减,使用迷你的batch_size为128个,在定位损失中使用先验(使用训练集上的K?meansK-meansK?means计算的),我们也使用α=0.3\alpha = 0.3α=0.3来平衡局部和置信损失。

非极大抑制采用了0.50.50.5JaccardJaccardJaccard相似度阈值,以此对BoundingBoxBounding BoxBoundingBox进行修剪。

为了训练我们的定位网络,我们从训练集中生成了大约3000万幅图像。对于训练集中的每个图像,我们生成相同数量的方形样本,这样的样本数量大约是1000万。对于每一幅图像,样本都是按0-5%,5-15%,15-50%,50-100%的比例进行存储的,这些被BoundingBoxBounding BoxBoundingBox覆盖的比率在给定的范围内都有相同数量的样本。

总结

论文读完之后,基本了解了作者的核心思想,通过DNN来训练出这些BoundingBoxBounding BoxBoundingBox,通过匹配度和置信度来定义损失函数,以此训练,其中也利用了一些提高训练精度的方法。

  相关解决方案