【论文阅读笔记】DSSD : Deconvolutional Single Shot Detector

(一)论文地址:

《DSSD : Deconvolutional Single Shot Detector》

Ps:这篇文章的第二作者就是大名鼎鼎的 W e i L i u Wei Liu 大神,也是DSSD的基础《SSD: Single Shot MultiBox Detector》这篇文章的一作;

(二)解决的问题:

SSD的详解可以看我的这两篇博客:
SSD目标检测算法详解 (一)论文讲解
SSD目标检测算法详解 (二)代码详解

相比于faster-rcnn在同一个特征图上采用不同大小的先验框进行目标的提取的方法,SSD算法采取:提取了不同尺度的特征图来做检测,大尺度特征图(浅层的特征图)可以用来检测小物体,而小尺度特征图(深层的的特征图)用来检测大物体;
在这里插入图片描述

但由于浅层的特征图对于图像特征的提取并不完全,所以SSD算法对小目标的检测依然存在不足;

为了提高小目标检测的精度,作者提出了DSSD,即反卷积SSD

(三)DSSD 的核心思想:

为了提高对小目标的检测精度,作者提出了:

  1. 使用 R e s N e t 101 ResNet101 代替 V G G 16 VGG-16 提取特征;
  2. 使用反卷积层增加上下文(context)的信息;
  3. 使用迁移学习(特别是在反卷积层)效果会更好;

从而大大增加了上下文信息,在对检测速度影响较小的同时,大大提升了目标检测的准确度;
在这里插入图片描述

(四)ResNet 的残差单元:

ResNet的核心思想是:

将本来回归的目标函数H(x)转化为F(x)+x,即F(x) = H(x) - x,称之为残差。

在训练时,我们将该单元目标映射(即要趋近的最优解)假设为F(x) + x,而输出为y+x,那么训练的目标就变成了使y趋近于F(x)。即去掉映射前后相同的主体部分x,从而突出微小的变化(残差),并融合上下文信息;
在这里插入图片描述
更具体的理解可以看我这一篇:
残差网络ResNet系列网络结构详解:从ResNet到DenseNet

(五) Prediction Module:

在这里插入图片描述
P r e d i c t i o n Prediction M o d u l e Module 指的是,将特征图输入到卷积层,输出每个特征点对应多个default box的类别向量和回归坐标;

P r e d i c t i o n Prediction M o d u l e Module 的几种变体如图所示:
在这里插入图片描述
其中(a)是SSD采用的 P r e d i c t i o n Prediction M o d u l e Module ,即使用单层卷积( 3 × 3 3×3 卷积核大小)直接输出相应的 C l s Cls (类别向量,包括背景分类)和 L o c R e g r e s s Loc Regress (回归坐标),实现代码如下:

def ssd_multibox_layer(self, inputs, class_num, ratio, size):

    num_anchors = len(size) + len(ratio)
    num_loc = num_anchors * 4
    num_cls = num_anchors * class_num

    # loc
    loc_pred = slim.conv2d(
        inputs, num_loc, [3, 3], activation_fn=None, scope='conv_loc')

    # cls
    cls_pred = slim.conv2d(
        inputs, num_cls, [3, 3], activation_fn=None, scope='conv_cls')

    loc_pred = tf.reshape(loc_pred, (-1, 4))
    cls_pred = tf.reshape(cls_pred, (-1, class_num))

    # softmax
    cls_pred = slim.softmax(cls_pred, scope='softmax')

    return loc_pred, cls_pred

变体(b)、(c)和(d)则是DSSD采用的 P r e d i c t i o n Prediction M o d u l e Module ,即在输出预测结果前,使用 1 × 1 1×1 卷积核大小的卷积层和类似ResNet的残差结构,在不大量增加参数量和不改变感受野大小的前提下,进一步提取特征并融合上下文信息;

(六)Deconvolutional Module:

在这里插入图片描述
D e c o n v o l u t i o n a l Deconvolutional M o d u l e Module 是DSSD的核心;

深层特征图的感受野比较大,语义信息表征能力强,但是特征图的分辨率低,几何信息的表征能力弱;浅层特征图的感受野比较小,几何细节信息表征能力强,虽然分辨率高,但是语义信息表征能力弱;

为了充分利用深层特征图和浅层特征图的有效信息,作者提出了 D e c o n v o l u t i o n a l Deconvolutional M o d u l e Module ,即在使用浅层特征图(假设为 2 H × 2 W × D 2H×2W×D 大小)输入到 P r e d i c t i o n Prediction M o d u l e Module 之前,先使用反卷积层将下一层较深的特征图( H × W × D H×W×D 大小)转换为相同大小( 2 H × 2 W × D 2H×2W×D ),将这两个特征图融合,作为 D e c o n v o l u t i o n a l Deconvolutional M o d u l e Module 的输入;

作者还提出了 D e c o n v o l u t i o n a l Deconvolutional M o d u l e Module 具体结构:

在这里插入图片描述

  1. 每个卷积层之后添加 B a t c h Batch N o r m a l i z a t i o n Normalization
  2. 反卷积层参与训练,而非是简单的双线性插值;
  3. 通过点积融合两个特征图;

(七)Training:

训练方式与SSD相似,即将不同的default box进行分类,分为正样本(物体)和负样本(背景);

通过计算default box和true boxes(真值框)的IOU值,IOU>0.5的标注为正样本,则该default box的标签就是跟这个default box的IOU最大的真值框的标签;IOU<0.5的标注为负样本;

由于我们的分类向量有一个背景得分,故负样本可以参与类别的loss计算,但不参与坐标回归的loss计算;

然后选取所有的正样本,然后按照正、负样本比为 1 :3 的比例选取IOU得分最小的负样本参与Loss计算,其余default box的Loss记为0(其中分类Loss使用交叉熵Loss,坐标回归Loss使用SmoothL1);

另外,作者使用 K m e a n s K-means 算法聚类重新指定了几种default box的宽高比:
在这里插入图片描述
相比于SSD中人工指定的宽高比,显然这里的宽高比更具有代表性;

(八)实验结果:

DSSD-513在VOC2007上取得了81.5% mAP,在VOC2012上取得了80.0% mAP,在COCO上取得了33.2% mAP的成绩,均高于R-FCN;FPS为5.5(batch_size=1);

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

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

发布了103 篇原创文章 · 获赞 128 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44936889/article/details/104090145