SSD
SSD用的是一种one-stage模型
SSD采用的主干网络是VGG网络。
SSD直接采用卷积对不同的特征图来进行提取检测结果。对于形状为m x n x p 的特征图,只需要采用3X3XP这样比较小的卷积核得到检测值。
SD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。SSD的网络结构如下图所示。上面是SSD模型,下面是Yolo模型,可以明显看到SSD利用了多尺度的特征图做检测。模型的输入图片大小是300X300。
conv 表示卷积层。
VGG
MaxPool2d() 函数是用于最大池化。
kernel_size是卷积核大小。
stride是步长 2,长和高都会分别压缩一半。
所以高和宽 会 被压缩。
300 300 64 到 150 150 64
卷积不会改变图片的长和高。
ReLU() 是激活函数
pool5 = nn.MaxPool2d(kernel_size=3, stride=1, padding=1)
nn.ReLU(inplace=True), conv7, nn.ReLU(inplace=True)
nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True)]
其中ceil_mode 取值是true 和false。
卷积----卷积-----最大池化
17 Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
18 ReLU(inplace=True)
19 Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
20 ReLU(inplace=True)
21 Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
22 ReLU(inplace=True)
23 MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)