SSD
YOLOv2在多尺度方面,只加了一个多尺度的训练检测网络,真正检测的时候,估计没有多尺度,还只是输入到网络里回归。
SSD[17,23]的全拼是Single Shot MultiBox Detector,冲着YOLO的缺点来的。SSD的框架如图16所示,图16(a)表示带有两个Ground Truth边框的输入图片,图16(b)和(c)分别表示8×8网格和4×4网格,显然前者适合检测小的目标,比如图片中的猫,后者适合检测大的目标,比如图片中的狗。在每个格子上有一系列固定大小的Box(有点类似前面提到的Anchor Box),这些在SSD称为Default Box,用来框定目标物体的位置,在训练的时候Ground Truth会赋予给某个固定的Box,比如图16(b)中的蓝框和图16(c)中的红框。
图16. SSD框架SSD的网络分为两部分,前面的是用于图像分类的标准网络(去掉了分类相关的层),后面的网络是用于检测的多尺度特征映射层,从而达到检测不同大小的目标。SSD和YOLO的网络结构对比如图17所示。
图17. SSD和YOLO的网络结构对比SSD在保持YOLO高速的同时效果也提升很多,主要是借鉴了Faster R-CNN中的Anchor机制,同时使用了多尺度。但是从原理依然可以看出,Default Box的形状以及网格大小是事先固定的,那么对特定的图片小目标的提取会不够好。
http://blog.csdn.net/myarrow/article/details/51878004(SSD部分写的不错)
http://blog.csdn.net/smf0504/article/details/52745070(写的非常好,尤其是“Default boxes and aspect ratios”这部分):
Model
SSD是基于一个前向传播CNN网络,产生一系列固定大小(fixed-size)的bounding boxes,以及每一个box中包含物体实例的可能性,即score。之后,进行一个非极大值抑制(Non-maximum suppression)得到最终的predictions。SSD模型的最开始部分,本文称作base network,是用于图像分类的标准架构。在base network之后,本文添加了额外辅助的网络结构:
(1) Multi-scale feature maps for detection: 在基础网络结构后,添加了额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下进行predictions。
(2) Convolutional predictors for detection: 每一个添加的特征层(或者在基础网络结构中的特征层),可以使用一系列 convolutional filters,去产生一系列固定大小的 predictions,具体见 Fig.2。对于一个大小为m×n,具有p通道的特征层,使用的 convolutional filters 就是3×3×p的 kernels。产生的 predictions,那么就是归属类别的一个得分,要么就是相对于 default box coordinate 的 shape offsets。
在每一个m×n的特征图位置上,使用上面的3×3的 kernel,会产生一个输出值。bounding box offset 值是输出的 default box 与此时 feature map location 之间的相对距离(YOLO架构则是用一个全连接层来代替这里的卷积层)。
(3) Default boxes and aspect ratios: 每一个 box 相对于与其对应的 feature map cell 的位置是固定的。 在每一个 feature map cell 中,我们要predict得到的 box与default box之间的offsets,以及每一个 box 中包含物体的 score(每一个类别概率都要计算出)。
因此,对于一个位置上的k个boxes 中的每一个 box,我们需要计算出c个类,每一个类的 score,还有这个 box 相对于它的默认 box的 4 个偏移值(offsets)。于是,在 feature map 中的每一个 feature map cell 上,就需要有(c+4)×k个filters。对于一张m×n大小的 feature map,即会产生(c+4)×k×m×n个输出结果。
这里的 default box 很类似于Faster R-CNN中的Anchor boxes,关于这里的Anchor boxes,详细的参见原论文。但是又不同于 Faster R-CNN 中的,本文中的 Anchor boxes 用在了不同分辨率的 feature maps 上。
Choosing scales and aspect ratios for default boxes的那部分写的也很好
补充理解(摘自zhuanlan.zhihu.com/p/25100992 ):
图1-1 SSD模型结构。(此图来源于原论文)模型建立源代码包含于ssd_vgg_300.py中。模型多尺度特征图检测如图1-2所示。模型选择的特征图包括:38×38(block4),19×19(block7),10×10(block8),5×5(block9),3×3(block10),1×1(block11)。对于每张特征图,生成采用3×3卷积生成
默认框的四个偏移位置和21个类别的置信度。比如block7,默认框(def boxes)数目为6,每个默认框包含4个偏移位置和21个类别置信度(4+21)。因此,block7的最后输出为(19*19)*6*(4+21)。
看论文:
Training also involves choosing the set of default boxes and scales for detection as well as the hard negative mining and data augmentation strategies.
疑问:
1、到底框是加在特征图上,还是原图上的呢
网友评论