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

Scalable Object Detection using Deep Neural Networks

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

论文

Scalable Object Detection using Deep Neural Networks

博客

论文理解

论文的方法

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

训练一个DNN来预测每幅训练图像的 B o u n d i n g B o x Bounding Box BoundingBox和置信度,最高得分的框就能很好的很好的匹配图像中的 g r o u n d   t r u t h ground\ truth ground truth物体。

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

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

在这里插入图片描述

  • F m a t c h F_{match} Fmatch表示目标函数,类似均方误差
  • l i l_i li表示第 i i i B o u n d i n g B o x Bounding Box BoundingBox的位置向量,包含了 B o u n d i n g B o x Bounding Box BoundingBox的左上角和右下角的坐标,是一个位置向量,这些坐标是归一化
  • g j g_j gj表示被 B o u n d i n g B o x Bounding Box BoundingBox框住的第 j j j个对象

我们希望根据任务 x x x优化框的置信度。最大化指定预测的置信度能被表示为:
在这里插入图片描述
上述置信度基于交叉熵损失定义,其中 ∑ j x i j = 1 \sum_{j}x_{ij}=1 jxij=1表示预测框 i i i已经匹配到一个 g r o u n d   t r u t h ground\ truth ground truth c i c_i ci表示第 i i i B o u n d i n g B o x Bounding Box BoundingBox的置信度,在 ∑ j x i j = 1 \sum_{j}x_{ij}=1 jxij=1情况下, c i c_i ci被最大化, 而相反的情况 c i c_i ci被最小化。

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

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

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

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

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

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

应该注意的是,尽管我们以类不可知的方式定义了方法,但我们可以将其应用于预测特定类的对象框。要做到这一点,我们只需要在类的 B o u n d i n g B o x Bounding Box BoundingBox上训练模型。

实验结果

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

非极大抑制采用了 0.5 0.5 0.5 J a c c a r d Jaccard Jaccard相似度阈值,以此对 B o u n d i n g B o x Bounding Box BoundingBox进行修剪。

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

总结

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值