基于VGG网络的SSD算法

前言

             目标检测目前有 one-stage 和 two-stage 两种,two-stage 指的是检测算法需要分两步完成,首先需要获取候选区域,然后进行分类,比如R-CNN系列;与之相对的是 one-stage 检测,可以理解为一步到位,不需要单独寻找候选区域,典型的有SSD/YOLO(作者:HRain链接:https://www.jianshu.com/p/468e08f739bd)。这里只要介绍SSD算法的网络结构,主要是个人的理解加上大神们的解读!!!
 

SSD

别管看不看得懂,你看,这张图,多靓(用大神的图,不可耻)。

基于VGG网络的SSD算法_第1张图片

基于VGG网络的SSD算法_第2张图片

            来嘛,不要退缩,先看看第一张图片,VGG16,比较熟悉了,不熟悉可以看之前的博文(强烈建议先看懂VGG16https://blog.csdn.net/weixin_43999691/article/details/117658940)。

解析图表

            图表中的block4对应图中的conv4_3,block5对应图中的conv5_3...

基于VGG网络的SSD算法_第3张图片

1. VGG主干网络主要分5块(block),每块后面接上池化层(caluate是计算公式,output是经过卷积和池化后的图片输出尺寸)

1)bolck1:两次卷积,卷积核:3*3   padding:1  步长:1 卷积核数:64

2)maxpool:核:2*2  步长:2  核数:64

3)bolck2:两次卷积,卷积核:3*3   padding:1  步长:1 卷积核数:128

4)maxpool:核:2*2  步长:2  核数:128

5)bolck3:三次卷积,卷积核:3*3   padding:1  步长:1 卷积核数:256

6)maxpool:核:2*2  步长:2  核数:256

7)bolck4:三次卷积,卷积核:3*3   padding:1  步长:1 卷积核数:512

8)maxpool:核:2*2  步长:2  核数:512

9)bolck5:三次卷积,卷积核:3*3   padding:1  步长:1  卷积核数:512

10)maxpool:核:3*3 步长:1  核数:512

2.虽然命名还是FC但是是由卷积代替FC的操作

1)FC6:卷积核:3*3   padding:1  步长:1 卷积核数:1024

2)FC7:卷积核:1*1    步长:1 卷积核数:1024

3.conv_6-conv_9都是SSD新增的卷积层

1)bolck6:两次卷积

        1.卷积核:1*1   步长:1 卷积核数:256 

        2.卷积核:3*3   padding:1  步长:1  卷积核数:512

2)bolck7:两次卷积

        1.卷积核:1*1   步长:1 卷积核数:128

        2.卷积核:3*3   padding:1  步长:1  卷积核数:256

3)bolck8:两次卷积

        1.卷积核:1*1   步长:1 卷积核数:128

        2.卷积核:3*3   padding:1  步长:1  卷积核数:256

4)bolck9:两次卷积

        1.卷积核:1*1   步长:1 卷积核数:128

        2.卷积核:3*3   padding:1  步长:1  卷积核数:256

4.特征层

        图表中输出后面用紫色标记的层,作为特征层进行下一步的处理。为了和普通特征层区分,我们称之为有效特征层,来获取预测结果.一共个6层,对获取到的每一个有效特征层,我们都需要对其做三个操作:(Bubbliiiing大神的说法,我照搬过来了)

1.一次num_priors x 4的卷积
2.一次num_priors x num_classes的卷积

3.计算对应的先验框

         num_priors指的是该特征层每一个特征点所拥有的先验框数量。上述提到的六个特征层,每个特征层的每个特征点对应的先验框数量分别为4、6、6、6、4、4(对应彩色图片中的# def boxes)

至于为什么要这样操作?

         答:这6个卷积层输出作为特征图来做目标检测,但是这些特征图通道大小不一且数量很大,所以SSD在每一个特征图后面都接上了一个分类与位置卷积层使得输出的通道数符合要求。还有也可以从上图看出这6个特征图尺寸越来越小,而其对应的感受野越来越大。6个特征图上的每一个点分别对应4、6、6、6、4、4个PriorBox。接下来分别利用3×3的卷积,即可得到每一个PriorBox对应的类别与位置预测量。

          举个例子,第8个卷积层得到的特征图大小为10×10×512,每个点对应6个PriorBox,一共有600个PriorBox。由于采用的PASCAL VOC数据集的物体类别为21类,因此3×3卷积后得到的类别特征维度为6×21=126,位置特征维度为6×4=24。

所以操作之后的输出是这样的(还是用的Bubbliiiing大神的图)

基于VGG网络的SSD算法_第4张图片

好了,SSD基本的网络结构就是这样了,其中关于先验框/SSD怎样运行得到结果的...后续会出相应的文章进行排雷,这里算是抛砖引玉吧。

你可能感兴趣的:(计算机视觉(分类/检测/分割),深度学习,卷积,算法,python)