【论文阅读笔记】Tiny SSD: A Tiny Single-shot Detection Deep Convolutional Neural Network...(太长了写不开...)


(Tiny SSD:一种基于微小的单点探测深度卷积神经网络的实时嵌入式目标检测)

(一)待解决的问题:

如今,目标检测网络越来越成熟,但面临的一个重要问题就是,如何将这样的具有很高的计算能力和内存要求的深度神经网络,广泛地应用到嵌入式系统中;

因此,本文主要致力于将SSD改造成一个小的深度神经网络,就像TinyYOLO和SqueezeNet(文章中写成了SqueezeDet,哈哈哈)一样;

这里借鉴了SSD的宏观结构和SqueezeNet的微观架构,实现了网络参数比Tiny YOLO小26倍、在VOC 2007数据集上的mAP却高了4.2%的成绩;

(二)SSD 的宏观结构:

2.1 论文地址:

《SSD: Single Shot MultiBox Detector》

2.2 SSD 原理及其源码详解:

SSD算法是一种直接预测目标类别和bounding box的多目标检测算法;与faster rcnn相比,该算法避免了ROI Pooling的过程,并且提出了可以利用不同的特征层针对不同大小的目标这,极大提高了检测速度;
在这里插入图片描述

更具体的解析可以看我写的这两篇,这里就不多介绍了;
SSD目标检测算法详解 (一)论文讲解
SSD目标检测算法详解 (二)代码详解

(三)SqueezeNet 的微观架构:

3.1 论文地址:

《SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB
model size》

3.2 Squeeze Net 的核心思想:

在这里插入图片描述

Squeeze Net 提出了优化结构和压缩模型的策略:

  1. 大量使用 1 × 1 1×1 大小的卷积核,代替 3 × 3 3×3 大小的卷积核,从而减少参数;
  2. 3 × 3 3×3 大小的卷积核相应的卷积层之前,使用 1 × 1 1×1 大小的卷积降维,从而减小 3 × 3 3×3 卷积核的通道数;
  3. 基于ShuffleNet的理论,通过延迟下采样(即 s t r i d e > 1 stride>1 的卷积层或池化层),保持较大的 f e a t u r e feature m a p map 从而提升准确率;

3.2 Fire Module:

Squeeze Net 最核心的结构就是Frie Module:
在这里插入图片描述

如图所示,每个Frie Module都由一个squeeze layer和一个expand layer构成;

其中参数 s 1 x 1 s_{1x1} 是squeeze layer中 1 × 1 1×1 大小的卷积核的数目; e 1 x 1 e_{1x1} e 3 x 3 e_{3x3} 分别是expand layer 1 × 1 1×1 大小和 3 × 3 3×3 大小的卷积核的数目;

一般而言,有: s 1 x 1 < e 1 x 1 + e 3 x 3 s_{1x1}<e_{1x1}+e_{3x3} ,从而起到降维和减小参数的作用;

(四)Tiny SSD 的核心思想:

TinySSD 的想法就是在满足较高准确率和实时检测(比如较少参数和较快检测速度)之间寻找一个平衡,于是将SSD与SqueeNet的Fire Module结合起来;
在这里插入图片描述
这里将原本SSD用于特征提取的VGG-16(或VGG-19)的卷积层,由较大的 3 × 3 3×3 大小的卷积核,替换成了Fire Model,从而在压缩模型的参数量的同时,保证了特征层的提取;
在这里插入图片描述

(五)Tiny SSD 的网络结构:

在这里插入图片描述

每层Fire Module的参数表示为:

x @ S y @ E 1 z @ E 3 x@S – y@E1 – z@E3

其中:

  1. x x 表示Squeeze Layer中 1 × 1 1×1 大小卷积核的数目;
  2. y y 表示Expand Layer中 1 × 1 1×1 大小卷积核的数目;
  3. z z 表示Expand Layer中 3 × 3 3×3 大小卷积核的数目;

(六)实验结果:

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

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

猜你喜欢

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