因为毕设是做关于目标检测的项目,也看了一些目标检测的论文,由于项目对实时性的要求,最后选用了MobilenetV2+SSD作为基础结构,也仔细阅读了SSD的论文,现梳理如下。
亮点
一步完成检测,同时进行边框回归和类别预测,相对于两步完成的网络在时间上会快很多。结合多个feature maps的特征进行预测。
基本结构
基本思想
在不同尺度的feature map上指定一系列default boxes。具体来说就是,上图的feature map中,对于每个cell,首先生成k个default boxes,对于每个default box,预测其类别和位置,于是共有(4+cls)个参数。每层的k个default boxes的aspect ratio不同,而不同feature maps上的default boxes的scale不同,这样基本就能适配各种状态下的目标。最后将不同feature maps上的结果综合起来进行训练。这样对于一个输入的大小为mxm的feature map,最后的得到的default boxes个数为 mmk(4+cls),为了达到这样的输出维度,用一个深度为k(4+cls)的33,stride=1的卷积核即可得到,但是实际上是分为两个不同的卷积来实现,一个深度为4k的loc层,一个深度为k*cls的conf层。
网络结构
SSD的网络结构中包括base部分的特征提取层,以及额外的extra layer用于生成不同尺度的feature map用于default boxes的生成。base部分理论上可以是任何用于classification的卷积网络。在原论文中,作者使用VGG-16作为base网络,feature maps总共有6层,前两层为base 网络中的两个卷积层,后4层feature maps来自extra layers。在6个feature maps上做卷积操作得到综合的输出送入loss层进行回归训练。
实现细节
prior box的生成
实际上就是解决不同level的feature maps上的default boxes如何与原图上的default boxes相对应的问题,也就是根据default box的4个offset参数,如何找到其在原图上的对应坐标。这就是prior box的生成问题。
简单来说就是根据scale以及aspect ratio按照步长生成,步长就相当于feature map中一个像素对应的原图中的像素数,实际上就是原图大小和feature map的比值。论文中生成的坐标格式是[cx,cy,w,h]格式。
匹配策略
在确定default box和 groud truth的对应关系时,采用best jaccard overlap方法,对于jaccard overlap高于一个阈值(0.5)的匹配对,我们都认为它们匹配成功。然后利用这些匹配对计算loss,进行回归。
loss function
loss由loc loss和 conf loss两部分组成,分别表示定位损失和分类损失,具体计算公式在原文中讲的很具体。