张 艳,张明路,吕晓玲,郭 策,蒋志宏
1.河北工业大学 机械工程学院,天津 300401
2.北京理工大学 机电工程学院,北京 100081
计算机视觉技术的蓬勃发展,使目标检测成为该领域重点研究内容之一,也是其他视觉任务的基石。随着深度学习的深入研究,基于卷积神经网络的目标检测算法也得到了长足进展,特别是面向大、中目标的检测算法,基本上满足各种场景下的需求。由于小目标在现实生活中也是大量存在并且具有着广泛的使用前景,例如:在遥感图像处理[1]、无人机导航[2]、自动驾驶[3]、医学诊断[4],人脸识别[5]等多个应用领域中发挥了巨大作用。小目标本身尺度小在图像中所含信息量较少,容易造成目标模糊、细节特征不明显,从而制约着小目标检测性能的进一步发展。
基于深度学习的小目标检测方法,是在双阶和单阶算法基础上加以完善的。双阶段方法将检测问题分为两步走,首先生成的是候选区域(region proposals),随后对候选区域分类(通常还需对位置进行细化),双阶段算法流程图如图1所示。从2014年至今以R-CNN[6]算法为开端,在对深度学习和计算机视觉的不断研究下,又涌现出Fast R-CNN[7]、Faster R-CNN[8]、SPPNet[9]等多个双阶算法[10-12],这些双阶算法在前期都被直接用于小目标检测上。由于双阶算法需先筛选出一些可能存在的候选区域,然后针对每个候选区域,进行目标特征提取,效率相对较低,无法满足实时性要求。而单阶段与双阶段算法目标检测流程有所不同,如图2所示,可以进行端到端检测,无候选区分类,运行速度更快,但是精度略低。常见的单阶段目标检测算法包括YOLO(you only look once)系列[13-16]和SSD(single shot multi-box detector)系列[17-21]。因此人们根据双阶算法和单阶段算法的优缺点进行了诸多改进,综合提升小目标的检测性能。例如:Qi等人采用场景缩小技术并通过目标区域定位和Faster R-CNN网络构造分层窄化网络,以减少检测时的搜索时间[22]。Yin等人通过添加图像级和实例级域分类器和一致性损失分量,解决训练样本和实际样本之间分布不一致导致域偏移问题,并在RPN网络中使用多尺度训练方式,以提高模型的性能[23]。Wu等人提出了基于ResNet101主干的修正SC卷积的SCMask R-CNN模型,该模型可以获得更多的判别性特征信息,并添加一组具有特定大小的膨胀卷积来改善实例分割效果[24]。Hu等人将显著性映射引入YOLOv3中,获得更大的IOU值[25]。Wang等人对YOLOV4进行修剪,引入一个扩展卷积层[26]。Gai等人[27]在YOLOv4主干网络CSPDarknet53的基础上增加网络,并结合DenseNet层间密度将先验框改为适合小目标果实樱桃的标记框。Wang等人[28]在SSD网络架构上设计了一个动态区域放大网络框架。Jia等人[29]在SSD的基础上增加了中心损失函数以更好地解决类内差大于类间差异的情况。Bai等人[30]结合SSD算法中目标帧推荐策略和帧回归算法。以上这些方法无论是在双阶段还是单阶段算法的基础进行完善,都与当时相对流行的方法进行了对比,在检测精度和速度上取得了成效。
图1 双阶段算法流程Fig.1 Two-stage algorithm flow
图2 单阶段算法流程Fig.2 One-stage algorithm flow
然而目标检测作为计算机视觉领域重要的研究对象之一,近年来也发表了一些优秀的综述文章。Zhou等人[31]共收录了近400篇与目标检测相关的论文,其中检测器、目标检测数据集、指标、检测系统、加速技术和检测方法等内容具有里程碑意义,并介绍了过去20多年目标检测的主要发展,但是针对小目标检测的相关方法甚少。Tong等人[32]从5个方面阐述小目检测,在常用数据集上对当前经典的检测方法进行实验,比较分析检测算法的优缺点。Chen等人[33]和Liu等人[34]都是从4个研究领域对小目标检测算法做了总结,并在数据集上进行性能测试。也从4个研究领域介绍了基于深度学习的小目标检测技术。文献[31-34]虽然从多个方面对小目检测方法进行阐述,且结合实际情况提出了未来的发展建议,重点不在小目标定义、重难点分析及性能评估等方面。此外,国内也有对小目标检测领域的总结性文献,并取得一定成效[35-40]。受这些综述的启发,在其基础上进行了系统而深入的分析、总结。
在不同场景下小目标定义有着不同的解释,目前小目标定义包括两种[41]:一种是绝对尺寸定义,从目标绝对像素大小对小目标定义。以物体检测范畴的常用数据集COCO物体定义为例,图中目标低于32×32像素的物体为绝对小目标;从目标与图像的相对比对小目标进行定义,目标物体小于图像大小的10%甚至更小是相对尺寸小。图3(a)为绝对尺寸定义下小目标示例,图3(b)为相对尺寸定义下小目标示例。
图3 小目标示例Fig.3 Small target example
COCO数据集作为评价目标检测性能的常用数据集,共有80个类别的物体,超过11万张图片,包含大量小目标。图4为目前主流算法在COCO数据集上的表现情况,其中APS、APM、APL分别为小、中、大目标检测的精确度。从图4可以看出,小目标检测的精度相比于中、大目标严重不足。这导致小目标语义识别、语义分割、目标跟踪等后续高级任务面临诸多困难。因此,小目标检测精度不足是目标检测领域当前面临的关键性挑战。
图4 不同尺寸目标在COCO数据集上的表现Fig.4 Representation of different size targets on COCO datasets
通过以上对小目标定义以及不同尺寸目标在最通用的COCO数据集上的表现,可知小目标像素在图像中占比少,存在覆盖域小、包含信息少等问题。本文对造成这些问题的原因及困难进行分析总结。
(1)特征信息不足。在图像中小目标相对于大、中目标相比都存在分辨率低、图像模糊等问题。针对这种情况基于深度学习的目标检测算法通常会搭建数十层甚至上百层的网络,进行大量的下采样及池化操作,图片会在原有像素的基础上被不断压缩,使得原图像中的特征信息被提取得愈加减少。或者是通过浅层网络直接进行回归预测会导致特征提取不充分,回归效果差,这两种方式都无法最大化得到小目标特征信息,最终导致难以检测。
(2)特定数据集欠缺。COCO数据集被作为小目标检测算法的常用数据集,其中有52.3%的照片包含小目标,大、中目标所占比例分别为83.0%和70.7%。大、中目标检测时会关联更多的锚点框,在交并比大于0.5的限制下,训练过程会丢失更多小目标,同时大、中目标数量较多,且和小目标的尺寸差异较大,神经网络难以适应不同的目标尺寸,导致小目标检测精度不足。因此,没有适合小目标检测研究的数据集成为难点之一。
(3)小目标聚集。有多个小目标同时出现在视野中,易发生扎堆聚集的现象。若是同类别小目标聚集,在检测过程中边界预测框会出现多个重叠,也会被过滤掉,导致会被重检和漏检;若是多种类别的小目标聚集,经过神经网络多次采样、卷积,导致在特征提取时变成一个点,无法区分不同的目标,检测准确性急速下降。此外,由于小目标的聚合,模型难以收敛由于边界框的重叠。
(4)损失函数不平衡。深度学习进行目标检测,需利用损失函数进行梯度回归对参数优化,而当前损失函数大多是针对大、中目标所设计,采用位置误差和分类误差,部分算法增加了交并比误差。在进行回归训练时这些误差并未考虑到小目标样本情况,导致在较多应用场景中小目标出现检测困难的情况。
(5)网络结构原因。现有的目标检测算法框架都是为了大、中目标的检测性能设计的。针对小目标的设计少之又少,再加上小目标本身的特点,这些原因导致现有算法在小目标检测上表现效果低于人们的期望值。网络检测器仍以锚框为主,用来确定在预设的子窗口或锚点框内是否存在目标。但是,上述方法都必然地要求对特定的数据集设计甚至优化滑窗或锚点框等超参数,因此增加了训练复杂度并影响了检测器的通用性。
(6)通用性欠缺。小目标检测来源于特定应用场景,例如遥感图像中对舰船、无人机对地面人/物、自动驾驶汽车对远处行人/车辆、医学影像中对微动脉瘤,人脸识别中对远距离人脸、工业加工中电子零部件等。现有算法大多基于常规目标设计,对于特定的复杂多变的场景无法具备良好的迁移能力,通用性不足限制了算法在小目标检测场景中的应用。
数据增强是指利用有限的数据来实现更多的数据的价值。由于现有数据集小目标数量很少,所以学者采用数据增强方法增强训练集,以得到适当的训练样本,从而减少模型对参数的依赖,提升模型泛化能力和鲁棒性。数据增强一般可分为有监督和无监督两种方法。其中有监督数据增强主要包括单样本和多样本数据增强方法,无监督数据增强则可分为生成新数据和学习增强策略两个方向,数据增强的特点对比如表1[16,42-52]。
表1 相关数据增强方法对比Table 1 Comparison of related data augmentation methods
小目标在特征提取时信息过少,相比于大、中目标,匹配锚点框训练效果甚微,影响小目标检测精度。常规的几何变换等单样本数据增强方法,只能提升算法对不同场景的适应性,无法改善小目标与大、中目标检测不平衡问题。因此,需采用多种数据增强方法结合来改善训练效果,针对性解决模型应用问题,提升算法性能。例如利用Mosaic方法可提高模型对小目标识别能力;多样本数据增强比单样本更能提升图像多样性和检测精度。因此多样本数据增强目前还是被研究的重点。同时在无监督数据增强中,生成新数据中GAN网络和学习增强网络也备受关注。由于是生成网络和判别网络不断博弈过程,使得GAN的处理速度相比有监督的要慢,但是生成的图像质量却很高。AutoAugment方法与GAN面临相同的问题,对图像质量有保障,但时间较慢,文献[49-52]都是在保证增强效果与AutoAugment相近,以提高训练、搜索时间。
除了表1中提到的常用的方法,很多学者也会以这些为基础,提出适用于他们所研究背景下的其他增强方法,如Kisantal等人[53]将难以检测到的小目标在图像中复制粘贴并进行姿态角度变换,采用过采样(oversampling)方式提高小目标检测精度,完善了小目标在图像中占比较少问题。与MS COCO上的方法相比,在小目标检测上完成了7.1%的精度提升。Chen等人[54]提出了RRNet算法,如图5所示,用自适应增强的策略将无人机捕获的图像送入预训练的语义分割网络中,利用侵蚀算法(eroding algorithm)和中值滤波器过滤噪声,最终抽取一个有效位置来放置被增强物体,以达到数据增强目的。为了根据训练情况进行自适应调整,Chen等人[55]提出sticher将损失函数中小目标损失的比例作为反馈,小目标损失占比过少时,在下一次迭代训练中采用图片拼接方式提高小目标训练效果。Bochkovskiy等人提出YOLOv4算法中的mosaic方法,采用几个照片拼接进行数据增强,区别在于YOLOv4采用不同尺度照片进行拼接。不同应用场景往往需要不同的专用数据增强方法,因此谷歌团队的Zoph等人[56]提出基于学习策略的数据增强手段。定义一系列子策略集和多个图像操作变换,将数据增强手段的选择融入训练中,达到自动调整适应。
图5 RRNet中自适应增强策略Fig.5 Adaptive enhancement strategy in RRNet
数据增强方法在一定程度上解决了小目标数据集小、可定性地增加目标信息量等问题,使得模型的泛化能力和鲁棒性也得以提升。有监督的数据增强方法经过近几年的研究相对较完善,特别是多样本增强方法,将多种增强方法有效结合起来,以提高模型的泛化能力和检测性能,是现在数据增强的主要方法。而无监督数据增强方法在现阶段仍处于不断研究的过程。主要是由于有监督数据增强方法操作简单,耗时少;而无监督数据增强网络结构复杂,在训练过程中卷积次数多,计算繁琐,耗时长。这些增强方式的应用不当除了增加计算量还会加入新的噪声,给算法应用带来挑战。
小目标与正常目标比可用的像素少,特征不明显难以提取。随着网络层数的改变,小目标的特征信息与位置信息也在逐层丢失,难以检测。特征融合是将图片特征提取过程中的低层条纹、外部轮廓、像素分布等细节信息与高层提取到的抽象语义信息相融合,多尺度特征融合是指通过自顶向下的多次上采样融合,最终形成包含细粒度表达和抽象语义表达的特征图,提高小目标检测效果。多尺度特征融合网络结构如图6所示。
图6 多尺度特征融合网络结构Fig.6 Multi-scale feature fusion network structure
为了减少小目标本身特性给算法带来的负面影响以获得更好的特征融合效果,不少研究者在检测器架构上加以优化,常用检测器是利用特征金字塔来检测不同尺寸的物体,其中FPN就是构建特征金字塔最具有代表性的结构构件[57]。将不同尺度的特征进行融合作为预测网络的输入。图7为FPN结构的示意图,图像经过自下向上的特征提取之后,再进行自上向下的特征融合结构,最后送入预测模块输出结果。很多学者对FPN网络进行改进,使检测器取得更好的效果。Guo等人根据FPN的设计缺陷导致多尺度特征利用不足,设计了全新的特征金字塔结构AugFPN,并在RCNN中应用,结果表明平均精度有了提高[58]。Ghiasi等人在一个覆盖任何交叉尺度连接的可扩展搜索空间中,通过神经网络结构搜索找到了一种全新的特征金字塔结构NAS-FPN,从顶向下和自下而上的连接组合而成,能够跨范围地融合特征,在COCO数据集上得到了很好的验证[59]。Luo等人受亚像素的启发利用原始通道信息进行跨尺度输出,提出CE-FPN结构,并在MS COCO得到了比FPS更好的性能[60]。Kim等人提出并行FPN网络,通过增加网络宽度来构建,提升小目标检测效果[61]。Zhao等人提出自顶向下和自底向上的特征金字塔网络(TDBU-FPN),该网络结合了多尺度特征和多纵横比锚定生成,在数据集上的精度和速度的表现也有了一定提升[62]。
图7 FPN结构Fig.7 FPN structure
针对小目容易受环境干扰问题,后续人们对金字塔网络结构的研究主要是与single shot detector(SSD)模型结合。Li等人[63]将FPN结构与SSD算法相融合,在2017年提出了feature fusion SSD(FSSD)算法,将不同尺度特征重新调整至相同大小,再按通道拼接,实现不同尺度的特征融合。Fu等人[64]提出了deconvolutional SSD(DSSD)算法,DSSD将SSD的VGG网络用残差网络进行了替换,如图8所示,不同于通道叠加,利用反卷积层和原有特征层相乘的方式实现了特征融合。李文涛等人[65]提出一种基于SSD的多尺度通道注意力融合网络的小目标检测算法,针对小目标特征不明显,设计了基于K领域的局部通道注意力模块,可重新对每个通道的权重进行分配以达到最佳的特征学习效果;然后在卷积神经网络中构建Bottleneck模块,可更有效地把信息融合起来,再利用网络的高低层特征进行多尺度检测,可提高小目标检测的精度。陈欣等人[66]改进了多尺度特征融合SSD方法,除了丰富语义信息,增强小目标特征,还引入了注意力模块减少背景干扰,提升了检测精度,降低漏检率。李晖晖等人[67]提出了基于串行修正线性单元和FPN改进的SSD舰船目标检测算法,提升浅层特征的传递效率,结果表明在舰船小目标的检测精度有10%的提升。赵彤等人[68]利用长短记忆(LSTM)网络改进FPN架构,并与SSD融合,建立一种新的特征融合网络MSSD(memory SSD),算法在Pascal VOC数据集上取得了比较好的实验结果。李宝奇等人[69]针对SSD自带的特征提取网络(OAFEN)中的stride操作产生的小目标信息损失和串联结构带来的多尺度特征之间冗余度较大的情况,提出使用可分离空洞卷积,同时设计了一个包含三个独立子网络的并行附加特征提取网络(PAFEN),使得在SSD网络架构内,PAFEN检测时间和速度均比OAFEN效果好,也在其他的网络架构中进行实验,进一步说明了PAFEN特征提取网络比OAFEN在小目标检测上性能更好。梁延禹等人[70]提出一种多尺度非局部注意力网络方法,在浅层利用非局部通道注意力模块将全局信息集成,不仅可以大大提高小目标检测准确率,还可使模型更具实时性。Meng等人[71]采用FPN的MobileNet-SSD模型以提高检测精度和速度。Qu等人[72]利用FPN网络提出扩张卷积和特征融合的SSD网络,可以提高小物体检测精度。Ren等人[73]使用精简后的FPN网络结构和改进的SSD模型,平衡小目标检测的速度和精度。Kong等人[74]在SSD模型上使用新的FPN架构,能够在全局和局部的不同空间和尺度上提取目标特征,在进行检测。Zhang等人[75]通过语义分割和全局激活模块,减弱浅层对小目标性能的影响。
图8 DSSD模块Fig.8 DSSD module
最近学者们对特征融合这一方法进行了新的研究,如Xue等人[76]针对小目标在多次卷积后信息易丢失,便在F-CNN网络结构上提出一种改进的小目标检测方法,不仅增强了多尺度特征还融合了它们之间的上下文语义信息。该算法经过一系列的上采样和融合有效提高了检测精度。但是训练一个适用于各种尺度物体的模型仍需要进一步研究。Nayan等人[77]也是针对小目标信息易丢失,引入了一种实时检测算法,该算法采用上采样和跳连接,在学习任务中提取不同卷积级别的多尺度特征,从而在检测小对象方面取得了显著的性能。Deng等人[78]提出一种扩展特征金字塔网络(DFPN),该网络中有一个专门检测小目标的超高分辨率金字塔。设计了一个新模块-特征纹理转移(FTT),用于分辨特征,同时获得更可信的区域细节;此外还设计了平衡损失函数,除了可提升检测准确率,还在计算和存储方面也是高效的。Qi等人[79]先提出一种自适用空间并行卷积模块(ASPConv),用于提取小目标的多尺度局部上下文信息,增强对目标的空间信息;其次,设计一个快速多尺度融合模块,将该模块与ASPConv模块输出的丰富空间信息有效集成。拥有丰富语义信息的低分辨率特征能够有效映射到高分辨率空间。通过将多尺度特征地图融合,可以形成具有丰富空间与语义信息的高分辨率特征地图,有利于小目标检测。由于该方法在实验过程中取得良好的效果,可逐渐推广到搜救、智能驾驶等多种小目标检测场景中。
上述多尺度特征融合方式,不但考虑到了低层条纹、外部轮廓、像素分布等细节信息还兼顾了高层获取到的抽象语义信息,这样有利于提高小目标检测的性能。在提高性能的同时也增加了额外的工作量尤其是计算量和存储空间,在特征融合过程中难以避免其他问题干扰,如:噪声等,而这些问题也造成多尺度架构下小目标检测性能下降。
锚框在目标检测中位置举足轻重,目前大部分目标检测算法是基于锚点框预测。但锚点框从最初模型设计都是为了大、中目标的检测,忽视了小目标的检测。因此很多学者在原有锚点框基础上进行了研究,Zhu等人[80]发现目前的锚点设计无法保证小目标与锚点框之间高度重叠,增加了训练难度。针对人脸识别中小人脸的问题,提出了增加移位锚点的方法来提高小目标检测精度。添加额外的支持性锚点框即移位锚点框,而不是以滑动窗口位置为中心。图9(a)和图9(b)分别为斜向移位方式和直线移位方式。这些移位的锚点与中心锚点共享相同的特征表示,导致小目标检测的平均交并比(intersection over union,IOU)显著提高。固定的锚点框大小并不适合多样性特征的小目标检测任务,因此需反复设计锚点框长宽比,延长设计时间。针对这一现象,Wang等人[81]提出了根据不同形状的特征提取模块生成锚点机制,使锚点框形状可变且稀疏。这一机制将锚点的生成分解为形状预测和位置预测,可以看成是一个条件分布。这一方法使锚点框的生成通过训练的方式来实现。Li等人[82]提出了Pixel-Anchor框架,通过特征共享和锚级注意机制将语义分割和SSD结合到一个网络中,用于更好地预测尺度和长宽比变换较大的目标,有效缓和了目标检测时小目标特征太稀疏的问题。王毓玮等人[83]利用改进的K-Means算法设计适合舰船目标形状特点的先验锚点框,优化NMS算法以剔除重叠区域的舰船候选框,改善了舰船距离较近导致的漏检问题。周慧等人[84]提出自适应锚点框来优化目标检测网络。
图9 移位锚点框示例Fig.9 Example of shifting anchor box
将锚点框调整为关键点定位方式也是当前的一个重要研究方向。Law等人[85]提出了一种关键点检测新思路,把检测目标框生成问题处理成左上角点和右下角点的一对关键点的目标检测问题,利用角点池化技术简化预测过程,也可解决之前固定锚点预测的不灵活性。但该方法易将不是同一个物体的两个角点看成一个目标框,造成误检。为克服这一问题,Duan等人[86]发现目标框正确时中心区域能够检测到目标中心点的概率会很高,反之亦然。因此提出了Centernet网络,首先使用左上和右下两个角点生成初始目标框,依次定义中心区域,如果目标框中心区域包含中心点则保存,反之则删除。图10为Centernet的网络结构,经过对角点预测和中心点预测两条路径,最终在COCO数据集上获得47%的精度,其中小目标检测精度为28.9%。
图10 Centernet网络结构Fig.10 Centernet structure
在最新研究成果中,Dong等人[87]提出了新的向心偏移角匹配方法,向心力能够预测角点和向心移动位置,并匹配移动结果对齐的角点,同时引入一种能够更好地预测向心偏移的交叉星形可变形卷积模块。在MS COCO上精度提高到了48%,超越了目前最先进的关键点检测算法。Zhang等人[88]将锚点框检测和关键点检测两种方法进行融合,提出了一种自适应训练样本选择方法,按照目标统计特征自动选择正样本和负样本。改善锚点和无锚点探测器性能,弥补了两者之间的差距,较好地检测出了小目标。
通过调整不同的anchor,使其尽量地覆盖物体,也可根据各种任务设置不同的anchor尺度范围;物体的定位都是利用anchor回归实现的,仅计算偏移量就减少了计算量,降低复杂度;而anchor需要人为设定大量的参数,且离散的anchor尺度设置会使一些物体无法很好地匹配到anchor,进而造成遗漏,因此解决这些问题是继续深入研究的内容。
通过级联等方式搭建卷积神经网络可有助于提高网络性能,提取到更多小目标特征信息。Cai等人[89]提出了级联区域卷积神经网络(Cascade RCNN)算法。图11为Cascade RCNN网络示意图,级联几个卷积神经网络来更好地获得图像的语义信息,其中H表示网络输出,C表示分类,B表示定位框。与普通级联不同的是,Cascade RCNN是由一系列的检测网络组成,每个检测网络都由不同IOU阈值的正负样本训练得到,将前一检测网络得到的结果送入到下一检测网络,随着训练的不断进行,IOU阈值不断增加,网络性能随之优化。通过这一方法在MS COCO数据集上获得较高的小目标检测精度。汪跃东[90]为减轻行人检测任务中分类和回归不平衡的现象,在Cascade RCNN基础上将级联的回归器拟合的偏移量改进为与类别置信度相关的动态偏移量。Han[91]提出一种基于上下文信息的改进型基于级联区域的卷积神经网络,通过内部级联的多阈值预测网络实现多尺度、多阶段的预测。Shi等人[92]提出了一种基于域自适应快反网络的方法,称为自适应阈值级联快反网络,级联策略提高了边界质量,解决了Faster RCNN的过拟合和不匹配的问题。刘艳萍等人[93]在Cascade RCNN基础上,为降低复杂路况下小尺寸行人漏检率,将浅层特征与深层特征融合,提高深层信息的利用率,为了将浅层信息直接向上进行传递,并提高浅层空间的利用率,增加一条浅层到深层的通道;提高算法分类和回归的边界框质量。李松江等人[94]为了解决车辆目标检测中小目标漏检的问题,也是在Cascade RCNN基础上,改进特征金字塔将浅层信息加入到深层中,并引入多支路空洞卷积,减少特征丢失,增强目标特征。Zhang等人[95]采用加深神经网络的方法优化小目标检测性能,提出了多任务级联的目标检测框架,设计了三组神经网络进行级联,将特征提取网络按从简单到复杂的顺序分成三个阶段,利用简单的特征提取网络快速生成候选框,利用复杂的网络来去掉实际不包含人脸的候选框,最终给出五个脸部标志点的位置。
图11 Cascade RCNN网络结构Fig.11 Cascade RCNN structure
除了级联的方式,直接增加网络深度也是常见的方式,但是由于网络过深,会出现准确度由上升转为下降的退化现象。微软研究院的He等人[96]提出Resnet结构解决了这一问题,通过使用残差单元,成功训练了152层的残差单元,取得了ILSVRC 2015比赛的冠军。Resent采用恒等映射将上一层传来的输入传递到输出,解决了退化现象的影响。后续很多目标检测方法[97-99]都将残差模块应用到自己的网络结构中,保证深层网络信息传递不发生丢失。但是这种深层次卷积神经网络结构会明显增加推理时间,Yuan等人[100]提出的HS-ResNet在Resnet基础上进行了多组卷积分解,将前一组卷积得到的特征图,部分拼接到下一组特征图,利用特征图的复用降低计算难度。这一方法使得输出特征内小感受野和更多细节内容产生联系,在小目标识别中起到了关键作用。
生成式对抗网络(generative adversarial network,GAN)是利用对抗思想预测生成模型框架,这种框架同时训练两种模型,生成模型和判别模型。旨在把分辨率较低的小目标特征映射为与分辨率高的目标等价特征,以便获得与大、中目标类似的检测效果。通过生成网络生成样本和判别网络进行辩论以提高网络性能,是无监督学习中应用最广的,最早由Goodfellow等人[47]提出。小目标在图像中要经过放大,再放入特征提取网络中,造成了小目标图像分辨率低的问题。针对这一问题,Bai等人[101]提出了超分辨率重构的GAN架构,产生器是一种超分辨率的网络,它能够把小的模糊图像采样成细尺度图像,从而恢复大量细节信息以实现更精准的检测。小物体检测的端到端多任务生成对抗网络,能够与目前的任何检测器结合使用。在对抗网络中,生成网络生成超分辨率图像,并引入多任务判别器网络,能够区分真实的高分辨率图像与伪造图像,预测对象类别和细化边界框。更关键的是,分类和回归损失被反向传播,进一步指导生成器网络生成超分辨率图像,以便更容易分类和更好的定位。Wang等人[102]提出了一种中心化的多任务生成对抗网络(CMTGAN),利用网络中生成器实现图像超分辨率,并利用鉴别器进行对象检测。在生成器中引入了人工纹理损失,以保留小物体的原始特征,在生成器中使用了一个居中的掩码,使网络专注于图像的中心部分,与现有的插值方法相比,CMTGAN生成的超分辨率图像更加明确,包含的信息更多。Courtrai等人[103]也是通过超分辨率来提高图形空间分辨率,从而解决了在卫星或航空遥感图像中检测小物体的问题。通过学习基于残余块的生成对抗网(GAN),将其整合到一个循环模型中。此外,在框架中加入一个为物体量身定做的检测辅助网络,改善超级分辨率架构的学习和质量,提高目标检测性能。Zhao等人[104]针对红外小目标构建了GAN模型自动学习特征并直接预测目标,为提高生成器的数据拟合能力,构建了五层判别器;同时L2损失被添加到对抗性损失找那个以提高定位能力。Li等人[105]从小目标和大目标之间的区别出发搭建生成式对抗网络,借鉴传统生成式对抗网络学习随机噪声到图片映射的思想,利用网络学习了小目标到大目标特征之间的映射。图12为该网络原理图,引入感知GAN模型来增强对小物体的表征,使其更接近于真实的大物体,从而提高对小物体的检测性能。最终相比于同期的Faster RCNN算法,较好地提升了小目标检测的精度。Rabbi等人[106]受边缘增强GAN(EEGAN)[107]和ESRGAN[108]的启发,提出一个新的边缘增强超分辨率GAN(EESRGAN)来改善遥感图像的质量。以端到端的方法通过不同的检测器网络,检测器的损失被反向传播到EESRGAN中,以提高小目标检测性能。
图12 感知生成式对抗网络Fig.12 Perceptual generative adversarial network
基于生成对抗网络的检测模型不仅可以增强小目标的细节信息,还可提升减少速度和精度。生成对抗网络不需要依赖任何先验假设,用到了反向传播,只要是可微分函数都可以构建生成器和判别器,更容易将生成对抗网络与现有的检测算法结合起来。但是它目前仍面临以下几个问题:(1)训练时需要达到纳什平衡,但是这个平衡很难获得;(2)生成模型的分布式没有显式表达,可解释性较差;(3)训练较困难,在学习过程中易发生崩溃问题。生成器开始逐渐退化,最后总生成相同的图像,无法继续学习;这就使得判别模型也会生成相似的图像,训练无法继续。
被检测目标与周围其他物体以及环境有着密不可分的关系,在各种环境中应用目标检测算法有很多局限性,尤其是检测小目标,因为它们分辨率低,信息有限,因此人们考虑到如何将上下文作为额外信息来帮助检测小目标。为了通过探索上下文信息来提高检测精度,Yu等人[109]提出了一种用于锚级联的上下文金字塔最大化机制。因此,锚级联可以训练非常有效的人脸检测模型,具有很高的检测精度。Zhu等人[110]提出的CoupleNet,如图13所示将网络分为两部分,一部分利用全卷积整合局部信息,另一部分采用全局卷积获得全局信息,最后通过通道拼接在一起,达到引入上下文信息的效果。此后他们又在CoupleNet基础上引入注意力机制,将注意力相关信息和物体的全局及局部信息结合起来,达到引入上下文信息,以提高检测性能。首先设计了一个级联注意力结构来感知图像的全局场景,并生成与类别有关的注意力图。然后,将注意力图谱编码到网络中,以获得物体感知的特征。接下来,同时提出一个独特的全卷积耦合结构,将物体的全局结构和局部部分结合起来,进一步制定一个辨别性的特征表示。为了充分挖掘全局和局部属性,还设计了不同的耦合策略和归一化方式,以充分利用全局和局部信息之间的互补优势,实验证明了方法的有效性[111]。
图13 CoupleNet网络结构Fig.13 CoupleNet structure
谷歌团队Qiao等人[112]提出的DetectoRS网络也引入了上下文信息以提高检测性能,首先设计了可转换的空洞卷积(switchable atrous convolution,SAC),然后在SAC的主要组件前后连接两个全局上下文模块,最后在宏观层面上,提出递归特征金字塔(recursive feature pyramid,RFP),并结合了从特征金字塔网络到自下而上的骨干层的额外反馈连接。最终在COCO数据集获得了54.7%的准确率。后续学者也在其他的网络上引入上下文信息以提高检测性能。孔慧芳等人[113]为提升分割精度,提出一种基于特征上下文编码的实时语义分割网络FCNet。张馨月等人[114]在SSD模型融合特征增强和自注意力,并且深层增强模块利用路径深层多尺度特征图生成的上下文信息增强深层特征信息,有利于提取特征。引入上下文信息在目前的检测领域也比较常用,一般都是与其他网络结构融合在一起,后续也会应用到小目标检测的领域内,最大限度地发挥它的优势,提高神经网络模型的小目标检测性能。除此之外,Yu等人[115]构建了一个有效的场景分割前背景。它利用监督嵌入上下文先验层的亲和力损失来区分不同的上下文依赖关系。为了把上下文优先嵌入到网络中,提出了一个上下文优先网络(CPNet),由主干网络和上下文优先层构成。聚合模块用于聚合用于推理上下文关系的空间信息,并嵌入到上下文前一层。大量的定量和定性比较表明,与目前最先进的场景分割方法相比,所提出的CPNet具有良好的性能。Lim等人[116]通过融合多尺度特征,利用不同层次的附加特征作为上下文信息;同时还用一种注意力机制的目标检测方法,该方法能够聚焦图像中小目标的,还能够包含目标层的上下文信息,能够提高检测小目标的精度。
基于引入上下文信息的方法挖掘利用了图像中目标与目标之间的关系及目标与周围像素之间的关联信息,提高了小目标检测算法的性能。但是也存在小目标之间的、小目标与周围环境之间关联性小,没有其他可以辅助小目标检测的物体也会给上下文学习方法造成难题,同时上下文信息混合使用,随着图像之间关联增加,使得检测模型的计算量增长变大,使模型的可扩展性较差。但是引入上下文信息的应用就是致力于模仿人类的认知系统,还可以应用于语音识别等多种对人类感知信息的方式的模仿,可以提高认知、检测的准确性,推动小目标检测领域向前发展。
除了上述提到的六种方法,小目标检测还有很多优秀的算法。根据应用场景对激活函数进行相应的调整,达到小目标检测当下最佳效果。常用的是非线性激活函数包括Swish、ReLU、Sigmod等。Ramachandran等人[117]用Swish激活函数优化原有激活函数饱和的问题;Lin等人[118]提出了一种改进的ReLU分割校正Activate函数,通过改进传统的卷积神经网络,加入局部响应归一化层,并使用最大堆叠等方法,可改善图像识别精度。徐浩等人[119]采用h-swish和s-sigmoid激活函数替换SSD模型中的相应的函数,这样可以降低模型训练时的计算量,提升目标车辆的检测速度。周非等人[120]在CNN中使用sigmoid和softmax两种激活函数来计算反馈误差,相比使用一种激活函数反馈的误差更精准,使得检测时结果更准确。
池化层是目标检测的重要处理步骤之一,池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果,但是也存在一定问题,为此Hu等人[121]改进池化层结构来解决小目标池化后失真的问题。刘淼等人[122]提出了一种指数可学习的幂函数softmax池化层,可提高检测率。
优化损失函数也是深度学习目标检测中不可或缺的一部分,并在小目标检测中也取得了一定的成效。在不同模型中要么使用其他损失函数,要么对原损失函数进行改善,徐浩等人[119]采用了Focal Loss替换SSD网络中的损失函数,可减少易分样本损失对总损失的影响,提高模型的准确率。Lu等人[123]采用自适应递归搜索技术,在损失函数部分设置加权系数等方法。刘安旭等人[124]在卷积空间传播网络上使用深度误差对数、深度信息梯度及表面法线三种损失函加权组合作为最终的损失函数,增加了目标物体的边缘信息,减少边界混合。目前很多学者也在这方面进行更深入的探索,以达到对小目标检测的最佳效果。
从应用角度来说,很多复杂环境下不具备高性能的GPU,需要将目标检测部署在低性能CPU或移动端。过大的网络模型导致程序运行缓慢或无法运行,难以满足实时检测的要求。为了提高小目标的检测性能,开始将模型轻量化处理,如常用的SqueezeNet[125]、MobileNet[126-128]、ShuffleNet[129-130],并且应用于深度学习网络中,模型的介绍如表2所示。模型轻量化可提高检测速度,如何提升检测精度也是重点,在应用轻量化的同时,学者们也提出了与轻量化模型结合的目标检测算法,如表3所示[131-137]。此外人们常用深度可分离卷积[138]、通道交换[139]、神经网络搜索技术[140]等方法来降低计算量以满足不同应用场景。
表2 常用轻量化网络模型介绍Table 2 Introduction to commonly used lightweight network models
表3 结合轻量化策略的目标检测方法Table 3 Object detection methods combined with lightweighting strategies
从以上六个主要研究方向入手,对小目标检测算法的优缺点进行了整理和总结,并将其放在表4中。此外,还有部分研究学者发现的基于深度学习的小目标检测算法也放在表4中[141-146],可以看出,小目标检测改进算法在数据预处理、特征增强与丰富等方面进行了改进,仍存在很多不足,需要各位学者共同研究与发展。
表4 小目标检测研究方向优缺点总结Table 4 Summary of advantages and disadvantages of research direction of small target detection
数据集作为目标检测的关键一环,除了上面提到的COCO数据集,还有一些公开的数据集,为此对这些数据集进行整理。按照类型对数据集进行了分类:交通标志数据集、人脸检测数据集、遥感数据集、水下图像数据集、小行人及医学影像数据集等,数据集虽不止这么多种类,但是小目标多存在于上述提到的数据集中,将其整理在表5中。
表5 小目标检测数据集信息Table 5 Small target detection data set information
本文回顾了深度学习的小目标检测算法,并对已有的算法进行归纳总结。重点关注了当下检测相对困难的小目标检测问题,从六个方面分析了近些年来国内外小目标检测算法,虽然现有的检测算法已经取得一定成效,但是对于精度和速度来说远不如大、中目标的检测效果好。随着小目标场景应用广泛性会对小目检测性能的要求提高,因此小目标性能还值得进一步研究。
(1)多尺度特征融合方面:FPN结构与不同目标检测方法结合,通过多尺度特征融合获得更多的特征信息提升小目标检测性能。但FPN本身属于人工设计,这种手工设计的特征金字塔结构具有局限性;为此使用神经架构搜索等方式对特征金字塔结构进行设计,通过训练自动生成最优的特征金字塔结构将成为研究的重点。
(2)完善训练方式:单一数据集包含信息较少,限制网络作用发挥,小目标检测往往需对大量数据进行训练才能提升其精度。YOLOv2提出Image和COCO数据集,通过树型结构将两者进行有机整合,使训练实施成功,因此利用数据集联合训练方式成为未来研方向之一。如果将包含大量小目标信息的遥感卫星图像数据集、人脸识别等数据集相结合进行训练,将提升小目标检测的适应性。通过不同分辨率的输入进行多尺度训练可提高网络对不同尺度检测任务的适应性,从而更好地检测出小目标,因此多尺度训练方法也是提高小目标检测性能的发展方向之一。
(3)模型可解释性:小目标检测的模型改进大多是基于实验结果的经验评估或者工程应用中的工程经验。很多模型拥有数千万甚至更多的参数,但目前从学术研究来看只是大量数值拟合得到的结果,无法获得参数本身分布规律。而大量卷积堆叠无法清楚了解模型的某一部分究竟从图像中学习到了哪些知识,只有通过不断提高小目标检测模型的可解释性等方式,才能更好地理解模型本身,提出更有针对性的小目标检测方法。
(4)完善检测数据集:深度学习发展离不开数据集,在文中也提到了小目标检测的重难点之一是由于数据集不够完善造成的。虽然现在已经在使用数据增强的方式在改善这种情况,但是始终不能从根本上解决问题,因此需要考虑建立一个特定的小目标检测数据集,作为训练样本的方法。
(5)结合传统方法。深度学习方法虽是近些年的主流检测方法,但是受小目标本身包含信息少的限制,利用深度卷积网络多次卷积对特征信息提取不太理想。因此考虑传统的一些方式提取小目标特征,如随机森林法、特征匹配等,再和深度学习结合,可能会得到相对好一些的效果。