这是ssd的第四篇博客。我们在上一篇博客讲了输入图片之后,会对输入的图片进行特征提取,得到一个一个特征层。这一篇博客,我们就会讲的到特征层之后,我们是如何进一步处理特征层,来进行分类和回归的。

1)回顾

我们在第二篇博客讲到:

我们输入了一张300x300的图片,然后我们会把这张图片提取出38x38, 19x19, 10x10, 5x5, 3x3, 1x1的特征层,然后按照特征层的高宽,把图片分成对应大小的网格,如38x38的特征层,我就把图片分成38x38的网格,其他以此类推。

然后我们会在每个网格上面标好先验框,然后调整先验框,使其变成我们想要的预测框,然后判断这个先验框是否包含物体,以及这个物体的种类。

pytorch lbp 特征提起 pytorch 特征提取_深度学习

2)预测结果

我们的到特征层了之后,要进行分类预测和回归预测,

pytorch lbp 特征提起 pytorch 特征提取_深度学习_02


为此,我们还需要进行两次卷积,但是这次的两个卷积的通道数是有一点点区别的。

我们对特征层分别进行一次num_priors x 4的卷积、一次num_priors x num_classes的卷积、并且需要得到每一个有效特征层对应的先验框。这里要注意我们每一个网格点所包含的先验框的数量,一共有8732个先验框(在第二篇博客有讲到),我们的网络就会对这8732个先验框进行调整和预测。

2.1)num_priors x 4通道数卷积

回归预测。num_priors表示每一个网格先验框的数量,4表示的是一个调整先验框所要的参数的集合(我们在第一篇博客有提到,调整一个先验框需要四个参数,分别是先验框中心点的x,y坐标,先验框的宽和高)。我们在进行预测的时候,我们需要对这个特征层上所有网格的所有先验框都进行一次预测。
所以我们在这个地方进行一次回归预测的卷积的通道数是num_priors x 4。

2.2)num_priors x num_classes通道数卷积

分类预测。num_classes就是我们分的类(是包括背景的)。num_priors x num_classes表示先验框包含物体所属的种类,可能属于背景,也可能是一个物体。如果这个先验框里面某一个类的概率很高,那么说明我们的这个先验框可能包含这个物体。