赞
踩
目标检测是计算机视觉的一个非常重要的核心方向,它的主要任务目标定位和目标分类。
在深度学习介入该领域之前,传统的目标检测思路包括区域选择、手动特征提取、分类器分类。由于手动提取特征的方法往往很难满足目标的多样化特征,传统方法始终没能很好的解决目标检测问题。
深度学习兴起之后,神经网络可以从大量数据中自动学出强大的特征提取和拟合能力,因而涌现出很多性能优良的目标检测算法。
基于深度学习的目标检测方法大致可分为三类——双阶段目标检测、单阶段目标检测、基于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秒,速度有大幅提升,每张
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。