SSD之前的准备:Scalable Object Detection using Deep Neural Networks

来源:互联网 发布:淘宝改价格不影响权重 编辑:程序博客网 时间:2024/06/07 05:18

    在阅读SSD的论文的时候,看到在论文中提及过好几次的MultiBox算法,而且SSD的损失函数很大一部分是来自于这篇论文,因此,为了便于对SSD能够有一个更好的理解,便决定先阅读MultiBox算法的论文,也就是这篇博客要介绍的论文:Scalable Object Detection using Deep Neural Networks。MultiBox算法的全称叫做DeepMultiBox,是一种用来生成候选区域的方法,这里的候选区域类似于在R-CNN系列中经常提到的检测建议(detection proposal),是和类别无关的,因此这个算法和selective search的功能是类似的,而他俩的区别在于DeepMultiBox是通过训练网络来生成候选区域,而selective search则是通过图像过分割和聚类来实现候选区域的生成的。
    论文提出了一种受显著性启发的用于给目标检测框架提供候选框的神经网络,该网络输入一张图片,预测出一系列的包围矩形(bounding boxes,这个词应该不陌生了)并对每一个包围矩形都预测一个分数,分数表达的含义是该包围矩形有多大可能包含了物体,也就是说分数越高说明这个包围矩形越有可能包含物体。该论文主要有以下三个贡献:
    [1]把目标检测定义为对几个包围矩形坐标的回归问题,此外,每一个预测的矩形,网络都会输出一个分数(score)用于表达这个矩形有多大可能包含一个物体。这种回归的方法和传统的滑窗法相比,是更加高效的。
    [2]将边框检测器的训练作为神经网络训练的一部分。对于每一张训练图片,我们解决了当前预测的矩形和真值矩形的分配问题(可能预测了M个矩形,而真值只有N个,这就存在一个对应的问题,即这里所说的分配问题。),并且通过反向传播算法更新匹配上的预测矩形的坐标、信任概率(也就是score)以及潜在的特征。
    [3]我们使用一种与类别无关的方式训练预测矩形的网络。实验证明只需要使用该预测网络生成的不到十个矩形,便可以达到顶尖的目标检测水平。最后,该预测网络能够很好的适用于未经训练的物体类别,因此可以很好的用在其它检测问题上。
    模型算法:
    [1]模型:
    该模型使用DNN在最后一层产生一定数量的bounding box及每个box包含目标的置信度水平(score),将第i个bounding box的坐标li∈R4及其置信度水平ci∈[0,1]编码为网络最后一层节点的值。对于每一个bounding box的坐标,将其编码为四个节点值,分别是左上顶点的坐标以及右上顶点的坐标。且这些坐标都是用图像尺度进行了归一化的,目的是为了让网络适用于各种尺度的图像。对于每一个bounding box的置信度水平,用ci来表示,ci是属于[0,1]之间的。每一个预测的矩形随后都会被一个分类器进行分类,以判断它是背景还是物体,如果是物体,还会该物体的类别。该论文中使用的分类器是AlexNet。
    [2]训练目标:
    我们希望达到这样的一个目的:即用一个训练好的网络对一张图片进行预测,得到一系列的bounding boxes以及其scores,而且对于score高的bounding box,能够更好的和图片中包含的物体所在的box相吻合。也就是希望训练出的网络的score能够很好的评价其对应的bounding box和真值box的吻合程度。
    假设对于一个训练样本,有M个bounding box,即gj,j∈{1,…,M},预测出的K个框要远大于M个ground truth,因此需要对与ground truth匹配程度比较高的预测框进行优化,优化他们的位置来改善他们和groundtruth的匹配程度并提高他们的置信度(score),与此同时并且最小化剩余预测框的置信度(score)。 论文将预测矩形和真值矩形的分配问题表达为以下公式:
这里写图片描述
    其中xij表示当第i个预测矩形被分配给第j个真值矩形的时候值为1,其余时候为0。li表示预测的dii个location(或者bounding box),gj表示第j个ground truth box。
    此外,想要根据分配的情况x优化置信度的值,想要最大化被分配的预测矩形的置信度,最后把这个问题表达为以下式子:
这里写图片描述
    最终loss目标函数为:
这里写图片描述
    [3]优化方法:
    对于每一个训练样本,都是去找能够使得最终的目标函数最小的分配x*,即:
这里写图片描述
    求解如何使得最终的目标函数最小的方法是通过反向传播法对l、c求偏导。如下图:
这里写图片描述
    [4]训练细节:
    使用prior matching,即对ground truth的location进行聚类得到K个典型的聚类中心作为priors,之后用K个priors进行辅助匹配。这部分我还不是太理解,等看了源码再来更新这部分吧。
    整个算法流程到此结束。

    原作者的项目地址:https://github.com/google/multibox

阅读全文
0 0