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

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

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

COCO数据集

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

双阶段目标检测算法

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

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

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

RCNN

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

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

图1:RCNN算法流程

FastRCNN

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

FasterRCNN

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

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

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

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

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

图3:RPN的网络结构

FPN

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

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

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

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

图4:FPN的网络结构

MaskRCNN

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

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

图5:MaskRCNN的网络结构

单阶段目标检测算法

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

YOLO

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

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

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

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

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

图6:YOLO的检测流程

SSD

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

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

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

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

图7:SSD的网络结构

Retinanet

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

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

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

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

YOLO的后续版本

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

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

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

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

基于transformer

的方法

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

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

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

RelationNet

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

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

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

图8:Relationmodule的结构

DETR

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

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

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

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

图9:DETR的算法流程

总结

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

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

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

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

审核编辑:汤梓红

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.深度学习经典方法深度学习的常用方法这些经典的深度学习方法在不同的领域中都有广泛的应用。卷积神经网络用于图像识别,循环神经网络适用于序列数据的处理,生成对抗网络实现逼真样本的生成,深度强化学习处理智能决策制定者问题,自编码器用于数据压缩与重构,注意力机制实现对关键信息的关注。这些方法的不断发展和创新推动着深度学习领域的进步。 https://blog.csdn.net/m0_73916791/article/details/135119405
2.科学网—[转载]基于深度学习的MRI脑卒中病灶分割方法综述摘 要脑卒中病灶自动分割方法成为近几年的研究热点。为了全面研究用于MRI脑卒中病灶分割的深度学习方法的现状,针对脑卒中治疗的临床问题,进一步阐述了基于深度学习的病灶分割的研究背景及其挑战性,并介绍脑卒中病灶分割的常用公共数据集(ISLES和ATLAS)。然后,重点阐述了基于深度学习的脑卒中病灶分割方法的创新与进展,从网络https://wap.sciencenet.cn/blog-3472670-1422696.html
3.60项基于深度学习的SLAM顶会开源方案汇总(下篇)3D视觉工坊在本文中,我们有兴趣分析这种行为。为此,我们提出了一个新的框架,视觉定位从相对姿态。在这个框架内使用一个经典的基于特征的方法,我们展示了最先进的性能。用不同层次的学习方法代替经典方法,我们然后找出深度学习方法表现不佳的原因。基于我们的分析,我们对未来的工作提出了建议。https://www.shangyexinzhi.com/article/5946490.html
4.Light深度学习赋能光谱成像澎湃号·湃客澎湃新闻三、深度学习方法 计算光谱成像的过程编码采样系统设计和光谱图像重建,深度学习技术可以应用在该过程中的每一个方面。如何对这些不同的技术进行有效分类,是一个关键问题。综述提出根据光的属性进行分类,即将计算光谱成像系统按照编码方式的不同,分成了振幅编码、相位编码和波长编码。 https://www.thepaper.cn/newsDetail_forward_17489049
5.深度学习目标检测方法综述深度学习方法应用到目标检测领域之前, 目标检测领域发展平缓. 在2012年的ImageNet[2]分类任务中, 卷积神经网络的应用使得图像分类任务的效果大大提高, 在此推动下, Girshick等[3]首次在目标检测领域中使用了区域卷积网络(regions with CNN features, R-CNN), 在检测效果上取得了非常巨大的提升. 此后, 深度学习与https://c-s-a.org.cn/html/2022/2/8303.html
6.人脸识别技术全面总结:从传统方法到深度学习机器之心英国赫特福德大学与 GBG Plc 的研究者近日发布了一篇综述论文,对人脸识别方法进行了全面的梳理和总结,其中涵盖各种传统方法和如今风头正盛的深度学习方法。机器之心重点编译介绍了其中的深度学习方法部分,更多有关传统人脸识别方法的内容请参阅原论文。 论文地址:https://arxiv.org/abs/1811.00116 https://www.jiqizhixin.com/articles/2019-02-10-4
7.学术长安华山论剑:“深度学习与大数据感知”国际研讨会专家观点韩崇昭:基于脑认知机理的条件证据理论及其深度学习方法 在网络化系统对智能感知的需求方面,韩崇昭教授介绍,多平台协同作战战术信息系统,需要在武器协同数据链的支持下,将武器平台、传感器平台和指控单元进行有机地交联,完成目标探测与识别,目标跟踪与定位,目标协同精确打击与评估等功能,我国对网络化协同作战的重大需求是未来https://ipiu.xidian.edu.cn/info/1097/1189.htm
8.AI啊,我这里有些羞羞的东西,你要不要看一眼?新闻频道不过,用这些机器学习算法有一点麻烦:每次只能辨别出一个值,所以要针对三种活力不同的精子各运行一次,比较费时间。 再用深度学习方法 试完了传统机器学习方法,再来试试深度学习,用CNN来辨别。 这里不能直接用原始数据,需要提前做一些处理,从视频中提取原始帧,用光流生成帧序列的时间表示。 https://news.hexun.com/2019-12-07/199586680.html
9.基于机器学习的肠道菌群数据建模与分析研究综述(3)提取数据的深层次抽象特征,其中主要包括两部分工作,一是通过机器学习的方法找到潜藏的特征信息标志量[26],如Montassier等[27]使用机器学习方法开发了一种BSI风险指数,该指数结合线性回归算法用于预测BSI发病率;二是采用深度学习方法将原始数据进行重组,例如Zhang等[17]通过浅层自编码器、深层自编码器、变分自编码http://journals.im.ac.cn/html/wswxtbcn/2021/1/tb21010180.htm
10.深度学习模型调优方法(总结)51CTO博客深度学习模型调优方法(总结) 一、总结 一句话总结: 超参数的优化,其它比如正则化(regularization)、丢弃参数(dropout)、提前停止训练(early stopping) 1、如何判断模型好坏? 【查看loss和accuracy】:通过模型训练跑代码,我们可以分别从训练集和测试集上看到这个模型造成的损失大小(loss),还有它的精确率(accuracy)。 https://blog.51cto.com/u_15079076/3828696
11.英特尔助力TechMahindra优化其对话式AI平台性能3. 采用 TTS 模型的深度学习方法 4. 模型架构概述 5. 面向英特尔? 架构的优化方法和性能结果 6. 配置详情 7. 结论 8. 适用的解决方案 Tech Mahindra 与英特尔合作开发了以 Tacotron2 和 Fastspeech2 作为特征生成网络,Waveglow 作为声码器的模型架构。这些架构能在推理期间兼顾合成语音质量和实时率。https://www.intel.cn/content/www/cn/zh/customer-spotlight/cases/sayint-optimization-for-neural-tts.html
12.一文看懂机器学习「3种学习方法+7个实操步骤+15种常见算法」机器学习研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。 所以,机器学习不是某种具体的算法,而是很多算法的统称。 机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。 https://easyai.tech/ai-definition/machine-learning/
13.图像目标分割1概述纯粹的三维数据集是稀缺的,通常可以提供CAD网格或者其他的体元表示如点云等。为分割问题获取三维数据集是困难的,因此很少有深度学习方法可以处理这种数据。 斯坦福2D-3D-S数据集(http://buildingparser.stanford.edu)是一个多模态、大规模室内空间数据集,是斯坦福三维语义分析工作[64]的扩展。提供了多个模态:二维RGBhttps://developer.aliyun.com/article/1208121