机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法

文章目录

  • 前言
  • 一、一阶段目标检测算法
    • 1.YOLO系列算法
    • 2.SSD检测算法
    • 3. RetinaNet检测算法
  • 二、两阶段目标检测算法
    • 1.Faster R-CNN检测算法
    • 2.Mask R-CNN检测算法
    • 3.Cascade R-CNN检测算法
  • 总结


前言

本系列文章将对机器学习知识进行分享总结。便于大家从理论层面了解人工智能基础原理,从而更好的运用算法发论文写作以及实际应用。关注即免费获取大量人工智能学习资料。


目前,深度学习被视为未来技术的趋势,并且在目标检测中起着重要的作用,新兴的基于卷积神经网络的目标检测算法可以粗略地分为两类。一种是一阶段的目标检测算法,可以在没有提案的情况下执行目标检测,例如YOLO v1-v3,单发多框检测器(Single-Shot Mulibox Detector, SSD)。另一个是两阶段的目标检测算法,它生成提案,然后对这些提案进行预测,例如R-CNN, Fast R-CNN, Faster R-CNN。

一、一阶段目标检测算法

1.YOLO系列算法

Redmon等人提出了YOLO算法,将目标检测问题转换为定位目标框和计算类别概率的回归问题。YOLO将目标检测视为回归问题,并将整个图像在空间上划分为固定数量的网格单元。每个单元均被视为一个提案来检测一个或多个目标。在原始实现中,每个单元都被认为包含(最多)两个对象的中心。对于每个单元格,进行的预测包括以下信息:该位置是否有目标,边界框坐标和大小(宽度和高度)以及目标的类别。整个框架是一个单一的网络,它省略了可以以端到端的方式进行优化的提案生成步骤。YOLO算法采用全卷积网络来提取特征,然后使用全连接层来得到预测值。网络结构参考GoogleNet模型,包含24个卷积层和2个全连接层。接着作者在YOLO的基础上,引入anchor, 利用k-means算法聚类来获得先验框,提出了YOLOv2,其中采用新设计的Darknet-19来作为骨干网络提取特征;接着在YOLOv2的基础上提出YOLOv3改进算法,它借鉴ResNet残差网络结构,使得网络深度更深,得到新的骨干网络Darknet-53,共53个卷积层;借鉴FPN特征金字塔,在网络后面三个台阶处,使用FPN结构,小尺寸上采样结合大尺寸特征图,以此来提升对小目标检测的性能。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第1张图片

2.SSD检测算法

SSD检测器[65]是由Liu等人提出的另外一种One-Stage检测器网络,如图2-10
所示。其网络使用多尺度特征图来针对不同尺度的目标。SSD同样采用YOLO中
的回归思想,直接对生成图像中目标的位置和类别做预测。在网络设计上,该方
法使用卷积层来得到预测值,取代了YOLO网络中的全连接网络。类似Faster
R-CNN中anchors实现的思想,对于每幅特征图划分为固定数目个特征图单元
(Feature Map Cells),其中每个特征图单元中生成多个固定尺寸的默认图(Default
Map),之后依据每个默认图在特征图单元中的特征信息来预测边框偏置(Offset)
以及图像分类预测值。通过网络结构设计,该网络抛去了Region Proposal部分,
从而实现了One-Stage检测,提高了检测速度,同时保持了检测器较优的检测精度。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第2张图片

3. RetinaNet检测算法

RetinaNet属于深度学习中的一阶段目标检测器,它可以看做是由 FPN和Focal Loss 组成的。一阶段检测器由于不生成提案来过滤简单的负样本,因此前景和背景之间的类别不平衡导致一阶段检测器进行分类的精度不高。Lin等人提出了一种一阶段检测器RetinaNet,它以更灵活的方式解决了类不平衡问题。RetinaNet的结构表示如图所示。RetinaNet使用聚焦损失(Focal Loss)对简单的分类样本赋予更小的权值,而对不易分类的样本赋予更大的权值来解决该问题。此外,它还使用特征金字塔网络来检测不同层级的特征图上的多尺度目标。 通过对类别样本不平衡问题的解决,RetinaNet获得了速度-精度更优的平衡,既拥有一阶段网络检测速度的优势,也获得了接近两阶段网络的检测精度。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第3张图片

二、两阶段目标检测算法

1.Faster R-CNN检测算法

2014年,Girshick提出的R-CNN方法首次将卷积神经网络应用于目标检测中,相比传统的目标检测方法取得了突破性的进展,推动了深度学习在目标检测上的研究。R-CNN算法分为四个步骤:1)采用Selective Search算法在图像上提取一千至两千个候选区域;2)由于全连接层的输入必须为固定尺寸的特征图,所以利用Selective Search算法提取出的候选区域需要将候选区域图片压缩成固定尺寸,再将提取出的候选区域作为卷积神经网络(CNN)的输入后输出区域的特征输入全连接层;3)使用SVM分类器对卷积神经网络所提取的候选区域的特征进行分类,根据该区域的特征判断是否存在目标以及所属的类别;4)使用非极大值抑制对窗口具体位置进行回归,修正选框位置。但是由于R-CNN对候选区域的特征提取与分类是对每一个候选区域生成图片所进行的,这样极大地减慢了目标检测的速度。而SSPNet[70]的出现解决了这个缺陷。SPPNet使用空间金字塔池化(Spatial Pyramid Pooling)将特征图变成固定的长度,然后将特征和原始图像中的候选区域建立映射关系,那么在对图像提取特征之后能通过该映射关系找出图像候选区域相对应的特征。不仅如此,它通过多个不同尺寸的池化层将特征变成相同的维度,从而将得到的固定长度的特征作为全连接层的输入。在此基础上,Girshick结合R-CNN与SSPNet的优点,提出了Fast R-CNN。
Fast R-CNN采用RoI pooling层使每个建议窗口生成固定尺寸的特征图。不仅如此,Fast R-CNN采用Softmax层代替SVM作为分类器对候选区进行判断,所以特征提取与分类器可以分别进行训练,提高了检测的速度与精度。 Ren等人对Fast R-CNN进一步改进,并提出了Faster R-CNN[68]。在Fast RCNN中,仍旧采用Selective Search方法生成大量的候选窗口,这类方法不仅缺乏检测的精度,更影响了检测的速度。而Faster RCNN中采用RPN结构生成候选窗口,同时采用anchor的机制来生成多尺度的候选窗口以适应对不同大小目标的检测。至此,Faster RCNN将目标检测过程中的候选区域产生、特征提取等过程都交由卷积神经网络完成,大大增强了检测的精度与提高了检测速度,Faster RCNN具体结构如图所示。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第4张图片

2.Mask R-CNN检测算法

Mask R-CNN是对Faster R-CNN的扩展,主要用于目标检测任务和实例分割任务,如今它已经成为实例分割任务的基线。Mask R-CNN具体结构如图所示,它根据提案并行预测边界框和分割蒙版。 Mask R-CNN在原有的分类分支和边界框分支上并行地增加了一个掩码分支。掩码分支是一个小型全卷积网络(FCN)并被应用于每个感兴趣区域(RoI),以像素到像素的方式预测实例掩码。具体来说,掩码分支通过四个卷积层和一个反卷积层从每个提案中生成小特征图。另外,Mask R-CNN将RoI Align替换原有的RoI Pooling,解决特征图和原始图像上的RoI不对准问题。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第5张图片

3.Cascade R-CNN检测算法

2018年蔡兆伟等人基于Faster R-CNN提出了新的方法Cascade R-CNN,并取得了可喜的结果,如图所示。Cascade R-CNN的成功可以归结为两个关键方面:(1)逐步完善预测;(2)训练分布的自适应处理。Cascade R-CNN通过多阈值级联机构,解决了传统单个网络设置阈值时对于高阈值正样本数量不够以及低阈值对于高IoU区域修正效果降低之间的矛盾。Cascade R-CNN算法的前半部分同Faster RCNN,是将一张原始的输入图像经过一个主干网络(卷积层),之后由RPN通过映射关系,生成一系列的可能存在目标的候选窗口,这时先将这些候选区域经过阈值为0.5的检测网络H1(此时正样本数量足够,可以保证模型不会过拟合,保障了准确率),将回归器修正后的新的候选区域重采样后再送入阈值为0.6的检测网络H2,之后再将H2(阈值为0.6的检测子网络)输出的新的区域位置送入阈值为0.7的检测网络H3进行修正,最
后H3得到的类别以及位置就是最终整个网络的输出结果,从而大大提高了位置的
准确性。
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法_第6张图片

总结

本文介绍了基于卷积神经网络的经典目标检测算法,后续将持续进行分享更新机器学习相关知识。关注即免费获取大量人工智能学习资料。

参考文献:苏 浩. 基于深度学习的遥感图像目标检测方法[D].本文仅用于学术分享,侵权联系删除。

你可能感兴趣的:(机器学习知识分享,目标检测,cnn)