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

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

3天内不再提示

基于深度学习的三种目标检测方法

新机器视觉 来源:CSDNB博客深兰深延AI 作者:CSDNB博客深兰深延 2022-04-06 14:56 次阅读

目标检测计算机视觉的一个非常重要的核心方向,它的主要任务目标定位和目标分类。

深度学习介入该领域之前,传统的目标检测思路包括区域选择、手动特征提取、分类器分类。由于手动提取特征的方法往往很难满足目标的多样化特征,传统方法始终没能很好的解决目标检测问题。

深度学习兴起之后,神经网络可以从大量数据中自动学出强大的特征提取和拟合能力,因而涌现出很多性能优良的目标检测算法

基于深度学习的目标检测方法大致可分为三类——双阶段目标检测、单阶段目标检测、基于transformer的目标检测,本文将分别介绍这三类方法。

常用数据集

VOC数据集

VOC数据集[1]是目标检测领域的常用数据集,共有约10,000张带有边界框的图片用于训练和验证,每张图片有像素级别的分割标注、边界框标注以及目标类别标注,其中包含车辆、家具、动物、人4个大类,20个小类。

该数据集被广泛用作目标检测、语义分割、分类任务的基准数据集。

COCO数据集

COCO[2]的全称是Microsoft Common Objects in Context,它是微软于2014年出资标注的数据集,与ImageNet竞赛一样,COCO目标检测竞赛也被视为是计算机视觉领域最受关注和最权威的比赛之一。

相比于规模较小的VOC数据集,COCO是一个大型、丰富的物体检测、分割数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,并通过精确的segmentation进行目标位置的标定。

图像包括91类目标,328,000影像和2,500,000个label。提供的类别有80 类,有超过33 万张图片,其中20 万张有标注,整个数据集中个体的数目超过150 万个。

双阶段目标检测算法

相较于单阶段目标检测算法,双阶段目标检测算法先根据图像提取候选框,然后基于候选区域做二次修正得到检测点结果,检测精度较高,但检测速度较慢。

这类算法的开山之作是RCNN[3],随后Fast RCNN[4]、Faster RCNN[5]依次对其进行了改进。

由于优秀的性能,Faster RCNN至今仍然是目标检测领域很有竞争力的算法。随后,FPN[6]、Mask RCNN[7]等算法又针对Faster RCNN的不足提出了改进,这进一步丰富了Faster RCNN的组件,提升了它的性能。

RCNN

RCNN是首个将深度学习应用到目标检测领域的工作,它的算法的思想较为简单:对于每张图片,RCNN首先采用选择性搜索算法[1]生成大约2000个候选区域。随后将每个候选区域的尺寸转换为固定大小,并用CNN提取候选区域的特征。随后使用SVM分类器判断候选区域的类别,使用线性回归模型,为每个物体生成更精确的边界框。

尽管RCNN取得了很大进展,它仍然有很多缺点:首先,整个目标检测阶段涉及到三个模型,用于特征提取的CNN、用于分辨目标物体类别的SVM分类器、用于调整边界框的线性回归模型。RCNN无法做到端到端训练,只能分别训练这三个模型,这增大了训练难度与训练时间。

其次,每张图片要提取2000个训练区域,随后又要用CNN分别提取每个区域的特征,特征的数量将非常大,这降低了模型的推理速度。通常每张图片需要45秒进行预测,基本无法处理大型数据集。

基于深度学习的三种目标检测方法

图1:RCNN算法流程

Fast RCNN

在RCNN中,每个候选区域都需要用CNN单独提取特征。为了减少算法的计算时间,Fast-RCNN希望在每张图片上只使用一次CNN,就能提取到所有关注区域的特征。为此,RCNN设计了如下步骤的目标检测算法:

首先对图片使用启发式算法,得到大量候选区域。随后将图片输入到卷积神经网络中,得到图片的特征,与候选区域的相对位置结合,就可以得到候选区域的特征。随后使用ROI池化层将候选区域调整至相同尺寸,并将调整后的结构输入到全连接神经网络中。最后在全连接神经网络后面添加softmax层,预测目标的列别;并以相同的方式添加线性回归层。

与RCNN相比,Fast RCNN计算一张图片只需要2秒,速度有大幅提升,每张图片的计算时间只有但仍不够理想。因为它依然用到了选择性搜索方法得到感兴趣区域,而这一过程通常很慢。

基于深度学习的三种目标检测方法

图2:Fast RCNN网络结构

Faster RCNN

Faster RCNN针对感兴趣区域的生成方式,对RCNN进行了优化,进一步提高了计算速度和准确率。具体来说,Faster RCNN使用Reigion Proposal Network(RPN)生成感兴趣区域:

首先,将图片输入到CNN中得到高层特征映射,随后将其传递到RPN中。

RPN会在特征映射上使用一个滑动窗口,并在每个窗口设置K个不同大小、不同长宽比的先验框。

对于每个先验框,RPN会分别预测该框包含目标物体的概率,以及对该框的调整回归量。最终得到不同形状、尺寸的边界框,调增尺寸后将其传递到完全连接层,得到目标类别以及最终的先验框。

Faster RCNN进一步提高了计算速度,并获得了较高的准确率。时至今日,依然是目标检测领域的主流算法之一。

基于深度学习的三种目标检测方法

图3:RPN的网络结构

FPN

Faster R-CNN是利用单个高层特征图(下采样四倍的卷积层——Conv4)进行物体的分类和bounding box的回归。这样做对小物体的检测不利,因为小物体本身具有的像素信息较少,在下采样的过程中,这些信息很容易丢失,从而降低了算法的性能。

为了处理这种物体大小差异十分明显的检测问题,FPN提出了特征金字塔网络结构,它引入了多尺度特征,在只增加少量计算量的情况下,提升小物体的检测性能。

具体来说,Faster RCNN将最后一层特征输入到了RPN中,最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。

而FPN将P2、P3、P4、P5、P6这五个特征层的特征都输入到了RPN中。每个特征层的下采样倍数不同,这意味着它们具有不同的尺度信息分离,因此作者将322、642、1282、2562、5122这五种尺度的anchor,分别对应到P2、P3、P4、P5、P6这五个特征层上,这样一来,每个特征层只需要专门处理单一的尺度信息即可。

此外,作者通过实验发现,如果将这5个特征层后面的RPN参数共享,所得到的结果与不共享几乎没有差别。这说明不同下采样倍数之间的特征有相似语义信息。

在FPN问世之后,立刻成为了Faster RCNN的必要组成部件。

基于深度学习的三种目标检测方法

图4:FPN的网络结构

Mask RCNN

相较于Faster RCNN,Mask RCNN采用了全新的、性能更强的ResNeXt-101+FPN的组合作为backbone提取输入图片的特征。并在网络最后额外添加了一个分支,进行mask预测任务,这将有助于提升特征提取网络和RPN的性能。

此外,Mask RCNN还提出了一个改进,将原先的ROI池化层改进成ROIAlign层。在Faster RCNN中,有两次整数化的操作:(1)RPN输出的边界框回归值通常是小数,为了方便操作,会直接通过四舍五入把其整数化。(2)在ROI池化层中,整数化后的边界区域被平均分割成了K×K个单元,因此需要对这些单元的边界进一步整数化。

Mask RCNN的作者指出,经过这两次整数化后的候选框,已经和最开始RPN输出的候选框有了一定的位置偏差,这将影响模型的准确度。为此,作者提出了ROI Align方法,它没有采用整数化操作,而是使用双线性插值方法,获得浮点数坐标的像素值。

基于深度学习的三种目标检测方法

图5:Mask RCNN的网络结构

单阶段目标检测算法

相较于双阶段目标检测算法,单阶段目标验测算法直接对图像进行计算生成检测结果,检测低速度快,但检测精度低。

这类算法的开山之作是YOLO[8],随后SSD [9]、Retinanet[10]依次对其进行了改进,提出YOLO的团队将这些有助于提升性能的 trick融入到YOLO算法中,后续又提出了4个改进版本YOLOv2~YOLOv5。

尽管预测准确率不如双阶段目标检测算法,由于较快的运行速度,YOLO成为了工业界的主流。

YOLO

双阶段目标检测需要预先设置大量先验框,并且需要专门的神经网络RPN对先验框进行位置修正。这种设定使得双阶段目标检测算法复杂且计算慢。

YOLO是单阶段目标检测的开山之作,它只需要用神经网络处理一次图片,就可以同时预测得到位置和类别,从而将目标检测任务定义为端到端的回归问题,提升了计算速度。YOLO的工作流程如下:

对于一张输入图片,首先将图片缩放成统一的尺寸,并在图片上划分出若干表格。随后使用卷积神经网络提取图片特征,并使用全连接层在每个网格上进行回归预测,每个网格预测K个box,每个box预测五个回归值。其中的四个回归值代表box的位置,第五个回归值代表box中含有物体的概率和位置的准确程度。

随后对于含有物体的box,使用全连接层,回归预测物体的在各个类别的条件概率。因而,卷积网络共输出的预测值个数为N×(K×5+C),其中N为网格数,K为每个网格生成box个数,C为类别数。

尽管单阶段模型显著提高了计算速度,YOLO划分网格的方式较为粗糙,在小目标检测任务上表现不佳,总体性能弱于Faster RCNN。

基于深度学习的三种目标检测方法

图6:YOLO的检测流程

SSD

针对YOLO的不足,SSD借鉴了双阶段目标检测算法的一些trick,在YOLO的基础上进行了一系列改进:

YOLO利用单个高层特征进行目标检测,SSD则是将特征提取网络中不同层的多个特征输入到目标检测模块,以希望提升小物体检测的精度。

YOLO在每个网格上预测多个边界框,但这些预测都相对这个正方形网格本身,与真实目标多变的形状差异较大,这使得YOLO需要在训练过程中自适应目标的形状。SSD借鉴了Faster R-CNN中先验框理念,为每个网格设置不同尺度、长宽比的先验框,这在一定程度上减少训练难度。

SSD还使用卷积层络替代全连接层,针对不同特征图进行回归预测,这样一来,对于形状为mxnxp的特征图,只需要采用3x3xp这样比较小的卷积核得到检测值,进一步减少了模型的参数量,提高了计算速度。

SSD的改进,使得单阶段目标检测算法的性能基本与当时的Faster-RCNN持平,不过后续又被Faster-RCNN类算法超越。

基于深度学习的三种目标检测方法

图7:SSD的网络结构

Retinanet

相较于SSD,RetinaNet并没有模型层面的创新,模型的性能提升主要源自于Focal Loss,它进一步解决了目标检测中的类别不平衡问题。

单阶段目标检测模型常常会面临严重的正负样本不平衡问题,由于算法会在图片的每个位置密集抽样,而图片中的样本数量有限,因此候选区域中的物体数量会显著小于背景数量。

对于两阶段目标检测模型,正负样本不平衡问题得到了一定的缓解。因为第一阶段的RPN可以避免生成很大一部分负样本,最终第二阶段的检测模块只需要处理少量候选框。

针对正负样本不均衡问题,SSD算法采用了hard mining,从大量的负样本中选出loss最大的topk个负样本以保证正负样本比例为1:3。

相较于SSD的抽样方法,Focal Loss从损失函数的视角来解决样本不平衡问题,它根据置信度动态调整交叉熵损失函数,当预测正确的置信度增加时,loss的权重系数会逐渐衰减至0,这使得模型训练的loss更关注难例,而大量容易的例子loss贡献很低。

YOLO的后续版本

YOLO的团队借鉴了其它有助于提升性能的 trick融入到YOLO算法中,后续又提出了4个改进版本YOLOv2~YOLOv5。

YOLOv2使用了很多trick,包括:Batch Normalization、高分辨率图像分类器、使用先验框、聚类提取先验框的尺度信息、约束预测边框的位置、在passthrough层检测细粒度特征、分层分类等。

YOLOv3借鉴了SSD的思想,使用了多尺度特征进行目标检测,与SSD不同的是,YOLOv3采用上采样+特征融合的方式,对多尺度特征进行了一定的融合。

后续版本采用了Retinanet提出的Facol loss,缓解了正负样本不均衡问题,进一步提升了模型表现。

基于transformer

的方法

对于目标检测任务而言,理论上讲,各个目标之间的关系是有助于提升目标检测效果的。尽管传统目标检测方法使用到了目标之间的关系,直到Transformer[11]模型面世,无论是单阶段还是双阶段目标检测,都没有很好地利用到注意力机制。

一个可能的原因是目标与目标之间的关系难以建模,因为目标的位置、尺度、类别、数量都会因图像的不同而不同。而现代基于CNN的方法大多只有一个简单、规则的网络结构,对于上述复杂现象有些无能为力。

针对这种情况,Relation Net[12]和DETR[13]利用Transformer将注意力机制引入到目标检测领域。Relation Net利用Transformer对不同目标之间的关系建模,在特征之中融入了关系信息,实现了特征增强。DETR则是基于Transformer提出了全新的目标检测架构,开启了目标检测的新时代。

Relation Net

尽管用到了Transformer,Relation Net仍然是基于Faster RCNN的改进工作。Faster RCNN会通过RPN网络生成一系列感兴趣区域,随后将感兴趣区域输入到神经网络中预测目标的位置和类别。

Relation Net并没有直接将感兴趣区域输入到最终的预测网络中,而是先将这些感兴趣区域输入到transformer中,利用注意力机制,融合不同感兴趣区域的关系信息,进而实现特征增强。随后,再将transformer的输出送入到最终的预测网络中,预测目标的位置和类别。

此外,作者还用transformer模块取代了非极大值抑制模块(NMS),真正实现了端到端训练。

基于深度学习的三种目标检测方法

图8:Relation module的结构

DETR

DETR是首个用transformer完成目标检测任务的代表性工作。

首先,DETR使用CNN提取图片的特征,再加上NLP领域常用的位置编码,最终生成了一批序列化数据。

在encoder阶段,将序列化数据其送入encoder中,利用注意力机制提取数据中的特征。在decoder阶段,输入N个随机初始化向量,每个object query关注图片的不同位置。经过decoder的解码,最终会生成N个向量,每个向量对应一个检测到的目标。最后将这N个向量输入到神经网络中,得到每个目标的类别和位置。

相较于其它目标检测算法,DETR生成的检测框数量大幅减少,与真实的检测框数量基本一致。DETR使用匈牙利算法,将预测框与真实框进行了匹配,随后就可以计算出loss,完成对模型的训练。

DETR取得了好于Faster RCNN的检测效果,并且它不需要预先指定候选区域,不需要使用NMS去除重复的目标框,算法流程十分简洁。

基于深度学习的三种目标检测方法

图9:DETR的算法流程

总结

凭借着强大的特征提取能力,深度学习帮助目标检测算法取得了长足的发展。

从RCNN开始,相关科研人员不断引入新的机制、新的trick,以提高这类算法的精度。最终,以Faster RCNN为代表的双阶段目标检测算法取得了很高的预测准确率。

相较于Faster RCNN,以YOLO为代表的单阶段目标检测算法在保证较高预测精度的同时取得了很高的计算速度,凭借其优秀的实时性,在工业界取得了广泛应用。

去年提出的以DETR为代表的视觉Transformer算法将注意力机制引入到目标检测领域。DETR凭借其简洁优雅的结构、超过Faster RCNN的准确率,吸引了越来越多的目标检测从业者开展视觉transformer的研究。从目前的发展态势来看,视觉transformer必将进一步推动目标检测的快速进展。

原文标题:目标检测 - 主流算法介绍 - 从RCNN到DETR

文章出处:【微信公众号:机器视觉智能检测】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

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

    关注

    19

    文章

    7489

    浏览量

    87876
  • 目标检测
    +关注

    关注

    0

    文章

    209

    浏览量

    15605
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121118

原文标题:目标检测 - 主流算法介绍 - 从RCNN到DETR

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 198次阅读
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的<b class='flag-5'>方法</b>

    数字示波器的测量方法有哪三种

    数字示波器是一广泛应用于电子测量领域的仪器,它能够实时显示电压波形,帮助工程师和威廉希尔官方网站 人员对电子信号进行分析和测量。数字示波器的测量方法有很多种,不同的测量方法适用于不同的应用场景。以下是三种
    的头像 发表于 07-17 18:02 1624次阅读

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

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

    深度学习模型量化方法

    深度学习模型量化是一重要的模型轻量化威廉希尔官方网站 ,旨在通过减少网络参数的比特宽度来减小模型大小和加速推理过程,同时尽量保持模型性能。从而达到把模型部署到边缘或者低算力设备上,实现降本增效的目标
    的头像 发表于 07-15 11:01 492次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>模型量化<b class='flag-5'>方法</b>

    深度学习中的时间序列分类方法

    的发展,基于深度学习的TSC方法逐渐展现出其强大的自动特征提取和分类能力。本文将从多个角度对深度学习在时间序列分类中的应用进行综述,探讨常用
    的头像 发表于 07-09 15:54 890次阅读

    基于AI深度学习的缺陷检测系统

    在工业生产中,缺陷检测是确保产品质量的关键环节。传统的人工检测方法不仅效率低下,且易受人为因素影响,导致误检和漏检问题频发。随着人工智能威廉希尔官方网站 的飞速发展,特别是深度
    的头像 发表于 07-08 10:30 1377次阅读

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

    )的广泛应用,小目标检测的性能得到了显著提升。本文将详细探讨基于深度学习的小目标检测威廉希尔官方网站 ,包括其
    的头像 发表于 07-04 17:25 867次阅读

    信号调制的三种基本方法

    号调制的三种基本方法:调幅(AM)、调频(FM)和调相(PM),并分析它们的优缺点及应用场景。 调幅(AM) 2.1 调幅原理 调幅(Amplitude Modulation,AM)是一将低频信号的幅度变化映射到高频载波信号的
    的头像 发表于 06-03 09:38 3816次阅读

    深度解析深度学习下的语义SLAM

    随着深度学习威廉希尔官方网站 的兴起,计算机视觉的许多传统领域都取得了突破性进展,例如目标检测、识别和分类等领域。近年来,研究人员开始在视觉SLAM算法中引入
    发表于 04-23 17:18 1287次阅读
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>学习</b>下的语义SLAM

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

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

    菱M70 PLC增加注解的三种方法简析

    菱M70 PLC增加注解的三种方法
    的头像 发表于 02-26 09:59 1082次阅读
    <b class='flag-5'>三</b>菱M70 PLC增加注解的<b class='flag-5'>三种方法</b>简析

    放大电路有哪三种基本分析方法?举例说明

    放大电路是电子电路的重要组成部分,它起到放大信号的作用。在设计和分析放大电路时,有三种基本的分析方法:传输特性分析、小信号分析和大信号分析。接下来,我将详细介绍这三种分析方法,并举例说
    的头像 发表于 02-25 15:56 3157次阅读

    传统激光功率衰减的三种方法

    传统激光功率衰减通常使用以下三种方法,分别为中性密度衰减片衰减法、偏振衰减法、镀膜光学镜片衰减法。
    的头像 发表于 01-20 10:42 1736次阅读
    传统激光功率衰减的<b class='flag-5'>三种方法</b>

    异步电机主要的三种调速方法解析

    异步电机主要的三种调速方法解析
    的头像 发表于 01-07 17:50 2391次阅读
    异步电机主要的<b class='flag-5'>三种</b>调速<b class='flag-5'>方法</b>解析

    无人机测深的三种方法总结

    无论是陆地测绘还是海洋测绘,测绘行业都是朝着航空方向发展。下面结合搜索到的论文和相关网页,总结下无人机测深的方法,总共有三种:1)机载激光雷达;2)机载探地雷达(GPR);3)机载高精度测深仪。
    的头像 发表于 01-05 11:24 1835次阅读
    无人机测深的<b class='flag-5'>三种方法</b>总结