yolo算法的优缺点分析_【精选推荐】基于深度学习的单阶段目标检测算法研究综述...
DOI:10.12132/ISSN.1673-5048.2019.0100
引用格式
刘俊明,孟卫华. 基于深度学习的单阶段目标检测算法研究综述[J]. 航空兵器, 2020, 27(3): 44-53.
Liu Junming,Meng Weihua. Review on Single-Stage Object Detection Algorithm Based on Deep Learning[J]. Aero Weaponry, 2020, 27(3): 44-53.(in Chinese)
基于深度学习的单阶段目标检测算法研究综述
刘俊明1*, 孟卫华1,2
1.中国空空导弹研究院
2.航空制导武器航空科技重点实验室
摘要
近年来, 深度学习技术推动目标检测算法取得了突破式进展。基于深度学习的目标检测算法可分为两阶段检测算法和单阶段检测算法。相比两阶段检测算法, 单阶段检测算法的结构简单、 计算高效, 同时具备不错的检测精度, 在实时目标检测领域中具有较高的研究和应用价值。本文首先回顾了单阶段检测算法的发展历史, 分析总结了相关算法的优缺点, 然后归纳提出了单阶段目标检测算法的通用框架, 接着对框架中的特征提取模块和检测器进行了深入分析, 指出了其对算法性能的影响, 最后对单阶段检测算法的发展趋势进行了展望。
关 键 词
深度学习;
单阶段目标检测算法;
特征提取;
特征融合;
anchor;
损失函数;
人工智能
0 引言
目标检测是计算机视觉领域的重要问题之一, 是完成目标跟踪、 场景理解等复杂视觉任务的基础, 在视频监控、 智能交通等领域中应用广泛。目标检测的任务是判断图像中是否存在属于指定类别的目标, 如果存在, 则给出目标的类别和位置信息。由于图像中目标的类别、 数量、 位置、 尺度和外观变化较大, 一般而言, 目标检测任务比目标分类任务更具有挑战性。
传统目标检测算法主要致力于解决少数几类目标的检测问题, 如行人检测[1]、 红外目标检测[2]。深度学习技术[3], 特别是深度卷积神经网络技术[4]出现以后, 目标检测算法取得了突破式发展, 在Pascal VOC[5,6], MS COCO[7]等大型数据集上已经能够取得不错的检测效果。
深度学习技术带来的进步主要体现在: ①目标检测精度大幅提升;
②单一模型能够检测的目标类别数大幅增长。但深度学习算法运行时需要耗费大量的计算资源, 运行速度一般远低于传统算法。在计算资源受限的条件下, 许多基于深度学习的目标检测算法往往难以达到实时运行的要求。
基于深度学习的目标检测算法分为两阶段检测算法和单阶段检测算法两种, 如图1所示。两阶段检测算法也被称为基于候选区域的目标检测算法, 其将目标检测过程分解为候选区域提取、 候选区域分类和候选区域坐标修正三个步骤。单阶段检测算法也被称为基于回归分析的目标检测算法, 其将目标检测问题视为对目标位置和类别信息的回归分析问题, 通过一个神经网络模型可直接输出检测结果。
文章图片
图1基于深度学习的目标检测算法
Fig.1Object detection algorithm based on deep learning
从本质上而言, 两阶段检测算法包含了两次目标检测的过程, 候选区域提取模块是第一个检测器, 用于检测前景和背景区域;
候选区域分类和坐标修正模块构成了第二个检测器, 用于对第一个检测器的结果进行补充和修正。两阶段检测算法中的两次目标检测过程提升了算法的准确性, 但也增加了模型复杂度, 制约了模型计算效率的提高。单阶段检测算法只包含一次目标检测的过程, 其结构简单、 计算效率高, 能够方便地进行端到端的训练, 在实时目标检测领域中有很大的应用潜力。
目前, 基于深度学习的单阶段检测算法仍然存在着不足, 其结构形式、 检测精度和检测速度仍然需要进一步提升。近年来, 虽然有不少学者对基于深度学习的目标检测算法进行了梳理总结[8,9,10], 但这些总结主要集中于对目标检测算法的整体框架进行介绍, 对单阶段目标检测算法中关键模块的分析却不足。本文首先回顾了单阶段目标检测算法的发展历程, 然后归纳提出了单阶段检测算法的通用框架, 并对算法中特征提取模块和检测器模块进行深入分析, 最后对单阶段检测算法的发展趋势进行了展望。
1 发展历史
单阶段目标检测算法可以看作是一个回归分析模型, 用于分析输入图像的像素值与图像中目标位置和类别等变量之间的关系。由于图像和目标并不是一一对应的关系, 利用回归分析方法直接预测目标的位置和类别具有一定的难度, 因此, 早期基于深度学习的目标检测算法都是目标检测问题分解为候选区域提取、 分类和坐标修正等过程, 如图1(a)所示。图像分类算法和两阶段目标检测算法中回归分析方法对于单阶段目标检测算法的发展都有重要的促进作用。 图2时间轴上方展示了单阶段目标检测算法的发展历程, 时间轴下方展示了基于深度学习的分类网络的发展历程。不同单阶段目标检测算法在Pascal VOC数据集和COCO数据集上的性能如表1所示。
文章图片
图2单阶段目标检测算法发展历史
Fig.2Development history of single-stage object detection algorithm
文章图片
2012年, Krizhevsky A利用深度卷积神经网络AlexNet[4]在ILSVRC2012图像分类任务上以明显优于传统算法的成绩获得冠军, 在计算机视觉领域引起了研究深度学习技术的热潮。许多学者开始研究将深度卷积神经网络应用于目标检测任务, 并利用AlexNet构建了DetectorNet[11]、 OverFeat[12]、 R-CNN[13]、 DeepMultiBox[14]、 MultiGrasp[15]等目标检测算法。
DetectorNet和OverFeat是最早提出的基于深度神经网络的目标检测算法, 二者的模型中包含了回归分析的思想。DetectorNet利用神经网络直接预测用于指示目标区域的掩模图像。OverFeat则利用卷积神经网络的特性高效地实现了基于滑动窗方法的图像分类和目标定位。由于算法结构仍然不完善, 这两种算法并未取得突破性进展, 但二者对基于深度学习的目标检测算法研究具有启发性意义。
R-CNN是典型的两阶段目标检测算法, 其使用Selective Search[16]算法生成候选区域, 并利用深度卷积神经网络对候选区域进行分类。在修正候选区域坐标时, R-CNN使用了回归分析方法。具体而言, R-CNN利用全连接网络层实现了从输入特征到候选区域坐标修正系数的映射。修正系数衡量了新坐标相对于初始坐标的偏离程度。这种预测坐标偏离程度不是直接预测坐标绝对值的作法在后续目标检测算法中应用得十分普遍。
DeepMultiBox同样是两阶段目标检测算法, 但不同于R-CNN的是, 其利用卷积神经网络来抽取特征, 并利用全连接层来预测候选区域坐标和类别。在预测目标位置时, DeepMultiBox引入了一系列固定尺寸的矩形框作为预测目标位置的基础。这一机制与R-CNN中候选区域坐标修正模块的预测机制类似。因为尺寸确定以后就不再改变, 这些固定尺寸的矩形框被称为anchor。anchor是基于深度学习的目标检测算法中一个十分重要的机制, 对算法有多方面的提升。
Faster R-CNN[17]算法是对R-CNN算法的改进。该算法利用RPN(Region Proposal Network)生成候选区域。RPN与DeepMultiBox有一定的相似性, 不同的是前者对候选区域坐标和类别的预测过程是通过卷积层实现的。由于卷积操作的特性, 在特征图的不同位置进行预测时可以共享权重。RPN中也引入了anchor机制, 这些anchor以类似于卷积操作的方式在特征图的每个位置上共享。
MultiGrasp[15]是利用AlexNet构造的单阶段目标检测算法, 可用于预测图像中物体的可握持区域。MultiGrasp将图像分为7×7的网格, 然后预测网格每个单元对应的图像区域内是否存在可握持物体, 以及可握持区域的位置。
YOLO[18]是第一个在检测精度、 检测速度上都取得不错效果的单阶段目标检测算法, 其模型结构如图3所示。YOLO算法的核心思想类似于MultiGrasp, 但与后者不同的是, YOLO算法中增加了分类器, 并重新设计了损失函数, 使得算法能够检测多种类别的目标, 此外, YOLO算法中还包含了重新设计的特征提取网络。由于高效的检测机制和网络结构, YOLO算法是深度学习领域中第一个可以实时运行的目标检测算法, 受到了广泛关注。
文章图片
图3YOLO算法模型
Fig.3Model of YOLO algorithm
在预测目标位置时, YOLO算法没有利用先验信息, 需要直接预测目标的实际位置, 使得其对目标的定位精度相对较差。此外, YOLO算法在预测每个单元格对应的检测结果时, 要求目标中心点必须位于该单元格内部。这一作法对算法的预测过程施加了较强的空间约束, 使得算法对成群出现的小目标检测效果较差。
SSD[19]是另一个受到广泛关注的单阶段目标检测算法, 其网络结构如图4所示。SSD算法与YOLO算法的不同之处主要体现在两方面。首先, SSD利用多个不同尺度的特征图进行目标检测, 提升了算法对不同尺度目标的检测能力。其次, SSD采用了与RPN网络中类似的目标预测机制。与YOLO算法相比, 这种机制有三点优势: ① 使用卷积层实现对目标位置和类别的预测, 参数量和计算量相对较小;
② 没有对目标检测过程施加空间限制, 能够检测成群出现的小目标;
③ 使用了多个尺寸的anchor作为目标位置的先验信息。因此, SSD算法的检测精度和运行速度都优于YOLO。
文章图片
图4SSD算法模型
Fig.4Model of SSD algorithm
YOLO和SSD是两种使用较为广泛的单阶段目标检测算法。研究者针对这两种算法作了很多改进。
针对YOLO算法的缺点, YOLO研究者提出了YOLOv2[20]算法, 主要改进内容包括: 采用了新的全卷积特征提取网络Darknet-19;
使用2个不同尺度的特征进行目标检测;
引入了anchor机制;
使用了多尺度训练机制。YOLOv2算法的运行速度和检测精度相比YOLO都有了明显提升。在VOC2007数据集上, YOLOv2的性能与SSD512相当, 但前者的运行速度是后者的3.5倍。
YOLOv3[21]对YOLOv2进行了改进: 采用了更深层的特征提取网络Darknet-53;
使用了3个尺度的特征进行目标检测, 同时增加了anchor数量。由于模型结构更加复杂, YOLOv3相比YOLOv2检测速度有所降低, 但检测精度有明显提升, 对小目标的检测效果也有明显改善。
对于SSD算法, 研究者同样作了多方面的改进。其中DSSD[22]、 F-SSD[23]和R-SSD[24]等都是对神经网络中不同特征的融合方式进行了改进, 并取得了不错的效果。RetinaNet[25]是在SSD目标检测算法框架下一项具有重要意义的算法。相比SSD算法, RetinaNet使用特征金字塔网络[26](Feature Pyramid Network, FPN)构建了用于目标检测的多尺度特征, 并提出了新型损失函数, 显著提高了目标检测算法的准确性。
2018年, Law H等借鉴了人体姿态估计算法的一些设计思想, 提出基于关键点的目标检测算法CornerNet[27]。CornerNet将目标检测过程视为预测目标所在矩形框的左上角点和右下角点的过程, 并取得了非常好的效果。
单阶段目标检测算法虽然晚于两阶段目标检测算法出现, 但凭借结构简单、 计算高效的特点受到了许多研究者的关注, 发展十分迅速。早期的单阶段目标检测算法往往运行速度较快, 但检测能力与两阶段检测算法有较大差距。目前的单阶段目标检测算法在保持较快速度的同时, 检测能力已经达到与两阶段目标检测算法相当的水平。同时, 单阶段目标检测算法在发展过程中已经成了一个相对固定的框架结构, 有助于研究者从不同方面对其进行研究改进。
2 算法框架
基于深度学习的单阶段目标检测算法的主体结构是一个可以进行端到端训练的深度神经网络。根据对目前单阶段目标检测算法的分析, 将单阶段目标检测模型分解为特征提取和目标检测两个模块。其中, 特征提取模块负责从输入图像中提取特征, 目标检测模块则利用提取的特征对目标位置和类别进行预测, 如图5所示。
文章图片
图5基于深度学习的单阶段目标检测算法框架
Fig.5Framework of single-stage object detection algorithm based on deep learning
特征提取模块包含两部分: 特征提取网络和辅助网络。特征提取网络一般由图像分类网络改造而成, 这样可以利用在图像分类数据集上预训练的权重, 实现迁移学习效果。辅助网络用于对特征提取网络输出的特征进行变换、 融合等操作。
目标检测模块一般由若干全连接层或卷积层构成, 每个全连接层或者卷积层可以看作若干检测器的集合。每个检测器只能输出1个检测结果, 检测器的数量决定了算法可检测目标数量的上限。
每个检测器由1个定位器和1个分类器组成。定位器负责将输入特征映射为目标位置信息, 分类器负责将输入特征映射为目标类别信息。目前, 目标位置信息常用目标外接矩形框的中心点坐标、 宽度和高度表示, 记为x,y,w,h;
目标类别信息用cj(j∈[0, 1, 2, …, N-1])表示, 其中N是目标类别数量。
不同单阶段目标检测算法的区别在于以下三个方面: ① 特征提取网络不同;
② 特征选择和融合策略不同;
③ 检测器不同。其中, 前两个方面都与特征相关。
与图像分类领域类似, 许多目标检测算法都倾向于使用更深的特征提取网络, 使用更多数量的特征来提升检测精度。一般情况下, 这样的做法会大幅增加模型的计算量, 但只能得到相对较小的性能提升。
检测器直接关乎目标检测结果的输出, 是单阶段目标检测算法中的核心部件。不同类型的目标检测算法可能在检测器的数量、 anchor机制、 构造形式、 预测机制、 匹配机制、 损失函数等方面存在差别。
下面对单阶段目标检测算法中的特征提取网络、 特征选择和融合策略以及检测器进行论述。
3 特征提取模块
3.1 特征提取网络
作为深度学习领域的一项基础性技术, 深度神经网络近年来发展很快[28]。 图2中时间轴下方展示了历年来一些典型的深度神经网络模型, 这些模型在ImageNet数据集上的分类性能和计算量如表2所示。由图2和表2可知, 在AlexNet出现之后的最初几年内, 许多大规模的深度神经网络模型被提出来。与AlexNet相比, 这些模型分类错误率明显降低, 但计算量也有较大增长。另一方面, 为了促进深度学习技术在移动设备、 嵌入式设备等平台上的应用, 网络规模更小、 计算量更低的轻量级网络也成为深度神经网络发展的一个重要方向。
文章图片
深度神经网络模型一般由一定的基本结构单元反复堆叠而成, 各种模型的不同也主要体现在其基本结构单元的不同。 图6展示了常见神经网络模型的基本结构单元。其中, AlexNet和VGG[29]都是常规的卷积神经网络, 采用卷积层作为基本结构单元。与AlexNet不同的是, VGG网络只使用了3×3和1×1的卷积核, 并堆叠了更多层的网络。GoogLeNet[30]采用了Network in Network的思想, 其基本结构单元是一个被称为Inception模块的子网络。基于残差学习的思想, He K等[31]在ResNet中引入了跨越不同网络层的捷径连接。捷径连接有助于增强信息在不同网络层之间的流动, 缓解深度模型训练中的过拟合问题。DenseNet[32]则将捷径连接更广泛地应用在深度神经网络的构建过程中, 但不同于ResNet的是, DenseNet中的捷径连接采用了通道串接的方式, 而不是对应元素相加的方式, 这有助于促进特征的再利用, 降低模型参数量。
文章图片
图6不同深度神经网络的基本结构单元
Fig.6Basic modules of some deep neural networks
逐层可分离卷积[33]是近年来轻量级神经网络发展过程中的一项重要技术, 其将卷积过程分解为逐层卷积和驻点卷积。相比常规卷积过程, 逐层可分离卷积的计算量和参数量更少。
MobileNet[34]使用逐层可分离卷积替代常规卷积构, 建了一个轻量级神经网络模型, 其分类性能与VGG和GoogLeNet等网络性能相当, 但参数量和计算量明显降低。MobileNetV2[35]在MobileNet的基础上, 增加了捷径连接, 构建了残差学习模块, 进一步提升了网络的分类准确性。在SSD目标检测算法框架中, 使用MobileNetV2作为特征提取网络取得的性能与MobileNet相当, 但模型的参数量仅为后者的83%, 计算量仅为后者的62%。
ShuffleNet[36]将分组卷积、 逐层卷积和通道次序打乱这三种操作引入到残差模块中。其中, 分组卷积是将输入矩阵在通道方向上划分为若干组之后, 分别进行卷积运算, 然后将相应的输出矩阵在通道方向上串接。逐层卷积是分组卷积的一种特殊情况, 即分组数等于通道数。通道次序打乱则是将输入矩阵在通道方向上随机打乱后再进行后续计算。ShuffleNet可通过一系列超参数控制模型规模, 当模型计算量与MobileNet相当时, ShuffleNet的分类错误率更低。ShuffleNetV2[37]在ShuffleNet的基础上, 考虑了内存存取成本等影响模型运算速度的因素, 重新设计基本结构单元, 进一步提升了模型的效率。
3.2 特征选择和融合策略
深度卷积神经网络可以从图像中提取层次化的特征, 其中低层网络输出的是简单几何特征, 高层网络输出的是抽象语义特征[38]。由于需要同时预测目标的位置和类别, 目标检测模型既需要几何特征, 也需要语义特征。
随着网络层数的增加, 神经网络的下采样率一般逐渐增大, 特征图的分辨率也越来越小。为提升算法对多尺度目标的检测能力, 单阶段目标检测算法一般会利用多个尺度的特征图进行预测。其中的特征选择和融合操作一般通过特征提取模块中的辅助网络实现。
单阶段目标检测算法的典型特征选择和融合策略如图7所示。其中, 图7(a)基于特征提取网络最顶层的特征进行目标检测, 如YOLO算法。 图7(b)基于特征提取网络自底向上生成的多个特征图分别进行目标检测, 如SSD算法。 图7(c)基于特征提取网络生成的特征图, 采用自顶向下的方式重新构建一套融合的特征图, 代表算法是RetinaNet、 FPN和DSSD。YOLOv2和YOLOv3算法也采用这种策略, 不过使用了较少的特征图。 图7(d)基于特征提取网络生成的特征图, 采用自底向上的方式重新构建了一套融合的特征图, 代表算法是FSSD。
文章图片
图7特征选择与融合策略
Fig.7Feature selection and fusion strategy
通过对比不同的算法发现, 目标越小, 对特征图分辨率的要求越高;
使用多尺度特征进行目标检测较使用单个尺度的特征效果好;
使用融合的特征较使用独立的特征效果好。但从另一方面说, 增加特征的数量, 对更多特征进行融合虽然会促进算法检测能力的提升, 但也增加了模型中的参数量和计算量, 导致算法的运行速度降低。因此, 设计特征选择与融合策略的关键, 在于利用适当数量的特征和合理的融合机制取得算法性能和算法运行速度之间的平衡。
4 检测器
检测器的功能是根据特征直接输出目标检测结果。从实现形式上看, 检测器的结构十分简单, 但在目标检测算法的训练和测试过程中, 检测器又包含十分复杂的机制, 对神经网络的训练过程和最终性能有重要影响。
检测器包含定位器和分类器, 其中分类器一般较简单, 与图像分类网络中的分类层类似。定位器作为目标检测网络独有的部件, 复杂度较高, 对模型的影响更大。
4.1 构造形式
根据前文的论述可知, 检测器一般有两种构造形式, 分别是全连接层和卷积层。在YOLO, DeepMultiBox等算法中, 使用全连接层构造了检测器。在YOLOv3, SSD和RetinaNet等算法中, 检测器通过卷积层实现。其中YOLOv3使用了1×1的卷积核, 而SSD使用了3×3卷积核。值得注意的是, 全连接层可以看作是一种特殊的卷积层, 其卷积核的尺寸与输入特征的尺寸相同。
表3中列举了目标类别数N=20时, 一些算法的检测器构造信息。通过YOLO与其他三种算法对比发现, 使用卷积层来构造检测器能够在不同空间位置的检测器之间共享参数, 极大地减少参数量。另外, YOLOv3拥有较多的检测器, 参数数量却少于SSD。这是因为YOLOv3的检测器是在较大的特征图中通过卷积构造实现, 参数共享程度高, 而SSD算法是在多个较小的特征图中构造检测器, 参数共享程度低。
文章图片
4.2 anchor机制
anchor为单阶段目标检测算法提供了目标位置的先验信息。在这些先验信息的基础上, 检测器中的定位器更容易预测目标位置。anchor应当尽可能地贴近真实目标的矩形框尺寸分布。事实上, 两阶段目标检测算法中的候选区域可以理解为动态的anchor。这种动态anchor往往比事先指定的静态矩形框更贴近目标的真实位置, 所以一般情况下, 两阶段目标检测算法的检测效果更好。
在Pascal VOC和COCO等目标检测数据集中, 目标大小和长宽比往往分布在较大的范围中。所以, 一般选用若干不同大小和长宽比的anchor, 促进定位器通过学习来预测不同大小和长宽比的目标, 从而增加定位器的多样性, 增强算法对不同目标的检测能力。
目前一般有两种方式来确定anchor的尺寸。第一种是通过人工选择, 这种方法在SSD, RPN, RetinaNet等算法中有应用。第二种是通过聚类的方法在训练集中选取合适的anchor尺寸, 这种方法在DeepMultiBox和YOLO等算法中有应用。
聚类方法获得的anchor更加符合数据集中目标矩形框的分布情况, 使得算法在训练过程中更容易收敛。而人工选择法要达到同样效果, 一般要选择较多的anchor, 以尽可能覆盖不同尺度和长宽比的目标。
典型目标检测算法中anchor的数量如表4所示。作为对比, YOLOv2中仅使用了5种anchor, 而SSD算法中使用了30种anchor, 但二者的检测精度相当。
文章图片
在RetinaNet算法中, 作者研究了anchor数量与算法检测精度之间的关系, 结果如表5所示。这进一步说明, 选用更多的anchor不一定能产生更好的结果。
文章图片
4.3 预测机制
检测器的预测机制是指检测器输出值与目标位置和类别信息的预测值之间的映射关系, 即根据检测器输出如何计算目标检测结果。预测机制不同, 检测器的检测能力也不同。
在SSD算法中, 检测器的预测机制可表示为
文章图片
SSD算法预测的是目标矩形框相对anchor中心位置和边框尺寸的偏差程度, 这使得算法更容易检测到与anchor形状相似的目标。这种检测机制未对矩形框中心做任何限制, 检测器预测的矩形框可能出现在图像的任意位置, 因此, 图像不同区域的特征可能用于检测同一个目标。
YOLO算法未采用anchor机制, 其检测器的预测机制可用下列公式表达:
文章图片
式中: (cx,cy,cw,ch)是定位器所在单元格的左上角的坐标、 以及单元格的宽度和高度;
t^o是检测器输出的矩形框置信度;
W, H是输入图像的宽度和高度;
其他变量的含义与式(1)相同。
YOLO对检测器施加了一定的限制, 使得其预测的矩形框中心必须位于检测器所对应单元格内。同时检测器也需要在较大的搜索空间内预测目标矩形框的尺寸, 难度较大, 这也导致YOLO算法的定位误差较大。
YOLOv2和YOLOv3的预测机制相同, 用公式表示为
文章图片
式中: (aw, ah)是anchor的宽度和高度;
其他变量的含义与式(2)相同。anchor机制的引入使得检测器更容易预测目标矩形框的尺寸, 同时YOLOv2和YOLOv3算法还增大了特征图的分辨率和检测器的数量, 使算法的检测效果有了明显提升。
4.4 匹配机制
在单阶段目标检测算法中, 网络模型中有多个检测器, 输入图像中也有多个真实目标, 只有在二者之间建立匹配关系之后才能计算相应损失值, 从而对神经网络进行优化。
从匹配形式来说, 目前有两种。第一种是每个真实目标只与一个检测器匹配, 如YOLO系列算法。第二种是多个检测器可以与同一个目标匹配, 如SSD, Retina等算法。第二种匹配机制使得有多个检测器负责检测同一个目标, 有助于提升检测效果。
从匹配方法来说, 一般也分为两种。在anchor机制出现以前, 一般是通过检测器输出的矩形框来构建匹配关系。如果检测器输出的矩形框与某个真实矩形框的IoU最大或者超过了一定的阈值, 则在二者之间建立匹配关系。在算法训练过程中, 检测器输出的矩形框是动态变化的, 因此在不同迭代步中, 同一个检测器可能匹配到差异较大的目标, 这种匹配机制称为动态匹配机制。动态匹配机制可能造成模型训练过程不稳定, 特别是在早期训练阶段。
在anchor机制出现以后, 一般利用与检测器绑定的anchor计算匹配关系。由于anchor确定以后就不再发生变化, 这种匹配机制称为静态匹配机制。静态匹配机制保证了匹配关系的稳定性, 使得不同检测器根据anchor尺寸和长宽比的不同向着不同方向优化, 保证了检测器的多样性。
4.5 损失函数
检测器与真实目标(正样本)建立了匹配关系之后, 就可以基于检测器输出和真实目标的标记计算损失值。其中分类器的损失值一般用交叉熵损失函数计算。定位器的损失值一般采用均方差(MSE)损失函数或SmoothL1损失函数计算, 二者的差别如图8所示。当误差较大时, 均方差损失函数会产生过大的梯度, 因此一般采用SmoothL1来计算定位器的损失。
文章图片
图8损失函数示意图
Fig.8Diagram of loss functions
另一个值得注意的问题是大目标和小目标的损失函数。对于同样的尺寸误差, 小目标显然比大目标更敏感, 但是MSE和SmoothL1损失函数并没有考虑这一点。YOLO算法中利用( w^- w)和( h^- h)计算矩形框尺寸的预测值( w^, h^)与真实(w,h)之间的误差, 缓解了这种现象。在基于anchor的预测机制中, 通过为不同尺度的目标设定不同尺度的anchor也可以缓解此问题。
未能与真实目标建立匹配关系的检测器实际上是与背景区域(负样本)建立了匹配关系。对于负样本, 只需计算分类器对应的损失值。但图像中背景区域面积较大, 负样本的数量远大于正样本, 二者之间存在严重的类别不均衡问题。
常规的做法是对负样本进行筛选, 使得正负样本的比例更加均衡。SSD算法利用困难负样本挖掘技术对负样本进行筛选, 使得正样本和负样本的比例保持为1∶3。这使得模型训练更加稳定, 收敛速度更快。
在ReintaNet中, 作者提出了改进的分类器损失函数FocalLoss:
文章图片
式中: Pt是分类器给出的类别概率;
系数α用于缓解正样本和负样本数量的不均衡问题;
权重(1-pt)γ用于对样本的损失值进行加权, 降低来自容易检测的样本的损失值, 增加来自困难样本的损失值, 如图9所示。在COCO数据集上, ReintaNet的检测精度大幅领先其他单阶段目标检测算法, 甚至比Faster R-CNN算法的检测效果还要好。
文章图片
图9FocalLoss损失函数示意图
Fig.9Diagram of FocalLoss functions
YOLO系列算法并没有计算来自负样本的分类损失值, 而是利用检测器输出的置信度 t^o来区分正负样本。对于正样本, 置信度 t^o的目标值to为1;
对于负样本, 如果检测器输出的矩形框与任意真实目标矩形框的IoU大于0.5, 则忽略这个预测结果, 否则将目标值to置为0, 然后计算 t^o和to之间的损失值。YOLOv3的这种机制巧妙地解决了负样本的问题, 在实际中取了良好的效果。
5 挑战与展望
本文对基于深度学习的单阶段目标检测算法的研究进展进行了综述, 归纳提出了单阶段目标检测算法的通用框架, 并对算法框架中的特征提取模块和检测器模块进行了深入分析。
综述发现, 基于深度学习的单阶段目标检测算法在短短几年时间里从出现到兴盛, 发展十分迅速。这主要是由于两方面的原因: 一方面单阶段检测算法结构简单、 高效, 在实时目标检测领域应用潜力大, 吸引了大量研究者的参与;
另一方面深度神经网络技术发展迅猛, 促进了单阶段目标检测算法性能的提高。目前, 单阶段目标检测算法已经形成了相对固定的算法框架, 并具有以下特点:
(1) 经过预训练的深度神经网络是构建目标检测算法特征提取模块的基础。虽然DSOD[39]等算法的构建可以不依赖预训练模型, 但预训练模型仍具有十分重要的作用, 特别是对于缺乏标记数据的领域。
(2) 充分利用特征提取网络形成的多尺度特征是实现多尺度目标检测的基础。在选择和融合多尺度特征时大多采用沙漏型的网络结构, 即特征图的分辨率先逐渐减小, 再逐渐增大。这种方式有利于不同层级的特征相互融合。
(3) 以YOLO和SSD为代表的单阶段目标检测算法已经发展的较为成熟, 其算法框架中的检测器已经从构造形式、 预测机制、 匹配机制、 损失函数等多方面得到了改进, 但检测器的构造形式、 预测机制和损失函数等方面仍然有提升的空间。
从算法性能来看, 单阶段目标检测算法已经具有不错的检测精度和速度, 但是距离实用尚有一段距离。展望未来, 有必要在以下方面展开单阶段目标检测算法的研究:
(1) 研究弱监督或无监督条件下的单阶段目标检测算法, 促进其在标记数据缺乏的领域中应用。
(2) 研究深度神经网络输出的各层级特征与图像中各类目标的联系, 指导构建更高效的特征选择和融合机制, 提升对特征的利用效率, 改善算法运行速度和精度。
(3) 研究新的目标位置表示方法和检测器设计形式。目前普遍采用矩形框表示目标位置, 其中包含了一些背景区域, 对于轮廓模糊或细长的物体, 这种表示方法并不合适。而检测器的形式与目标位置表示具有一定联系。目前的检测器形式已经相对固定, 在算法性能上很难再有大的突破, 有必要构造新的检测器形式, 进一步提升单阶段目标检测算法性能。在这两方面, DOTA数据集[40]和CornerNet算法是两个很好的例子。在前者中, 作者使用斜矩形框来表示目标位置;
在后者中, 作者提出使用矩形框的两个角点表示目标位置, 并构造了新形式的检测器。
(4) 研究更好的定位器损失函数。目前的定位器损失函数没有考虑目标尺度对损失函数的影响, 使得模型对小目标的定位误差不敏感, 需要进行改进。目前已有研究者将改造后的IoU准则作为定位器损失函数对模型进行了优化[41], 提升了模型的性能。
(5) 研究改善单阶段目标检测算法对于小目标的检测能力。目前算法对于小目标的检测能力相对较弱, 但无人机航拍、 卫星遥测、 红外目标识别等领域对小目标检测有较强的需求。在这些领域中, 有的小目标占据的像素面积小, 例如在红外目标识别、 卫星遥测领域中, 目标最小时可能仅占据十几个像素;
有的小目标占据的相对面积较小, 例如在无人机高清航拍过程, 照片分辨率已经达到4K级别。改善对小目标的检测能力, 可以增强单阶段目标检测算法在这些领域的应用价值。
刘俊明(1990-), 男, 河南济源人, 博士研究生, 研究方向为深度学习、 红外目标检测。
E-mail:ljmbuaa@126.com
本文已刊登于《航空兵器》2020年第27卷第3期
原文链接
http://www.aeroweaponry.avic.com/CN/10.12132/ISSN.1673-5048.2019.0100
或点击下方
了解更多文章信息~
航空兵器
中文核心期刊
中国科技核心期刊
CSCD来源期刊
文章图片
Tel:0379-63385246
E-mail:hkbq2016@163.com
http://www.aeroweaponry.avic.com
洛阳市030信箱3分箱
编辑:鲁璐
【yolo算法的优缺点分析_【精选推荐】基于深度学习的单阶段目标检测算法研究综述...】校对:王春录
文章图片
推荐阅读
- 智能家居|深入了解开源智能家居平台,解决品牌割裂的终极利器()
- 深度学习|YOLO系列改进
- 苹果12的截屏怎么操作
- 苹果手机的互传功能在哪里
- xp系统qq空间上传照片失败的处理办法
- xp系统下加速收看网络视频节目的办法
- CBox xp系统下央视影音播放失败的处理办法
- 绿茶xp系统提示ie应用程序出错的处理办法
- win xp系统下ppt插入视频的办法
- xp系统下运用美图秀秀制作9宫格图片的办法