SSD

一世执手 提交于 2019-12-13 22:47:26

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SSD网络以VGG16的前5层卷积网络作为第1个stage,然后将VGG16中的fc6和fc7两个全连接层转化为两个卷积层Conv6和Conv7作为网络的第2、第3个stage。接着在此基础上,SSD网络继续增加了Conv8、Conv9、Conv10和Conv11四层网络,用来提取更高层次的语义信息。如下图3.1所示就是SSD的网络结构。在每个stage操作中,网络包含了多个卷积层操作,每个卷积层操作基本上都是小卷积。

SSD中的default box与RPN中的anchor的区别在于,RPN中的anchor box用于在一层特征图中,而SSD中的default box用于多个特征层。假设要用m个feature map进行预测,那么每层default box的scale是通过这个公式进行计算的,这里的scale是default box边长对于输入图片边长的比例。
在这里插入图片描述
在这里插入图片描述
SSD具体在在实现时,在第一层以及倒数两层特征图中去掉长宽比为3和1/3的default box,采用了4种default boxes,而在其余3层中采用6种default box当输入图片是300x300时,整个网络中default box的数量是可以算出来的,有8732个

在这里插入图片描述
在这里插入图片描述
在YOLO中,首次提出了将特征图划分为格子,以格子为单位进行分类回归预测,但其采用了全连接层,导致参数非常多。SSD借鉴了Faster R-CNN的RPN网络,将YOLO中的全连接层换成了3x3的卷积。

3x3的卷积在特征图上进行操作,在特征图的每个点提取特征,然后对每个default box生成四个偏移量来表示生成的bounding box,这四个偏移量分别表示生成框中心x坐标、y坐标、宽度、高度对应于当前default box的偏移量,这里的计算方法采用了RPN中的方法。同时,针对每个bounding box, 卷积会进行分类操作,输出C个分类数值,注意这里的C包括背景类。因此对于每个default box有C+4个输出值,而K个default box就有K(C+4)个输出值,因此,总共需要K*(C+4)个3x3卷积。

SSD中采用了一种新的Mining机制,OHNM(Online Hard Negative Mining),在Focal Loss里代号为OHEM 1:3,是对OHEM的一种改进。OHNM在计算loss时, 使用所有的positive anchor, 使用OHEM选择3倍于positive anchor的negative anchor。SSD算法中会将所有负样本的confidence loss进行排序,然后按照比例选取置信度最高的几个负样本,保证正负样本的比例为1:3。

回归loss是采用了Fast R-CNN中的smooth L1 loss的形式。左侧的l表示:预测的box与default box之间的偏移量,也即网络输出的4个值;右侧的g表示,ground truth与default box的偏移量(在给定输入图片groudth与为整个网络设置好default box后,该值是可以直接计算出来的,其计算公式沿用了RPN网络的中的公式)。回归部分的loss是希望预测的box与default box之间的差距尽可能与ground truth和default box差距接近,这样预测的box就能尽量和ground truth一样。

bbox regression loss.png
注意:bounding box regression loss,只对属于正样本的default box进行计算;其次,在SSD的匹配策略下,default box与gt box之间的关系是多对多的,这里会对default box匹配到的所有ground truth box计算回归loss。

  1. Confidence Loss:(分类loss):
    Confidence loss是一个softmax分类loss,为每个default box进行分类。

confidence loss.png
值得注意的是,confidence loss分类里不仅需要考虑正样本,同时也要考虑负样本。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!