FSSD:超越传统的目标检测利器
摘要:本文介绍FSSD(Feature Fusion Single Shot Multibox Detector)这一目标检测算法。它通过添加轻量级特征融合模块改进SSD算法,提升检测精度,尤其在小目标检测上表现出色。实验显示FSSD在PASCAL VOC和MS COCO数据集上超越传统SSD及部分先进算法,且速度较快。研究为目标检测技术发展提供新方向。
关键词:目标检测;FSSD;特征融合;SSD;小目标检测
一、研究背景与相关工作
1.1 目标检测的挑战
目标检测中的尺度变化问题一直是困扰研究者的难题。不同尺度的目标在图像中的表现差异巨大,小目标可能只占据很少的像素,包含的细节信息有限;而大目标则可能占据较大的区域,包含丰富的细节但也增加了背景干扰的复杂性。现有的解决多尺度目标检测的方法各有优劣。例如,将ConvNet应用于不同尺度图像生成特征图(图1(a)),这种方式虽然能获取不同尺度的特征,但计算效率极低;仅选择一个尺度特征图并创建不同尺度锚框的方法(图1(b)),像Faster R-CNN、R-FCN等采用的策略,受固定感受野大小的限制,难以检测过大或过小的目标;自上而下的结构(图1(c)),如FPN、DSSD中使用的方法,虽然在一定程度上有效,但层与层之间的特征融合效率不高,当层数较多时,计算量和时间成本显著增加。(d)使用由卷积神经网络生成的特征金字塔,传统的 SSD 就是其中一个例子。(e)FSSD的特征融合和特征金字塔生成方法。首先将来自不同层、不同尺度的特征连接在一起,随后用于生成一系列金字塔特征。
1.2 基于ConvNets的目标检测器发展历程
受益于深度卷积神经网络的强大能力,目标检测器在精度上取得了显著提升。早期的OverFeat将ConvNet作为特征提取器应用于滑动窗口,开启了基于卷积神经网络的目标检测之路。随后,R-CNN利用选择性搜索或边缘框生成区域提议,再从预训练的ConvNet中提取区域特征,通过SVM进行分类,这种方式虽然精度有所提高,但计算过程繁琐,速度较慢。SPPNet引入空间金字塔池化层,使得分类模块能够重用卷积神经网络的特征,而无需考虑输入图像的分辨率,提高了效率。Fast R-CNN则进一步引入端到端的训练方式,同时使用分类和位置回归损失对卷积神经网络进行训练,大大缩短了训练时间。Faster R-CNN提出区域提议网络(RPN),替代了传统的选择性搜索,能够快速生成候选边界框,实现了实时目标检测。R-FCN通过位置敏感的ROI池化(PSROI)改进了Faster R-CNN,在精度和速度上都有进一步提升。此外,可变形卷积网络(Deformable Convolutional Network)通过可变形卷积和可变形PSROI进一步增强了R-FCN的精度。
除了基于区域的检测器,单阶段目标检测器也得到了快速发展。YOLO将输入图像划分为多个网格,对每个网格进行定位和分类,实现了高速的目标检测,但精度相对较低。YOLOv2通过去除全连接层并采用锚框改进了YOLO,在保持速度的同时提高了精度。SSD则是另一种高效的单阶段目标检测器,它通过添加一系列逐渐变小的卷积层生成金字塔特征图,并根据各层感受野大小设置相应的锚框大小,直接从平面卷积神经网络特征图中检测目标,实现了实时检测且速度优于大多数其他算法。为了进一步提高精度,DSSD在SSD+ResNet-101的基础上添加反卷积层引入大尺度上下文信息,但模型复杂度增加导致速度变慢。RSSD通过彩虹连接充分利用特征金字塔中各层之间的关系,在略微降低速度的情况下提高了精度。DSOD则研究从头开始训练目标检测器,并设计了DenseNet架构提高参数效率。
1.3 特征融合在算法中的应用
在计算机视觉任务中,许多算法尝试使用多层特征来提高性能。HyperNet、Parsenet和ION在预测结果之前连接多层特征;FCN、U-Net、堆叠沙漏网络使用跳跃连接将低级和高级特征图关联起来,充分利用综合信息;SharpeMask和FPN引入自上而下的结构,将不同层次的特征组合在一起以提升性能。这些方法都证明了特征融合在提升算法性能方面的重要性,也为FSSD算法的特征融合模块设计提供了参考和借鉴。
二、FSSD算法详解
2.1 特征融合模块设计
传统的SSD将不同层次的特征视为同一层次,直接用于生成目标检测结果,这导致其无法充分捕获局部细节特征和全局语义特征。为了解决这一问题,FSSD提出了一种轻量级且高效的特征融合模块。在设计该模块时,需要考虑多个关键因素:
- 融合层范围(C):在基于VGG16的传统SSD300中,作者选择了conv4_3、fc7以及新添加的conv6_2、conv7_2、conv8_2、conv9_2层来生成用于目标检测的特征。但FSSD认为空间尺寸小于10×10的特征图可融合的信息较少,因此将层的范围设置为conv3_3、conv4_3、fc7和conv7_2(将conv6_2的步长设置为1,使conv7_2的特征图尺寸为10×10)。后续实验发现,conv3_3对精度没有提升作用,因此最终不融合这一层。
- 融合方式( ϕ f \phi_{f} ϕf):融合不同特征图主要有连接和逐元素相加两种方式。逐元素相加要求特征图具有相同的尺寸,需要将特征图转换为相同的通道数,这限制了融合的灵活性。而连接方式则更加灵活,且实验结果表明,连接比逐元素相加能得到更好的结果,因此FSSD使用连接来组合特征。
- 特征处理(T):为了简单有效地连接不同尺度的特征,FSSD首先对每个源层应用1×1卷积来降低特征维度。然后将conv4_3的特征图尺寸设置为基本特征图尺寸,最小特征步长为8。对于conv3_3生成的特征图,通过步长为2的2×2最大池化将其下采样到38×38;对于尺寸小于38×38的特征图,则使用双线性插值将其调整为与conv4_3相同的尺寸,使所有特征在空间维度上具有相同的大小。
- 金字塔特征生成( ϕ p \phi_{p} ϕp):FSSD沿用传统SSD的方式,使用金字塔特征图来生成目标检测结果。通过测试三种不同的结构并比较结果,选择由几个简单模块组成的结构来提取特征金字塔。这种结构在实验中表现出了较好的性能。
2.2 训练策略
FSSD的训练有两种主要方法。一种是采用训练好的SSD模型作为预训练模型,将新特征融合模块的学习率设置为其他参数的两倍。另一种方法与传统SSD算法相同。实验表明,这两种方法在最终结果上差异不大,但从VGG16开始训练FSSD比从SSD模型开始训练的结果略好。不过,从SSD模型训练FSSD比从预训练的VGGNet模型收敛得更快。此外,在相同训练超参数的情况下,FSSD比传统SSD收敛得更快。为了在有限的时间内测试算法,默认使用第一种方法训练FSSD。
训练目标与SSD相同,使用中心编码类型对边界框进行编码,并与SSD具有相同的匹配策略、难负样本挖掘策略和数据增强方法。
三、实验与结果分析
3.1 实验设置
为了公平地比较FSSD与传统SSD,所有实验均基于像SSD预处理过的VGG16。实验数据集采用PASCAL VOC 2007、2012和MS COCO。在VOC 2007和VOC 2012中,如果预测的边界框与真实边界框的交并比(IOU)高于0.5,则认为预测正确,采用平均精度均值(mAP)作为评估检测性能的指标。对于MS COCO,将结果上传到评估服务器以获取性能分析。所有实验均基于Caffe版本的SSD实现。
3.2 PASCAL VOC2007上的消融研究
- 融合层范围的影响:实验比较了不同融合层的FSSD在PASCAL VOC2007测试集上的mAP。当融合所有特征图(conv3_3、conv4_3、fc7和conv7_2)时,mAP为78.6%;去除conv3_3后,mAP提高到78.8%,表明conv3_3的下采样特征图对最终性能没有益处;而保留conv7_2则对提升精度有帮助。
- 融合方式的影响:使用连接方式融合特征可获得78.6%的mAP,而逐元素相加只能达到76.3%,连接方式比逐元素相加有2.3个百分点的显著优势。
- 特征值归一化的影响:在连接过程之后添加批量归一化层对特征图进行重新缩放,结果表明这可以使mAP提高约0.7%。
- 金字塔特征提取器结构的影响:比较了三种不同的金字塔特征提取器结构,结果表明由几个简单模块组成且不直接使用融合特征进行预测的结构(图3(b))比其他两种设计略好。
3.3 PASCAL VOC上的结果
- FSSD300在PASCAL VOC2007上的表现:使用VOC 2007训练验证集和VOC2012训练验证集训练FSSD300,在两块英伟达1080Ti GPU上以32的批量大小训练120k次迭代。初始学习率设为0.001,在80k、100k和120k步时除以10,权重衰减设为0.0005,采用带动量0.9的随机梯度下降(SGD)算法优化,由在ImageNet上预训练良好的VGG16模型初始化。FSSD300在VOC2007测试集上可以达到78.8%的mAP,相比传统的SSD300提升了1.1个百分点。以COCO作为训练数据,FSSD300的性能可以进一步提升到82.7%,比DSOD高1%,比SSD300高1.5%。
- FSSD512在PASCAL VOC2007上的表现:FSSD512也将SSD512的mAP从79.8%提升到了80.9%,略高于RSSD512。虽然DSSD512在精度方面优于FSSD512,但FSSD512比DSSD512速度快得多。
- FSSD在PASCAL VOC2012上的表现:使用VOC 2012训练验证集、VOC 2007训练验证集和MSCOCO训练FSSD,并在VOC2012测试集上进行测试。FSSD300使用COCO数据训练可以达到82.0%的mAP,比传统的SSD(79.3%)高2.7个百分点;FSSD512可以达到84.2%的mAP,比传统的SSD(82.2%)高2个百分点,在VOC2012排行榜的所有单阶段目标检测器中排名第一。
3.4 MS COCO上的结果
在MS COCO数据集上,FSSD300在test-dev集上达到27.1%的mAP,大幅高于SSD300*(25.1%)。尽管FSSD表现不如DSOD和DSSD,但与同样基于VGGNet的其他算法(如Faster R-CNN和ION)相比,具有最高的精度。FSSD512达到31.8%的mAP,比传统的SSD(28.8%)高出3个百分点,且在小目标上的mAP仍然高于DSSD513,证明了FSSD的特征融合模块在小目标检测方面比DSSD的FPN模块更强大。
3.5 速度分析
FSSD在单个1080Ti GPU上处理300×300的输入图像时,速度可以达到每秒65.8帧(FPS)。虽然FSSD在SSD模型的基础上添加了额外的层,大约多消耗25%的时间,但与DSSD和DSOD相比,仍然快得多,同时对SSD的性能提升程度大致相同。在保持有竞争力的精度的同时,FSSD比大多数目标检测算法速度更快。
3.6 性能提升分析
FSSD在性能上优于传统SSD,主要体现在两个方面。一方面,FSSD降低了重复检测一个物体的多个部分,或者将多个物体误合并为单个物体的概率;另一方面,FSSD在小目标检测上表现更好。小目标在网络中激活区域小,位置信息易丢失,且识别更依赖上下文。SSD仅从浅层检测小目标,感受野小,难以获取大的上下文信息,导致小目标检测性能差。而FSSD得益于特征融合模块,可以综合观察所有物体,检测出更多小目标。
四、总结
FSSD通过引入轻量级且高效的特征融合模块,成功改进了传统的SSD算法。在PASCAL VOC和MS COCO数据集上的实验表明,FSSD在精度和速度方面都取得了优异的成绩,超越了传统的SSD以及部分先进的目标检测算法。特别是在小目标检测上,FSSD展现出了显著的优势。