基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法

注:本文源自本人的硕士毕业论文,未经许可,严禁转载!
原文请参考知网:知网地址

4.2 改进的SSD

上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的。前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图像区域,再到从特征图上生成建议框,算法的改进带来的收益越来越大。本节的主要内容是结合上一章讲的DenseNet和前面讲的SSD目标检测算法,将DenseNet作为SSD算法的基础网络,用于提取深度特征,再结合SSD算法中的目标边框建议策略和边框回归算法,重新构建一个端到端的物体识别检测网络。

4.2.1 基础网络改进

在寻找进一步提高检测准确性的方法时,尤其是对于小对象来说,除了提高预测边界框的空间分辨率外,更明显的目标是使用更好的特征网络和增加更多的上下文信息。以前的SSD版本是基于VGG网络,但很多研究人员使用更深的网络取得了更好的精确度。

大多数目标检测方法,包括Fast R-CNN,YOLO等使用最顶层的卷积层来学习检测不同尺度的物体。尽管这些方法很实用,但是单层模型对于所有可能存在的目标尺寸和形状来说,拟合的能力有些捉襟见肘。有很多种方法可以利用ConvNet中的多个层来提高检测精度。一种方法就是合并不同层的特征图,由于组合特征映射具有来自不同抽象级别输入图像的特征,所以合并特征更具有描述性。但是,组合特征映射不仅显著增加模型的内存占有量,而且也降低了模型的速度。另一种方法使用ConvNet中的不同层来预测不同比例的对象。由于不同层的节点具有不同的接受域,因此从具有较大接受域的层预测较大对象并使用具有较小接受域的层来预测小对象是很自然的。然而,为了很好地检测小物体,这些方法需要使用具有小接受域和密集特征图的浅层信息,这可能导致小物体检测性能低下,因为浅层具有较少的关于物体的语义信息。通过使用跳跃连接,我们可以在特征映射中注入更多的语义信息,从而帮助预测小物体。

我们的改进是使用DenseNet代替原始SSD结构中的VGG,以提高目标检测准确性。图4-9显示了以DenseNet为基础网络的SSD。在这种结构下,我们在conv5_x之后添加不同尺寸的特征图层,并预测conv3_x,conv5_x和其他特征图上的目标置信度和边框偏移量。
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第1张图片
图4-9 SSD基础网络改进图

4.2.2 预测网络改进

在原始SSD中,目标函数直接作用于选定的特征映射,并且由于梯度的大小,L2归一化层被用于conv4_3层。研究表明,改进每个任务的子网络可以提高检测准确性。遵循这个原则,我们为每个预测层添加一个密集连接块,如图4-10中模块c所示。我们还尝试原始SSD方法(a)和带有跳跃连接(b)以及两个连续密集块(d)的版本。从实验结果来看,用DenseNet作为SSD的基础网络以及用DenseBlock作为预测网络相比原始SSD有更好的准确度。
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第2张图片
图4-10 预测块及变种

4.3 训练网络

我们遵循与SSD一样的训练策略。首先,我们必须匹配一组Default Box来定位目标真实边框。对于每个目标真实边框,我们将其与最佳重叠的Default Box以及IoU大于阈值(例如0.5)的任何Box匹配,Box尺寸如表4-1所示。在未匹配的Box中,我们根据置信度损失来选择某些Box作为负样本,并使正负样本的比例为1:3。然后我们联合定位损失函数(如Smooth L1)和置信度损失(如Softmax),并最小化损失函数。最后采用随机光度测量失真和随机翻转裁剪区域来完成大量数据增强。

基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第3张图片
实验都基于DenseNet,它是在ILSVRC CLS-LOC数据集上预先训练的。遵循R-FCN的建议,我们将conv5阶段的有效步幅从32像素改为16个像素,以增加特征图的分辨率。在conv5阶段中第一个带有步幅2的卷积层被修改为1。然后遵循trous算法,对于卷积核大小大于1的conv5阶段中的所有卷积层,我们将它们的扩张幅度从1增加到2。跟SSD一样,我们使用DenseNet块生成一些额外的层,以弥补逐渐减少的特征图。

我们在VOC 2007和VOC 2012的训练集上联合训练了模型。对于原始的SSD模型,我们对321×321输入的模型使用32的批处理大小,对于513×513输入的模型使用20的批处理大小,并且对于前40k的迭代开始0.001的学习率。然后,我们在60K迭代时将其降至0.0001,70K降至0.00001。我们将这个训练好的SSD模型作为网络的预训练模型。对于第一阶段,我们将前10k次迭代的学习率设为0.001,然后以0.0001的学习率继续训练10k次迭代。对于第二阶段,我们对整个网络进行微调,对于第一个20k迭代,学习率为0.001,并且在接下来的20k迭代中将其减小到0.0001。

表4-2显示了被选中的VGG结构和DenseNet结构中特征层,深度depth就是网络中被选中层的位置。网络只考虑卷积层和池化层。注意这个网络的第一个预测层的深度很重要,虽然DenseNet包含101层,但我们需要使用密集层来预测较小的对象,只能选择conv3_x块中的最后一层。表4-2表示VGG与DenseNet中被选中用于预测的层所在的位置。
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第4张图片

4.4 实验结果对比与分析

如下图4-7所示,左侧是原始SSD检测出的图像,右侧是改进后的SSD检测出的图像。很显然,改进后的SSD网络对小物体比较敏感,能够对小物体产生很好的拟合。类似的对比见图4-8和图4-9。
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第5张图片
图4-7 SSD(左)和改进SSD(右)的检测效果
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第6张图片
图4-8 检测小目标效果图(1)
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第7张图片
图4-9 检测小目标效果图(2)

表4-3显示了在PASCAL VOC2007数据集上测试的结果。SSD300和SSD512采用最新的SSD扩展数据增强技术,它已经比许多其他最先进的检测器更好。通过将VGGNet替换为DenseNet,如果输入图像很小,则性能相似。例如,SSD-Res类似于SSD-VGG,尽管DenseNet似乎能够更快地收敛(例如,我们只使用VGGNet一半的迭代时间来训练我们的SSD版本)。有趣的是,当我们增加输入图像尺寸时,DenseNet比VGGNet好大约1%。我们推测,DenseNet具有较大的输入图像尺寸是非常重要的,因为它比VGGNet更深,因此对象在某些非常深的层(例如conv5_x)中仍然具有强大的空间信息。更重要的是,我们看到通过添加跳过连接,我们的DSSD321和DSSD513比没有这些额外层的准确率要好1到1.5%。这证明了我们提出的方法的有效性。值得注意的是,即使模型不需要任何手工的上下文区域信息,DSSD513也比尝试包含上下文信息的其他方法好得多。此外,我们的单模型精度比当前最先进的探测器R-FCN提高1%。
基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第8张图片
总之,SSD在测试任务中都显示出对具有特定背景和小对象的类的巨大改进。例如,飞机,船,牛和羊有非常特殊的背景,比如飞机后的天空,牛后的草地等。这表明SSD中小物体检测的弱点可以通过所提出的模型来解决,并且对于具有独特上下文的类来说,性能更好。

为了了解我们添加到SSD中结构的有效性,我们在VOC2007上运行具有不同设置的模型,并在表4-4中记录它们的评估。PM即为Prediction模块。使用321像素作为输入的纯SSD是76.4%mAP。这个数字实际上比VGG模型差。通过添加预测模块,我们可以看到结果正在改进,最好的情况是在预测之前使用一个残差块作为中间层。这个想法是为了避免允许目标函数的梯度直接流入剩余网络的主干。如果在预测之前叠加两个PM,我们看不到太大的差异。

基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法_第9张图片

4.5 本章小结

本章首先阐述了物体检测算法的原理,并重点介绍了SSD检测算法的原理,即在基础网络上加上检测区域建议和边框回归策略。原始SSD的缺点在于预测层太浅,不能很好的拟合小目标。我们将第三章介绍的DenseNet作为SSD的基础网络,并使用“跳跃连接”的方式在预测层上进行深度特征提取。利用DenseNet拥有良好的上下文信息的优势,成功改造了SSD,提高了速度和精度。使其对小目标也有很好的拟合。

你可能感兴趣的:(目标检测)