OpenMMLab AI实战营 第四课笔记
- OpenMMLab AI实战营 第四课笔记
- 目标检测与MMDetection
- 1.什么是目标检测
- 2.基础知识
- 3.两阶段目标检测算法
- 4.多尺度检测技术
- 5.单阶段目标检测算法
- 6.无锚框目标检测算法
- 7.Detection Transformers
- 8.目标检测模型的评估方法Evaluaion
- 9.MMDetection
目标检测与MMDetection
1.什么是目标检测
1.1 目标检测的应用
1.1.1 目标检测 in 人脸识别
人脸检测是目标检测的一种特殊情形。目标检测(通用物体检测)针对的是多类别,人脸检测是二分类,只检测人脸这个类别。
通用物体检测算法都可以直接拿来做人脸检测,只需要改一下输出类别就可以。但是如果直接拿来用,会出现一些问题:
通用物体检测考虑的是更广泛通用的物体,这些类别具有宽泛的意义。这些物体具有多种特点,场景复杂多变,物体形状、背景、大小、尺寸等都比人脸这种单一的类别更复杂。人脸检测虽然类别单一,但也不是那种简单的检测任务,人脸的角度、背景光照、尺度、类人脸的干扰物体、极小人脸等都是人脸检测里面的难题。而且通用目标检测模型对于人脸检测来说存在冗余,并且缺乏对人脸数据针对性的设计(如anchor设计,尤其是对于尺度范围很大的人脸检测场景来说基本上就很难训练出好的结果了)。因此在通用物体上表现好的模型在人脸检测上不一定表现的好。
人脸检测的问题可以针对性的解决,如anchor的设置、背景的处理、抑制误检、漏检等。要想直接将SOTA通用物体检测算法直接套在人脸检测上,不一定能达到最好的效果,需要具体情况具体分析。
基于目标检测在人脸识别上的应用,可以扩展到以下应用:
- 身份识别
- 属性分析
1.1.2 目标检测 in 智慧城市
目标检测是智慧城市的眼睛和窗口。
简单来说,主要包括以下场景中的应用:
- 垃圾检测:保持城市干净整洁
- 非法占道检测
- 违章停车检测:确保行人安全
- 危险物体检测:确保道路安全
- 自助服务、智能办公等
- 烟雾和火灾侦测:确保环境安全等
- 标准着装监测、违规吸烟监测等
- 危险行为监测:保障医院安全
1.1.3 目标检测 in 自动驾驶
目标检测在自动驾驶中的应用,主要体现在环境感知和路径规划与控制中。
自动驾驶在道路交通上的感知功能主要包括以下三个方面:
- 动态目标监测(车辆、行人和非机动车)
- 静态物体识别(交通标志和红绿灯)
- 可行驶区域的分割(道路区域和车道线)
目标检测难点:
- 遮挡情况较多,朝向角准确性问题;
- 行人车辆类型种类较多,容易误检;
- 多目标追踪,ID切换问题;
对于视觉目标检测,在恶劣天气环境下,感知性能会有一定的下降;在夜晚灯光昏暗时,容易出现漏检的问题。如果结合激光雷达的结果进行融合,对于目标的召回率会大幅提高。
1.1.4 目标检测 in 下游视觉任务
类似地,目标检测在其他下游视觉任务中的应用也有很多,例如:
- OCR识别中,使用目标检测来检测文字出现的区域,从而识别区域中的文字
- 在人体姿态估计中,使用目标检测来定位
1.2 目标检测 vs 图像分类
可以来对比下图像分类与目标检测的异同
不同之处在于,图像分类通常只有一个物体,且主体通常位于图像中央,并占据主要面积;而目标检测中,物体数量不固定,物体位置不固定,物体大小也不固定。
相同之处在于,二者都需要算法去“理解”图像的内容,并通过深度神经网络来实现。
1.2.1 滑动窗口Sliding Window
滑动窗口的过程:
- 1.设定一个固定大小的窗口
- 2.遍历图像所有位置,所到之处用分类模型(假设已经训练好)识别窗口中的内容。
- 3.为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片。
首先固定一个于滑动窗口区域,然后将滑动窗口在图像上按照指定步长进行滑动,对于每一的滑动得到区域进行预测,判断该区域中存在目标的概率。
调整滑动窗口的大小、滑动步长,继续以同样的方式滑动,预测。
1.2.2 滑窗的效率问题
滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太小方块,卷积网络要一个个地处理。如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。
另外,滑动窗本身窗口大小大部分情况下并不完全贴合目标尺度;一张图滑动窗预测后,会出输多个结果,需对输出结果做NMS(非极大值抑制),再作为最终输出结果。改进的思路有两种:
- 使用启发式算法替换暴力遍历
- 减少冗余计算,使用卷积网络实现密集预测
(这是目前普遍采用的方式。)
1.2.2.1 改进思路1:区域提议
改进思路1是区域提议
- 基于图像颜色或底层特征,找出可能含有物体的区域,再送给神经网络识别。
- 相比于普通滑窗,减少了框体的个数,从而保证召回率。
1.2.2.2 改进思路2:分析滑动窗口中的重复计算
改进思路2是分析滑窗中的重复计算
通过分析,我们可以知道,在卷积层中重叠部分用相同的卷积核计算了两次。
那么自然地,可以通过消除滑窗中的重复计算来进行改进。
1.2.2.3 消除滑窗中的重复计算
在原图滑窗中,卷积计算重复计算了重叠区域。
消除滑窗中重复计算的改进思路是。用卷积一次性计算所有特征,再取出对应位置的特征完成分类。
也就是基于特征图滑窗,这样一来,原来的重叠区域只计算了一次卷积特征,则计算复杂度与窗的个数无关。
1.2.2.4 在特征图上进行密集预测
另一方面,在特征图上进行密集预测,不同特征的感受野自然形成一系列等距离分布的窗。
密集预测实际上是一种隐式的滑窗方法,计算效率远高于滑窗。
1.3 目标检测的基本范式
这里简单概述一下目标检测的基本范式。
目标检测主要可以归纳为两种方法:
- 单阶段方法
以某种方式产生窗体,再基于窗口内的特征进行预测。- 双阶段方法
在特征图上基于单点特征实现密集预测。对于目标检测神经网络模型,包括主干网络(Backbone)和检测头(Head)等结构。
1.4 目标检测技术的演进
目标检测技术演进:从R-CNN、Fast R-CNN、Faster R-CNN到YOLO、SSD。
目前学术和工业界出现的目标检测算法分成3类:
- 1.传统的目标检测算法:
Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;- 2.候选区域/框 + 深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如:
- R-CNN(Selective Search + CNN + SVM)SPP-net(ROI Pooling)
- Fast R-CNN(Selective Search + CNN + ROI)
- Faster R-CNN(RPN + CNN + ROI)R-FCN等系列方法;
- 3.基于深度学习的回归方法:
- YOLO/SSD/DenseBox 等方法;
- 以及最近出现的结合RNN算法的RRC detection;
- 结合DPM的Deformable CNN等
- 多尺度技术
FPN- 级联方法
Cascade R-CNN、HTC- 可参考的材料:
- 深度卷积神经网络在计算机视觉中的应用研究综述-卢宏涛
- 基于深度学习的计算机视觉研究新进展-卢宏涛
从目标检测技术的演进过程来看,我们可以从深度学习网络的推理精度、推理速度以及模型体积来讨论。
- 推理精度(mAP on COCO)Faster R-CNN(21-34%)——>Cascade R-CNN(42.8%)——>HTC(47.1%)——>Deformable DETR(52.3%)——>SwinTrans+HTC(57.7%)
- 推理速度R-CNN(40s)<——Faster R-CNN(100-200ms)<——RetinaNet(73-198ms)<——YOLO(22ms)<——SSD(21ms)<——YOLOX-s(10ms)<——YOLOv5(6ms)
- 模型体积YOLOv3(65MB)——>Faster R-CNN(42MB)——>RetinaNet(34MB)——>YOLOv5n——>YOLOX-Nano(0.9MB)
2.基础知识
2.1 框,边界框(Bounding Box)
框泛指图像上的矩形框,边界横平竖直
描述一个框,需要4个像素值:
- 方式1:左上,右下边界坐标\((l. t, r, b)\).
- 方式2:中心坐标和框的长宽\((x,y,w,h)\).
边界框,通常指紧密包围感兴趣物体的框
检测任务,要求为图中出现的每个物体预测一个边界框。
2.2 框相关的概念
框相关的概念
- 1.区域(Region):框的同义词。
- 2.区域提议(Region Proposal,Proposal)
指算法预测的可能包含物体的框,某种识别能力不强的算法的初步预测结果。- 3.感兴趣区域(Region of interset,ROI)
当我们谈论需要进一步检测这一框中是否有物体时,通常称为感兴趣区域。- 4.锚框(Anchor Box,Anchor)
图中预设的一系列基准框,类似滑窗,一些检测算法会基于锚框预测边界框。
2.3 交并比(Intersection Over Union)
交并比(IoU),定义为两矩阵交集面积与并集面积之比,是矩阵框重合程度的衡量指标。
在目标检测任务中,通常会使用交并比(Intersection of Union,IoU)作为衡量指标,来衡量两个矩形框之间的关系。
例如在基于锚框的目标检测算法中,我们知道当锚框中包含物体时,我们需要预测物体类别并微调锚框的坐标,从而获得最终的预测框。
2.4 置信度
置信度(Confidence Score):模型认可自身预测结果的程度,通常需要为每个框预测一个置信度。
- 大部分算法取分类模型预测物体属于特定类别的概率。
- 部分算法让模型独立于分类单独预测一个置信度。
- 我们倾向于置信度高的预测结果。
2.5 非极大值抑制
非极大值预测 nms
滑窗类算法,通常会在物体周围给出多个相近的检测框。这些框实际指向同一物体,只需要保留其中置信度最高的。
通过非极大值预测(NMS)
大致流程:
1.选取这类box中scores最大的那一个,记为current_box,并保留它(为什么保留它,因为它预测出当前位置有物体的概率最大啊,对于我们来说当前confidence越大说明当前box中包含物体的可能行就越大)
2.计算current_box与其余的box的IOU
3.如果其IOU大于我们设定的阈值,那么就舍弃这些boxes(由于可能这两个box表示同一目标,因此这两个box的IOU就比较大,会超过我们设定的阈值,所以就保留分数高的那一个)
4.从最后剩余的boxes中,再找出最大scores的那一个(之前那个大的已经保存到输出的数组中,这个是从剩下的里面再挑一个最大的),如此循环往复。
2.6 边界框回归
问题
滑窗(或其他方式产生的基准框)与物体精准边界通常有偏差。处理方法
让模型在预测物体类别同时预测边界框相对于滑窗的偏移量。
在多任务学习中,卷积网络处理特征的方式不同。
- \(C+1\)维分类概率——>分类损失
- 4维偏移量——>回归损失
2.7 边界框编码
边界框编码Bbox Coding
边界框的绝对偏移量在数值上通常较大,不利于神经网络训练,通常需要对偏移量进行编码,作为回归模型的预测目标。
- 例R-CNN系列算法的编码方案:对于基准框\(P(p_x, p_y, p_w)\)和真值框\(G=(g_x, g_y, g_h, g_w)\)。
编码值\(T = (t_x, t_y, t_h, t_w) = \left(\frac{g_x - p_x}{p_w}. \frac{g_y-p_y}{p_h},log(\frac{g_w}{p_w}),log(\frac{g_h}{p_h}) \right)\).- 推理时,已知基准框\(P\)和回归模型预测的偏移量编码\(T\),解码得到预测框。
3.两阶段目标检测算法
3.1 两阶段算法概述
R-CNN是第一个用深度学习解决目标检测问题的算法,也是两阶段法的奠基者,因包含区域提议和区域识别两个阶段得名。
经历一系列发展到Faster R-CNN和Mask R-CNN逐渐成熟。
R-CNN流程:
区域提名(SS) --> CNN提取特征 --> SVM分类 --> 边框回归SPPNet流程:
CNN提取特征 --> 区域提名(SS) --> SVM分类 --> 边框回归Fast R-CNN流程:
CNN提取特征 --> 区域提名(SS) --> 分类(softmax)+边框回归Faster R-CNN流程:
CNN提取特征 --> 区域提名(RPN) --> 分类(softmax)+边框回归
结合比较先进的主干网络和多尺度技术,可以达到比较优越的检测精度,使用广泛。
近几年(2020-)随着单阶段算法精度和速度的提高逐渐被取代。
3.2 Region-based CNN(2013)
R-CNN的两阶段分别为以下:
- Stage1 产生提议框
使用传统视觉算法,推测可能包含物体的框(约2000个)。
- 不漏:真正包含物体的框,通常会被选中;
- 不准:大部分提议框并不包含物体;
- Stage2 识别提议框
将提议框内的图像缩放至固定大小(原始论文227x227),送入卷积网络进一步识别,得到准确结果。- 两阶段的流程为:
输入图像——>区域提议——>裁剪缩放——>分类——>汇总所有框体再NMS产生最终结果。
3.2.1 R-CNN的训练
R-CNN的训练流程:①——>②——>③.
- ①产生提议框——裁剪缩放
- ②生成用于训练分类网络的类别标签
- ——> 与某个真值IoU大于0.5
- ——> 类别:真值框的类别=人
边界框偏移量=编码(真值框-提议框)- ——> 与图中所有真值框IoU都小于0.5
- ——> 类别:背景区域
边界框偏移量=0:不计入回归损失- ③收集所有图像块及对应的类别标签,训练分类模型
- (固定规则的算法,则不需要训练)
3.2.2 R-CNN相比于传统方法的提升
R-CNN相比于传统方法的提升
传统的目标检测框架,主要包括三个步骤:
- ① 利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域;
- ② 提取候选区域相关的视觉特征。比如人脸检测常用的 Harr 特征;行人检测和普通目标检测常用的 HOG 特征等;
- ③ 利用分类器进行识别,比如常用的 SVM 模型。
R-CNN核心思想: 对每张图片选取多个区域,然后每个区域作为一个样本进入一个卷积神经网络来抽取特征。
- 1.R-CNN网络结构
R-CNN算法是较早提出的两阶段目标检测算法,它先找出 Region Proposal,再进行分类和回归。
- 所谓 Region Proposal 就是图中目标可能出现的位置。
- 因为传统方法需要枚举的区域太多了,所以通过利用图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的响应比。所以,问题就转变成找出可能含有物体的候选框,这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。
3.2.3 R-CNN的问题
- 2.R-CNN应用流程
对于每张输入的图像,R-CNN目标检测主要包括下述步骤:
- ① 利用选择性搜索 Selective Search 算法在图像中从下到上提取 2000个左右的可能包含物体的候选区域 Region Proposal
- ② 因为获取到的候选区域大小各不相同,所以需要将每个 Region Proposal 缩放(warp)成统一的\(227 \times 227\)的大小并输入到 CNN,将CNN的 fc7 层的输出作为特征
- ③ 将每个 Region Proposal 提取到的CNN特征输入到SVM进行分类
- ④ 使用这些区域特征来训练线性回归器对区域位置进行调整
3.3 Fast R-CNN(2014)
Fast R-CNN
Fast R-CNN,主要是基于R-CNN的基础上做了改进,减少了重复计算。
可以从两阶段方法来考虑优化的方式
- Stage1 产生提议框
仍然依赖传统CV方法。- Stage2 识别提议框
- 1.卷积层应用于全图,一次性计算所有位置的图像特征。
- 2.剪裁提议框对应的特征图送入全连接层计算分类。
- 问题:提议框大小不同,需要处理成固定尺寸才能送入全连接层。
3.3.1 Rol Pooling
Rol Pooling目标:将不同尺寸的提议框处理成相同尺寸,使之可以送入后续的全连接层计算分类和回归。过程:全图特征图与提议框——>切分提议区域——>区域内池化——>池化结果。
算法:
- 1.将提议框切分成固定数目的格子;
- 2.如果格子边界不在整数坐标,则膨胀至整数坐标;
- 3.在每个格子内部池化,得到固定尺寸的输出特征图。
值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI Pooling最大的好处就在于极大地提高了处理速度。
3.3.2 Rol Align
ROI Align是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示,在检测测任务中将 ROI Pooling 替换为 ROI Align 可以提升检测模型的准确性。
- 将提议区域切成固定数目的格子,例如\(7 \times 7\);
- 在每个格子中,均匀选取若干采样点,如\(2 \times 2 = 4\).
- 通过插值方法得到每个采样点处的精确特征。
- 所有采样点做Pooling得到输出结果。
Rol Align比Rol Pooling在位置上更精细。
3.4 Fast R-CNN
3.4.1 Fast R-CNN的训练
Fast R-CNN是多任务学习、端到端训练
与R-CNN相同的方式是,为提议框生成分类和回归的真值
- 前景类别:计算分类+回归损失
- 背景类别:只计算分类损失
- 前传:图像与2个提议框——>特征图——>多个预测结果——>损失求和
- 反传:损失求和——>所有框回传的梯度累加到全图特征图——>累加后的梯度继续回传。
3.4.2 Fast R-CNN的速度提升
Fast R-CNN的速度,相比于R-CNN的速度有了大幅提升。单图推理时间,从R-CNN的49s降低到了Fast R-CNN的2.3s。
3.4.3 Fast R-CNN的精度提升
从图中可以看到,在不同检测算法在Pascal VOC2007数据集上的mAP评分来看,Fast R-CNN相较于R-CNN的速度已经有了大幅提升,精度也得到了提升。
3.4.4 Fast R-CNN的速度瓶颈
但是另一方面,从产生提议框的机制出发,产生提议框就成为了速度的瓶颈,但提议框
3.4.5 降低区域提议的计算成本
降低区域提议的计算成本
区域提议——>在图中找到包含物体的框——>不需要区分类别的检测问题。
- 特定位置的特征,包含其感受野内图像的信息,且已达到足够的抽象层级;
- 基于特征做二分类就可以预测感受野内是否包含物体,从而实现区域提议。
考虑可以用\(1 \times 1\)的卷积在特征图上进行密集预测,计算成本低。
Fast R-CNN的流程图
- 使用神经网络产生区域提议,进行分类时,有物体的对应位置就是一个提议框,从而基于预测的提议框裁剪特征,预测物体类别和边界框偏移量。
3.4.6 朴素方法的局限
朴素方法的局限
- 1.图中有不同大小的物体,区域提议算法需要产生不同尺寸的提议框,以适应不同尺寸的物体。
- 2.物体有可能有一定程度的重合,区域提议算法要有能力在同一位置产生不同尺寸的提议框,以适应重合的情况。
3.4.7 锚框Anchor
锚框Anchor
在原图上设置不同的基准框,称为锚框,基于特征独立预测每个锚框中是否包含物体。
- ①可以生成不同尺寸的提议框
- ②可以在同一位置生成多个提议框覆盖不同的物体。
训练时,根据锚框与真值之间的IoU为每个分类头设置分类真值,使不同分类头学习不同尺寸的物体。
例如:
- 大方框有无物体
- 竖高框有无物体
- 扁平框有无物体
3.5 Faster R-CNN(2015)
Faster R-CNN=RPN+Fast R-CNN二者共享主干网络和特征。
Faster R-CNN依赖于区域建议算法来假设对象位置。SPPnet 和 Fast R-CNN 等进步减少了这些检测网络的运行时间,暴露了区域提议计算的瓶颈。在这项工作中,我们引入了一个区域提议网络 (RPN),它与检测网络共享全图像卷积特征,从而实现几乎无成本的区域提议。RPN 是一种全卷积网络,可同时预测每个位置的对象边界和对象性分数。RPN 经过端到端的训练以生成高质量的区域建议,Fast R-CNN 使用这些区域建议进行检测。我们通过共享它们的卷积特征进一步将 RPN 和 Fast R-CNN 合并到一个网络中——使用最近流行的神经网络术语“ 注意机制,RPN 组件告诉统一网络去哪里看。对于非常深的 VGG-16 模型,我们的检测系统在 GPU 上的帧速率为 5fps(包括所有步骤),同时在 PASCAL VOC 2007、2012 和 MS COCO 数据集上实现了最先进的对象检测精度每张图片只有 300 个提案。在 ILSVRC 和 COCO 2015 比赛中,Faster R-CNN 和 RPN 是多个赛道第一名获奖作品的基础。
3.5.1 Faster R-CNN的训练
联合学习RPN与Fast R-CNN
3.6 两阶段方法的发展与演进(2013~2017)
R-CNN
该方法应该是突破 传统目标检测方法 比较重要的开篇之作之一。其突破性在于:
1.引入了候选区域概念,没有采用滑动窗口技术(候选区域的概念在早前可能已经存在);
2.引入CNN对候选区域进行特征提取;
3.采用了大量标注数据上的监督预训练模型 + 领域数据微调预训练模型的范式;
关于第3点,在后来改进的模型中,几乎都能看到该范式的影子。
该模型的性能较传统模型有了很大改进,具体可参见论文。缺点也很明显,为了提取每个候选区域的特征,在输入图像上重复进行了多次卷积计算,在性能上大打折扣,检测每张图像的耗时平均1~2秒左右。
SPP-Net
该方法改善了R-CNN模型中不能共享卷积计算的问题,同时引入了一些新的特性(SPP池化)。Fast R-CNN
该模型可以说是对R-CNN和SPP-net的改进,改进之处在于:
- 单一训练阶段,而非上述方法的多各训练阶段(CNN特征提取阶段、分类阶段、回归阶段);
- 特征提取阶段没有磁盘存储需求;
- 提出了Region Of Interrst(ROI)层的概念,本质是单一层次的SPP池化层;
- 将分类损失和回归损失集中于单一损失函数,即multi-task损失,并加入L1正则,对噪音更具鲁棒性;
- 对全连接层,采用SVD进行了压缩,参数有效减少;
在实验部分,作者发现使用单一尺度的数据进行训练和测试就可以满足基本的需求,多尺度反而收效甚微。
Faster R-CNN
现有的方法在生成候选区域时均采用了一些耗时比较高的算法,如Selective Search、EdgeBox等,在候选区域生成上,该方法可以说是对之前所有方法的一个颠覆。其改进之处在于:
采用RPN网络自动提取候选区域,摈弃了现有的候选区域生成算法,速度快的主要原因;
实现了RPN网络与Fast-R-CNN共享卷积特征计算;
训练和测试基于单一尺度;
RPN层的实现本质是滑动窗口,但在每个不同的滑动窗口位置上又附带了多个不同尺寸和宽高比的anchor,以便于检测不同形态的物体,如人(比较高),自行车(比较长),卡车(又长又大),原始论文采用了9个anchor。由于这个方法,Faster-R-CNN模型可以在单一尺度的图像上进行训练和测试。
两阶段算法,在深度学习发展的早期是目标检测的主流方法。
近年来,两阶段算法经过不断发展和演进,精度与速度都得到了大幅提升。
4.多尺度检测技术
4.1 多尺度检测必要性
图像中物体大小可能有很大的差异,这个差异在(10px~500px之间不等)。多尺度技术出现之前,模型多基于单级特征图进行预测,通常为主干网络的第二层,受限于结构(感受野)和锚框的尺寸范围,只擅长中等大小的物体。
另一方面,高层特征图经过多次采样,位置信息逐层丢失,小物体检测能力较弱,定位精度较低。
4.2 图像金字塔Image Pyramid
于是就引出了图像金字塔(Image Pyramid)的概念。
将图像缩放到不同大小,形成图像金字塔。
检测算法在不同大小图像上即可检测出不同大小物体。
- 优势:算法不经改动就可以适应不同尺度的物体。
- 劣势:计算成本成倍增加。
可用于模型集成等不在意计算成本的情况。
4.3 层次化特征
层次化特征
层次化特征,基于主干网络自身产生的多级特征图产生预测结果。由于不同层的感受大小,因此不同层级的特征,天然适用于检测不同大小尺寸的物体。
- 优势:计算成本低。
- 劣势:底层特征抽象级别不够,预测物体比较困难。
改进思路:高层次特征包含足够抽象语义信息,将高层特征融入低层特征,从而补充低层特征的语义信息。
在密集预测中,随着感受野的逐级增加,可检测物体也逐级增大。
4.4 特征金字塔网络Feature Pyramid Network(2016 )
关于特征金字塔网络的改进思路是,高层次特征包含足够抽象语义信息,将高层特征融入低层特征,补充低层特征的语义信息。
融合的方法是,使用特征求和。
4.5 在Faster R-CNN模型中使用FPN
图片—>主干网络—>特征金字塔—>多尺度的区域提议—>集合提议框做NMS—>区域特征提取区域检测—>检测结果
5.单阶段目标检测算法
5.1 回顾两阶段算法
整体流程为:先使用RPN网络找出可能存在object的区域,再将这些区域送入双阶段网络中进一步定位和分类。因为双阶段中包含了两次定位,所以其精度一般高于YOLO和SSD算法,所以速度一般慢于YOLO和SSD。两阶段算法的流程:
- 原图—>生成锚框—(区域提议)—密集预测—(归集有物体的框进行NMS)—>生成一系列提议框
- 原图—(传入)—>主干网络—(生成特征)—>(得到)全图特征图—(传入)—>密集预测—(候选区域识别)—>裁剪池化——>区域特征图——>分类&边界框回归——>归集结果——>得到结果
5.2 单阶段算法
One-Stage Object Detection Models是指一类单阶段的目标检测模型,即跳过两阶段模型的区域建议阶段并直接在位置的密集采样上运行检测的模型。这些类型的模型通常具有更快的推理速度(可能以性能为代价)。
单阶段算法的流程:
- 原图—>生成锚框—(区域提议)—密集预测—(归集有物体的框进行NMS)—>生成一系列提议框
- 原图—(传入)—>主干网络—(生成特征)—>(得到)全图特征图—(传入)—>密集预测
5.3 单阶段检测算法概述
单阶段算法,直接通过密集预测产生检测框,相比于两阶段算法,模型结构简单、速度快,易于在设备上部署。
早期由于主干网络、多尺度技术等相关技术不成熟,单阶段算法在性能上不如两阶段算法,但因为速度和简洁的优势仍受到工业界青睐。
随着单阶段算法性能逐渐提升,成为目标检测的主流方法。