1. 创新点
论文主要针对模型训练中出现的正负样本不均衡问题,根据困难样本挖掘原理,在原有的损失函数中引入调制因子,将背景部分视为简单样本,减小背景损失在置信损失中的占比,使得模型收敛更快速,模型训练更充分,从而提高了复杂背景下的目标检测精度。同时,通过构建特征金字塔和融合多层特征图的方式,实现对低层特征图的语义信息融合增强,以提高对小目标检测的精度,从而提高整体的检测精度。
2. 实现方法
本文检测模型以传统的基础网络VGG16 为基础,并添加深层卷积网络而构成。前部分浅层网络采用卷积神经网络提取图像特征,包括输入层、卷积层和下采样层。后部分深层网络用卷积层代替原始的全连接层。卷积层尺寸逐层递减,分类和定位回归在多尺度特征图上完成。
2.1 引入调制因子的损失函数
损失函数用来计算模型预测值与真实值的不一致程度。对样本集合(x,y),本文采用了多任务损失函数(Multi-Task Loss Function),可以在损失函数中完成置信度判别和位置回归,两者加权求和,得到最终的损失函数。
图1 损失函数表达式
为解决正负样本不平衡问题,本文首先将所有的待训练先验框进行排序,按照置信度得分情况从大到小排列,取前四分之一为正样本,其余为负样本,以减少负样本比重。同时,在原损失函数中引入调制因子,增加困难样本对参数的贡献值。
2.2 多层特征融合结构
SSD 网络分别在conv4_3 至conv11 的6 层特征图上进行分类回归,即使用conv4_3,conv7,conv8_2,conv9_2,conv10_2 和conv11_2 这6 层特征图进行检测,比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标。
针对SSD 仅利用少量浅层特征图来检测目标,缺少足够的语义信息所导致的小目标检测精度低的问题,本文提取并融合浅层特征图,加强浅层特征图的语义信息,即选取conv4_3 到conv7 之间的特征图进行特征融合,多层特征融合结构图如图2 所示。
图2 多层特征融合结构
实验结果分析
本文采用PASCAL VOC 数据集(VOC2007 和VOC2012) 进行训练和测试,该数据集组成为:目标真值区域,类别标签,包含目标的图像,标注像素类别和标注像素所属的物体。本文采用随机梯度下降法进行模型优化,输入图片大小为,设定初始学习速率为0.001,权值衰减为0.0005,动量为0.9; 卷积核大小为3×3,IOU 设置为0.5。表1 给出了Fast R-CNN、Faster R-CNN、YOLO、YOLO v3、SSD300、DSSD321 和本文算法的目标检测精度。
表1 不同检测算法结果对比
其在检测精度方面较Fast R-CNN、Faster R-CNN、YOLO、YOLOv3 和SSD300 有优势,但是对比基础网络为ResNet-101 的DSSD 算法来说,精度稍有下降。主要原因是,VGGNet 网络较浅,而ResNet-101 是非常深的网络,网络越深,目标特征就能够更好的被提取出来,因此检测精度就越高。但是本文算法预测框数量更少,算法复杂度更低。
图3 各类别检测结果对比
图3给出了不同算法在20 个种类的测试集上的目标检测结果。从实验结果可以看出,本文算法对于bicycle、bus、car、cat、dog、horse、motorbike、train这8 类目标检测效果较好,都已达到了85% 以上。
综合上述表1 和图3 可以看出,本文算法在多数类别上的检测精度均能获得较好表现,尤其是对于bicycle、bus、car、person 等复杂背景下的目标,相比于SSD 网络提升较为明显,mAP 分别提高了5.4%、7.3%、3.5%、4%。但相比DSSD 网络在bird、bottle、cow、table、sofa、TV 这些类别,检测精度稍有下降,可能原因是基础网络的不同而导致的特征提取信息不足。
为验证本文算法对不同大小目标的检测精度,实验中随机选取了100 张图片,其中包含198 个目标,将其分为大、中、小三类。由于该网络的输入图像尺寸为300×300,因此,将图像中的检测目标按照其面积占图像总面积的比例分为三类:目标面积占图像总面积5% 以下的认为是小目标,目标面积占图像面积5% 至25% 的是中等目标,目标面积占图像总面积20% 以上的是大目标。表2 给出了SSD 算法和本文算法的检测结果(其中,A 方法为SSD 算法,B 方法为本文算法。
表2 随机检测结果对比
由上表可知,本文算法对不同尺寸的目标检测精度均有不同程度的提高,尤其是对于小目标的检测率由原来的47.1% 增加到58.3%。