[ADAS预研笔记]感知算法 - 目标检测

目标检测 object detection

目标检测的任务可以进行拆分,先在原始图像上产生候选区域,再对每个候选区域进行图像分类,最终可以得到物体出现的位置与类别。

图像分类已有成熟的算法,问题的关键即转换到如何产生候选区域(Region Proposal),引出了两种算法模型:

  • 两阶段算法:应用传统图像算法先产生候选区域,然后再用卷积神经网络对这些区域进行分类,代表为:R-CNN系列,R-FCN;
  • 单阶段算法:只使用一个网络同时产生候选区域并预测出物体的类别和位置,代表为:SSD,YOLO。

根据是否依赖锚框又可以分为 Anchor based 和 Anchor free 的方法。

目标检测涉及的相关概念如下:

边界框 Bounding box

边界框:正好能包含住物体的矩形框。

有如下几种格式:

  • xywh:左上角坐标+宽+高,最常用;
  • xyxy:左上角坐标+右下角坐标;
  • cxcywh:中心点坐标+宽+高。

通常定义图片坐标的原点在左上角,x轴向右为正方向,y轴向下为正方向

锚框 Anchor

锚框:假想出来的一种框。在目标检测模型中,通常会以某种规则在图片上生成一系列锚框,将这些锚框当成 可能的候选区域。不同的模型往往有着不同的生成锚框的方式。

锚框与边界框往往存在误差,需要在锚框的基础上进行微调以形成能准确描述物体位置的 预测框,模型需要预测出微调的幅度。

候选区域 Region Proposal

RoI(Region of Interest)最早在Fsater R-CNN中提出,

候选区域(Region Proposal)与RoI的关系如下,RoI Pooling即表示对每个RoI进行池化:

空洞卷积 Dilated Convolutions/Atrous Convolutions

与普通的卷积相比,增加了一个扩张率(dilation rate)参数,主要用来表示扩张的大小。

扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中参数数量不变;区别在于扩张卷积具有更大的感受野。

如图所示为空洞卷积计算的形象化展示:

图中所示a为普通卷积,b和c为不同扩张率的空洞卷积

评价指标

1)交并比(Interp of Union,IoU):衡量锚框跟真实框之间的关系

  • 定义为两个集合的交集里面所包含的元素个数,除以它们的并集里面所包含的元素个数,在图像领域体现为重叠面积除以总面积;
  • 1:完全重合,0:完全不重合;
  • 通常会选取一个阈值,比如0.5,来确定预测框是正确的还是错误的。

2)精确度(Precision)与召回率(Recall)

  • 两者都是机器学习的基础评价指标之一, Precision衡量你的预测有多准确, Recall衡量你发现所有正例的能力
  • 该评价指标基于如下背景:根据预测目标的实际值和模型的预测结果,有如下矩阵(蓝色字体为预测正确,红色字体为预测错误):

        

Precision指标即:TP/(TP+FP),Recall指标即:TP/(TP+FN)

形象化表示如下图:

交并比也可在此背景下进行公式定义:IOU=TP/(TP+FP+FN)

4)平均正确率(Average Precision,AP)

  • P-R曲线:Precision与Recall的关系曲线
  • AP:PR曲线下的面积

5)平均类别的平均正确率(mean Average Precision,mAP)

  • AP是针对一个类别而言的,把所有类别的AP都计算出来后,再对它们求平均值,即可得到mAP
  • 面积越接近1性能越好
  • mAP@0.5 :mean Average Precision(IoU=0.5),即将IoU设为0.5时的mAP
  • mAP@.5:.95 :表示在不同IoU阈值(从0.5到0.95,步长0.05)上的平均mAP

6)FPS(每秒传输帧数-Frames Per Second)

  • 目标网络每秒可以处理(检测)多少帧(多少张图片),衡量网络的处理速度
  • 可以理解为图像的刷新频率,也就是每秒多少帧

代表性算法

Ⅰ. R-CNN系列:

1. R-CNN[2013]:使用传统图像算法selective search产生候选区域,+ CNN分类。

2. Fast RCNN[2015]:将不同区域的物体共用卷积层的计算,缩减计算量,提高处理速度;引入了调整目标物体位置的回归方法(引入锚框)。

3. Faster RCNN[2015]:使用RPN(Region Proposal Network)来产生候选区域,进一步提升处理速度。

4. Mask RCNN[2017]:在Faster RCNN模型上添加比较少的计算量,同时实现目标检测和物体实例分割两个任务。

Ⅱ. SSD:

Single Shot MultiBox Detector,出现在YOLOv1与YOLOv2之间,提出了多尺度特征图的思想;

采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。

 

Ⅲ. YOLO系列:

YOLO模型在v3之后有不同团队都对这一模型进行了迭代,关系如图:

1. YOLOv1:基于GoogLeNet,但未使用Inception模块(实际即DarkNet网络的前身)

 

2. YOLOv2:backbone为DarkNet-19并取消全连接层改用1*1卷积层;采用anchor。ImageNet上的分类表现:top-1精度:72.9%,top-5精度:91.2%

3. YOLOv3:backbone为DarkNet-53,使用残差模块;使用DBL为整个模型的基本部件;引入FPN进行多尺寸预测

DBL:conv+BN+leakyReLU(也可称为CBL)

  • conv即卷积;
  • BN:BatchNorm,使得每一层神经网络的输入保持相同分布
  • leakyReLU:针对ReLU小于0的部分改进后的激活函数

多尺寸预测:

  • 通常一幅图像包含各种不同的物体,并且有大有小。网络越深,特征图就会越小,小的物体也就越难检测出来。
  • 网络的每一层卷积计算都会得到一次特征图(feature map),随着网络深度的加深,浅层的feature map中主要包含低级的信息(物体边缘,颜色,初级位置信息等),深层的feature map中包含高等信息(例如物体的语义信息:狗,猫,汽车等等)

对于多重scale,目前主要有以下几种主流方法:

  • (a) Featurized image pyramid: 这种方法最直观。首先对于一幅图像建立图像金字塔,不同级别的金字塔图像被输入到对应的网络当中,用于不同scale物体的检测。但这样做的结果就是每个级别的金字塔都需要进行一次处理,速度很慢。
  • (b) Single feature map: 检测只在最后一个feature map阶段进行,这个结构无法检测不同大小的物体。
  • (c) Pyramidal feature hierarchy: 对不同深度的feature map分别进行目标检测。SSD中采用的便是这样的结构。每一个feature map获得的信息仅来源于之前的层,之后的层的特征信息无法获取并加以利用,且精度并没有期待的那么高。
  • (d) Feature Pyramid Network(FPN): 与(c)很接近,但有一点不同的是,当前层的feature map会对未来层的feature map进行上采样,并加以利用。这是一个有跨越性的设计。因为有了这样一个结构,当前的feature map就可以获得“未来”层的信息,这样的话低阶特征与高阶特征就有机融合起来了,提升检测精度。

 

 YOLOv3检测效果:

4. YOLOv5(从V1.0到V6.2):使用Pytorch框架(v1~v4都使用Darknet框架);140FPS;27MB(对比v4 244MB)

分为四个版本:Yolov5s、Yolov5m、Yolov5l、Yolov5x,通过改变网络宽度来改变Conv中卷积核的数量,通过改变网络深度来改变BottleneckC3中C3的数量,从而实现不同网络深度和不同网络宽度之间的组合,达到精度与效率的平衡。

基本结构如下:

(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放

(2)Backbone:CSPDarknet:

  • Focus结构(对输入图片隔列采样+拼接,6.0版改为Conv,理伦等价计算更高效)
  • CBL结构(4.0版中激活函数改为SiLU:x*sigmoid(x))
  • CSP结构(4.0版中改为C3模块)
  • SPP(6.0版改为SPPF,时间快一倍)

(3)Neck:FPN+PAN结构

(4)Prediction:分类用BEC_Loss,回归使用GIOU_Loss(IOU->GIOU->DIOU->CIOU)

 

V1.0到V6.2过程中的更新模块:

Silu:

C3: 

SPFF:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值