首页:https://blog.csdn.net/u014236392/article/details/86767950
论文:SSD: Single Shot MultiBox Detector
official code - caffe:https://github.com/weiliu89/caffe/tree/ssd
unofficial code - tensorflow:https://github.com/balancap/SSD-Tensorflow
unofficial code - pytorch:https://github.com/amdegroot/ssd.pytorch
1. 网络结构
精简版:
细节版:
SSD网络中分为了6个stage,每个stage能学习到一个特征图,然后进行边框回归和分类。SSD网络以VGG16的前5层卷积网络作为第1个stage,然后将VGG16中的fc6和fc7两个全连接层转化为两个卷积层Conv6和Conv7作为网络的第2、第3个stage。接着在此基础上,SSD网络继续增加了Conv8、Conv9、Conv10和Conv11四层网络,用来提取更高层次的语义信息。网络包含了多个卷积层操作,每个卷积层操作基本上都是小卷积。
2. 算法比较
3. Default Box
3.1 生成规则
作者充分的吸取了Faster R-CNN中的Anchors机制,在每个Stage中根据Feature Map的大小,按照固定的Scale和Radio生成Default Boxes。
具体参考博客。
4. 新增卷积网络
SSD网络总共增加了Conv8、Conv9、Conv10和Conv11四个卷积网络层。新增的这些网络都是通过一些小的卷积核操作,是SSD网络性能优秀的核心。
4.1 卷积核配置
假设Feature Map通道数为P,SSD网络中每个Stage的卷积核大小统一为3×3×P。其中 padding 和 stride 都为1。保证卷积后的Feature Map和卷积前是一样大小。
4.2 卷积滤波器
每个Feature Map上 m×n 个大小的特征点对应K个Default Boxes,假设类别数+背景=c,最终通过卷积滤波器得到c+4维特征向量。那么一个Feature Map上的每个点就需要使用 k×(c+4) 个这样的滤波器。