0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于SSD算法的小目标检测方法研究

li1234567890123 来源:li1234567890123 作者:li1234567890123 2022-04-02 16:14 次阅读

摘要:

针对通用目标检测方法在复杂环境下检测小目标时效果不佳、漏检率高等问题,本文对SSD小目标检测算法进行改进。利用训练损失的反馈作为判断条件,结合数据增强提高模型对复杂环境的抗干扰能力,降低小目标的漏检率,在网络中引入注意力机制,增加SENet (Squeeze-and-Excitation)模块,对模型中的特征通道进行权重重分配,对无效的特征权重进行抑制,提升有用的特征权重占比。实验结果表明,相比原SSD算法,改进的SSD算法在不引入过多计算量的情况下,能够有效弥补训练过程中小目标监督不到位的不足,在VOC数据集和工地安全帽佩戴数据集上,精度都得到了明显提升。

1. 引言

目标检测是计算机视觉中最具有挑战性的任务,目的是在图像的复杂背景下找到若干目标,并对每一个目标给出一个精确的目标包围盒并判断包围盒中的目标所属的类别 [1]。深度学习的兴起使得目标检测得到加速发展,准确性和实时性都得到了提升,如Girshick等人提出的R-CNN、Fast R-CNN算法 [2] [3]、Ren等人提出的Faster R-CNN算法 [4]、Joseph等人提出的YOLO算法 [5] 以及Liu等人提出的SSD (Single Shot MultiBox Detector)算法 [6] 等。其中,小目标检测是目标检测领域中一个重要的难点问题,实际应用场景复杂、小目标信息不充分,导致小目标的检测效果始终不是很好。小目标检测因而成为计算机视觉领域中的一项具有巨大挑战性的任务。

上述方法仅对常规的目标检测问题效果较好,但所提取出的特征对小目标的表示能力较差,检测效果不佳。MS COCO数据集中将尺寸小于32 × 32像素的目标定义为小目标 [7],大于32 × 32像素小于96 × 96像素的目标定义为中目标,大于96 × 96像素的目标为大目标。Huang等人 [8] 对现阶段的检测器进行调研发现,现阶段的目标检测系统的精度,在小目标上的精度普遍比大目标低10倍,原因主要是由于样本中的小目标分辨率太低,虽然卷积神经网络的特征提取能力对于大中目标已经足够,但是对于小目标还是力不从心,小目标能提供给模型的信息过少也是制约目标检测发展的瓶颈之一。对此,一系列针对小目标检测的方法应运而生,小目标检测因而成为热点研究领域。

Fu等人 [9] 提出DSSD算法,利用ResNet [10] 替换SSD中的VGG [11] 模型,同时为了减少小目标的漏检率,加入反卷积层(Deconvolution),将图像分为更小的格子,但因为ResNet中引入残差连接等,算法的额外开销较大,比SSD算法的速度略慢。Singh等人 [12] 从训练角度切入,在数据层面思考,对数据集进行分析,发现训练样本中的小目标在待检测的图像中占比较小,于是采用一种多尺度的训练方式——图像的尺度归一化(SNIP),在金字塔模型的每一个尺度上进行训练,高效利用训练数据,检测效果得到显著提升,但是计算成本巨大。Lin等人 [13] 利用特征金字塔网络(FPN)融合模型高低层语义信息,增强模型提取的特征对小目标的表达能力。虽然上述方法都在一定程度上提升了小目标的检测精度,由于网络模型冗余导致的算法实时性不足、模型轻量化导致的精度不够、数据量不平衡导致训练不充分等因素,上述方法在实际场景下的检测效果仍然不理想。

本文基于SSD方法,利用数据增强和注意力机制设计一种小目标检测算法,在增加计算量可近似忽略的前提下,提升检测精度。首先,对训练过程进行优化,采用数据增强的方法加强模型对小目标的监督,以每次迭代过程中的各项目标损失占比为判断依据,确定是否在下次迭代过程中增强输入数据,若在当前迭代中小目标贡献的损失占比小于给定阈值,则下次迭代输入为增强图像,反之输入原图像;此外加入SENet模块,提升有效的特征信息权重,抑制作用较小的特征信息权重。实验结果表明,改进后的SSD算法优于原SSD算法,在实际场景下也能有很好的检测效果。

2. SSD算法

2.1. 网络模型

SSD的主要特点是在不同尺度上进行检测与识别,其网络模型分为基础网络和附加网络,在基础网络的末端添加了几个特征层作为附加网络用于预测不同尺度目标以及包围盒的偏移量和置信度。该算法以VGG-16模型作为特征提取网络并将其全连接层替换为卷积层,网络输入RGB三通道图像,附加网络附加4个卷积层。为提高目标检测精度,SSD算法在不同的尺度上进行检测,如图1所示,图像输入网络后从左至右得到6层不同尺寸的特征图(feature map) Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2,尺寸分别为38 × 38、19 × 19、10 × 10、5 × 5、3 × 3、1 × 1,借鉴Faster RCNN算法中的锚点思想,在特征图上生成不同尺度不同宽高比的先验框,而后通过非极大抑制(NMS)等方法输出最终目标类别和定位结果。

Figure 1. SSD network model

图1. SSD网络模型

2.2. SSD优缺点分析

作为单步检测器,SSD算法以回归的方式进行分类和定位,并结合Faster RCNN中的锚点思想进行预测,其算法中的先验框可以使得模型更快的收敛,降低训练成本。若没有采用锚点,则直接回归预测目标的坐标位置,模型难以收敛且计算成本巨大。同时SSD算法选取了模型中的六个特征图进行多尺度检测,各个卷积层所输出的特征图包含的信息是不同的,深层特征尺寸小,包含的语义信息更丰富,适合检测大目标,而浅层特征尺寸大,细节纹理特征信息更为丰富,对小目标的检测很有帮助,其采用的多尺度检测一定程度上是有利于提升小目标的检测精度的。

虽然SSD采用了多尺度的检测机制,利用VGG-16作为网络模型,通过Conv4_3的大尺度特征图来预测小目标,但是该层离顶层距离仍然较远,一个32 × 32的目标经过卷积后在Conv4_3特征图上大小仅为4 × 4,如此少的像素信息难以对目标进行预测。另一方面,虽然采用了六个特征图进行预测,但是特征与特征之间都是独立的,实际上,模型的底层高分辨率特征由于经过的卷积运算较少,包含更多的纹理和细节信息,但包含的语义信息不足,难以区分目标和背景,而高层低分辨率特征语义信息丰富,但卷积下采样过程中丢失了大量细节信息。同时,浅层特征图中包含大量通道,不同通道对于网络的判断也有差别,有些通道包含的信息更为丰富,有些则不那么重要,SSD算法并没有在通道上进行注意力关注。综上,SSD算法在实际应用场景下,对于小目标的检测效果并不理想。

3. 算法改进

3.1. 数据增强

Mosaic方法 [14] 是由Bochkovskiy等人提出的一种数据增强方法,可以当作是Cutmix [15] 方法的改进版。Cutmix算法对一张图像进行操作,在待增强图像上随机生成一个裁剪框,在裁剪框内填充训练集中其它数据中相应的位置像素,可以提高训练的效率。而Mosaic方法在Cutmix基础上再加入两张图像,如图2所示,采用4张图像进行混合,极大程度地丰富了训练图像的背景以及上下文信息,可以一定程度降低小目标的漏检率,同时4张图像的混合使得mini-batch不需要太大,可降低硬件需求。

Figure 2. Mosaic data enhancement example

图2. Mosaic数据增强示例

3.2. 训练优化

目标在现实生活中其实是随处可见的,比如远距离的交通标志,空中大背景下的小鸟等。MS COCO数据集中设定小于32 × 32大小的目标即为小目标,小目标虽然是很常见的,但其分布却是不可预测的。MS COCO数据集中,有41.43%的目标是小目标,远远高于其他两种尺度的目标。然而,包含小目标的图像只占训练集所有图像的51.82%,而包含大尺度目标和中等尺度目标的图像占比分别为70.07%和82.28%。也就是说,现有的环境下,待检测的大部分目标都是小目标,但是几乎一半的图像是不包含小目标的。这种训练样本的不平衡,也就导致训练的不平衡,严重阻碍了训练过程的推进。因此,考虑结合数据增强的策略从训练过程中去改善这种不平衡。模型在训练过程中大中小目标都是会反馈一定的损失进行优化驱动的,而在这一过程中,小目标所贡献的损失往往偏低,这样一来,训练好的模型对于大中目标的检测效果自然更好,这里提出一种优化方法,根据小目标所贡献的损失占总损失的比例来进行训练优化,如图3所示。假定某次迭代d中,来自小目标贡献的损失占总损失的比例小于给定阈值μ(即表示这次迭代小目标受到的监督不足),则第d +1次迭代采用数据增强后的图像输入,反之,则采用原常规训练图像(此处阈值根据经验设置,经过多次不同阈值的设置对比,取0.1最为合适)。对于目标o,其面积So可以近似于它的包围盒宽高之积ho×wo,S表示第d次迭代中的小目标,MS COCO数据集规定面积小于32 × 32的目标即为小目标,LdSLSd为第d次迭代下小目标的总损失,LdLd为第d次迭代下的总损失,μdSμSd为小目标的损失比。这种优化方法能够损失分布不均匀以及训练样本不平衡的问题。

Figure 3. Training optimization pipeline

图3. 训练优化流程图

3.3. 模型优化

SENet (Squeeze-and-Excitation Networks) [16] 是Hu等人结合注意力机制提出的一种网络结构,Hu等人曾凭借该结构夺得ImageNet2017竞赛图像分类任务冠军。该网络的核心思想在于,通过学习的方式,自动获取网络中每一个特征通道的重要程度,而网络也可以依据这个重要程度去提升有用的特征通道重要性并且抑制对于当前任务用处不大的通道重要性。输入特征X,经过一系列卷积池化操作得到特征通道数为C的特征U。首先对特征U进行压缩(Squeeze)操作,沿着空间维度进行特征压缩,得到通道级的全局特征,这个特征某种程度上具备全局感受野,且输出的维度与输入的特征通道数相匹配,表示在特征通道上响应的全局分布,可以让较浅的层获得更为全面的感受野。而后进行激励(Excitation)操作,学习各个通道之间的关系,通过参数w为每个特征通道生成权重。最后再进行权重的重新分配,完成在通道维度上对于特征的重标定,使得模型对于各个通道的特征更有判别能力。

因此,考虑到SSD算法模型中不同的通道对于小目标的检测也有着不同影响,也可以通过增强有效通道的特征权重,抑制无效通道的特征权重,从而提升SSD算法对于小目标检测的精度。所以选择在Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2层之后加入SE模块对特征图的特征通道进行权重重分配,改进后的结构图如图4所示。

4. 实验

实验平台采用如下配置:Ubuntu18.04操作系统,基于Pytorch1.3框架搭建实验,GPU显卡型号为RTX2080ti,为充分展现实验效果,采用两套数据集,分别为Pascal VOC数据集以及SHWD数据集(工地场景安全帽数据集),其中,为避免产生过拟合等由于数据量不充足造成的问题,选用VOC2007和VOC2012数据集的训练集作为训练集,在VOC2012数据集的测试集上进行测试。SHWD数据集提供了用于安全帽佩戴和人头检测的数据,包括7581张图像,其中9044个佩戴安全帽的样本和111514个正常头部样本。

实验采用VOC2007数据集和VOC2012数据集进行训练,选取目前几个比较流行的目标检测方法进行对比,包括YOLO系列、SSD系列、RCNN系列,可以看出算法的平均精度得到了有效的提高,如表1所示。

Figure 4. Improved network structure diagram

图4. 改进后的网络结构图

Table 1. Comparison of mAP indexes of several target detection algorithms

表1. 几种目标检测算法mAP指标对比

具体各类的精度如表2所示,在VOC2007验证集上进行验证,将本文改进的SSD算法与原算法对比。可以得知,改进后的模型在bird、bottle、plants、chair等不同小目标类别上相比于原SSD算法均有着不同程度的提高。

算法名称 数据集 mAP(%) aero bike bird boat bottle bus car cat chair
SSD 07 + 12 77.6 79.9 85.1 76.1 71.7 54.0 85.6 85.9 87.1 58.6
Ours 07 + 12 80.6 83.8 87.7 79.1 75.2 59.2 88.9 87.7 88.3 64.2
cow table dog horse motorbike person plant ship sofa train tv
SSD 83.6 76.3 85.2 87.3 86.2 79.1 50.3 78.9 77.6 87.5 77.1
Ours 85.0 77.6 86.4 88.6 86.8 81.9 57.9 81.7 82.1 88.7 81.2

Table 2. Comparison of different types of AP indexes

表2. 不同类别的AP指标对比

图5是原SSD算法与本文改进算法的效果对比,可以看出,原SSD算法对于chair、bottle、plant等小尺寸目标检测效果较差,漏检率较高,而改进后的SSD算法一定程度上降低了小目标的漏检率,并且提升了检测小目标的精度。

Figure 5. Comparison of SSD algorithm and improved SSD algorithm

图5. SSD算法效果与改进SSD算法效果对比

除了在标准公共数据集下进行比较,为了进一步探究算法的实际应用有效性,在相同的实验环境下,通过SHWD数据集中的安全帽佩戴进行训练,将训练完成后的模型进行测试,测试指标如表3所示,可以看出改进后的算法在该数据集上的平均精度是要高于SSD算法的,同时在识别安全帽是否佩戴的两种情况下,精度都是要高于原SSD算法的。如图6所示,图6左侧代表改进SSD算法的效果,图6右侧表示原SSD算法效果。由图6可以看出,工地场景下遮挡情况较多,原SSD算法容易因为遮挡而没有检测到相应目标,甚至可能因为环境光线等因素而出现误判,而改进SSD算法在遮挡情况下仍然成功检测到相应目标。

综合上述实验可得,本文提出的改进SSD算法相较改进前的算法,一定程度上降低了小目标的漏检率,同时精度得到有效提高,对于小目标以及遮挡目标的检测效果也更好,在实际的应用场景下如文中选用的工地环境下,也能得到充分应用,具有一定的实用价值。

算法名称 AP (%) mAP(%)
佩戴安全帽 未佩戴安全帽
SSD300 86.5 87.6 87.1
SSD512 87.7 88.5 88.1
Ours 90.6 91.1 90.9

Table 3. Comparison of two methods in construction site

表3. 工地场景下两种方法对比

Figure 6. Comparison of two methods in construction site

图6. 工地场景下两种方法效果对比

5. 结语

本文针对小目标检测效果不佳、漏检率高等问题,对SSD算法进行改进,从小目标的训练损失占比切入,对每次迭代过程中的损失占比进行监督,结合一些数据增强方法增强了小目标的训练效果,在计算量增加成本可以忽略不计的情况下提高了检测效果。并在模型中引入SENet模块,筛选通道间的注意力并学习通道之间的相关性,对每层的特征通道进行权重重分配,最终改进的SSD算法在小目标的检测效果上得到了很大的改善,同时在安全帽佩戴数据集上表现优异,在实际场景下也具备一定的应用价值。未来将继续研究训练过程的优化和网络结构的调整以及从多尺度的方面入手,争求进一步提高精度

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4608

    浏览量

    92852
  • 检测
    +关注

    关注

    5

    文章

    4486

    浏览量

    91452
  • SSD
    SSD
    +关注

    关注

    21

    文章

    2859

    浏览量

    117382
收藏 人收藏

    评论

    相关推荐

    视频目标跟踪从0到1,概念与方法

    导读从目标跟踪的应用场景,底层模型,组件,类型和具体算法几个方面对目标跟踪做了全方面的介绍,非常好的入门文章。在今天的文章中,我们将深入研究视频目标
    的头像 发表于 11-20 01:06 282次阅读
    视频<b class='flag-5'>目标</b>跟踪从0到1,概念与<b class='flag-5'>方法</b>

    在树莓派上部署YOLOv5进行动物目标检测的完整流程

    目标检测在计算机视觉领域中具有重要意义。YOLOv5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其
    的头像 发表于 11-11 10:38 948次阅读
    在树莓派上部署YOLOv5进行动物<b class='flag-5'>目标</b><b class='flag-5'>检测</b>的完整流程

    高校开展RK3588课题研究 只能人工标注练算法

    进行研究开发,是一个不错的选择。这个过程中如何让算法更加精准的识别检测目标成为首要解决的问题。要想让AI算法更能精确的识别
    的头像 发表于 10-23 08:07 229次阅读
    高校开展RK3588课题<b class='flag-5'>研究</b>    只能人工标注练<b class='flag-5'>算法</b>?

    图像分割与目标检测的区别是什么

    图像分割与目标检测是计算机视觉领域的两个重要任务,它们在许多应用场景中都发挥着关键作用。然而,尽管它们在某些方面有相似之处,但它们的目标方法和应用场景有很大的不同。本文将介绍图像分割
    的头像 发表于 07-17 09:53 1301次阅读

    目标检测与识别技术有哪些

    目标检测与识别技术是计算机视觉领域的重要研究方向,广泛应用于安全监控、自动驾驶、医疗诊断、工业自动化等领域。 目标检测与识别技术的基本概念
    的头像 发表于 07-17 09:40 598次阅读

    目标检测与识别技术的关系是什么

    目标检测与识别技术是计算机视觉领域的两个重要研究方向,它们之间存在着密切的联系和相互依赖的关系。 一、目标检测与识别技术的概念
    的头像 发表于 07-17 09:38 591次阅读

    目标检测识别主要应用于哪些方面

    目标检测识别是计算机视觉领域的一个重要研究方向,它主要关注于从图像或视频中识别和定位目标物体。随着计算机视觉技术的不断发展,目标
    的头像 发表于 07-17 09:34 1051次阅读

    慧视小目标识别算法 解决目标检测中的老大难问题

    随着深度学习和人工智能技术的兴起与技术成熟,一大批如FasterR-CNN、RetinaNet、YOLO等可以在工业界使用的目标检测算法已逐步成熟并进入实际应用,大多数场景下的目标检测
    的头像 发表于 07-17 08:29 482次阅读
    慧视小<b class='flag-5'>目标</b>识别<b class='flag-5'>算法</b>   解决<b class='flag-5'>目标</b><b class='flag-5'>检测</b>中的老大难问题

    图像识别算法都有哪些方法

    传统方法和基于深度学习的方法。 传统图像识别算法 1.1 边缘检测 边缘检测是图像识别的基础,它用于检测
    的头像 发表于 07-16 11:14 5534次阅读

    基于深度学习的小目标检测

    在计算机视觉领域,目标检测一直是研究的热点和难点之一。特别是在小目标检测方面,由于小目标在图像中
    的头像 发表于 07-04 17:25 872次阅读

    口罩佩戴检测算法

    口罩佩戴检测算法基于YOLOv5在图像识别检测领域的优异性能,本文研究基于基于YOLOv5的口罩佩自动戴检测方法。首先从网络和真实生活中中寻
    的头像 发表于 07-01 20:20 318次阅读
    口罩佩戴<b class='flag-5'>检测算法</b>

    人员跌倒识别检测算法

    人员跌倒识别检测算法是基于视频的检测方法,通过对目标人体监测,当目标人体出现突然倒地行为时,自动监测并触发报警。人员跌倒识别
    的头像 发表于 06-30 11:47 454次阅读
    人员跌倒识别<b class='flag-5'>检测算法</b>

    深入了解目标检测深度学习算法的技术细节

    本文将讨论目标检测的基本方法(穷尽搜索、R-CNN、FastR-CNN和FasterR-CNN),并尝试理解每个模型的技术细节。为了让经验水平各不相同的读者都能够理解,文章不会使用任何公式来进行讲解
    的头像 发表于 04-30 08:27 339次阅读
    深入了解<b class='flag-5'>目标</b><b class='flag-5'>检测</b>深度学习<b class='flag-5'>算法</b>的技术细节

    深度学习检测目标常用方法

    深度学习的效果在某种意义上是靠大量数据喂出来的,小目标检测的性能同样也可以通过增加训练集中小目标样本的种类和数量来提升。
    发表于 03-18 09:57 715次阅读
    深度学习<b class='flag-5'>检测</b>小<b class='flag-5'>目标</b>常用<b class='flag-5'>方法</b>

    AI驱动的雷达目标检测:前沿技术与实现策略

    传统的雷达目标检测方法,主要围绕雷达回波信号的统计特性进行建模,进而在噪声和杂波的背景下对目标存在与否进行判决,常用的典型算法如似然比
    发表于 03-01 12:26 2826次阅读
    AI驱动的雷达<b class='flag-5'>目标</b><b class='flag-5'>检测</b>:前沿技术与实现策略