44 物体检测算法:R-CNN,SSD,YOLO【李沐动手学深度学习v2课程笔记】

目录

1. 区域卷积神经网络(region-based CNN or regions with CNN features)

1.1 R-CNN​编辑

1.2 Fast R-CNN

1.3 Faster R-CNN

1.4 Mask R-CNN

1.5 模型精度比较

1.6 总结

2. 单发多框检测(SSD)

3. YOLO

4. Center Net

目标检测算法主要分为两个类型
(1)two-stage方法,如R-CNN系算法(region-based CNN),其主要思路是先通过启发式方法(selective search)或者CNN网络(RPN)产生一系列稀疏的候选框,然后对这些候选框进行分类与回归,two-stage方法的优势是准确度高
(2)one-stage方法,如Yolo和SSD,其主要思路是均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步,所以其优势是速度快,但是均匀的密集采样的一个重要缺点是训练比较困难,这主要是因为正样本与负样本(背景)极其不均衡,导致模型准确度稍低


1. 区域卷积神经网络(region-based CNN or regions with CNN features)

1.1 R-CNN

首先从输入图像中选取若干个提议区域(锚框是选取方式的一种),并标注它们的类别和边界框(如偏移量)。然后用卷积神经网络来对每个提议区域(锚框)进行前向传播以抽取特征。最后用每个提议区域的特征来预测类别和边界框。 

R-CNN 模型的四个步骤:

1. 对输入图像使用选择性搜索来选取多个高质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小;每个提议区域都将被标注类别和真实边框
2. 选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征
3. 将每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别
4. 将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框 

上图中对 3 * 3 的黑色方框中的区域进行 2 * 2 的兴趣区域池化,由于 3 * 3 的区域不能均匀地进行切割成 4 块,所以会进行取整(最终将其分割成为 2 * 2、1 * 2、2 * 1、1 * 1 四块),在做池化操作的时候分别对四块中每一块取最大值,然后分别填入 2 * 2 的矩阵中相应的位

兴趣区域汇聚层(RoI Pooing)与一般的汇聚层有什么不同?

在一般的汇聚层中,通过设置汇聚窗口、填充和步幅的大小来间接控制输出形状
在兴趣区域汇聚层中,对每个区域的输出形状是可以直接指定的

尽管 R-CNN 模型通过预训练的卷积神经网络有效地抽取了图像特征,但是速度非常慢(如果从一张图片中选取了上千个提议区域,就需要上千次的卷积神经网络的前向传播来执行目标检测,计算量非常大)

1.2 Fast R-CNN

R-CNN 每次拿到一张图片都需要抽取特征,如果说一张图片中生成的锚框数量较大,抽取特征的次数也会相应的增加,大大增加了计算量.。因此,R-CNN 的主要性能瓶颈在于,对于每个提议区域,卷积神经网络的前向传播是独立的,没有共享计算(这些提议区域通常有重叠,独立的特征提取会导致重复计算) 

1.3 Faster R-CNN

为了精确地检测目标结果,Fast R-CNN 模型通常需要在选择性搜索中生成大量的提议区域

因此,Faster R-CNN 提出将选择性搜索替换为区域提议网络(region proposal network,RPN),模型的其余部分保持不变,从而减少区域的生成数量,并保证目标检测的精度 

1.4 Mask R-CNN

如果在训练集中还标注了每个目标在图像上的像素级位置,Mask R-CNN 能够有效地利用这些相近地标注信息进一步提升目标检测地精度 

1.5 模型精度比较

x 轴表示模型的运行速度,越往右表示模型的速度越快,越往左越慢
y 轴表示 mAP(可以简单认为是边界框的预测精度),越往上表示精度越高
图中圆圈的大小表示内存的使用
Faster RCNN 相对来说精度比较高,但是它在精度提升的同时,样本的处理速度也在变慢(所以只有在对精度要求特别高的场景下会采用 Faster RCNN,但是在工业上使用较少) 

1.6 总结


2. 单发多框检测(SSD)

对每个像素生成多个以它为中心的多个锚框 

上图中绿色的点表示 SSD
从图中可以看出,SSD 相对于Faster RCNN 来讲速度快很多,但是精度不是太好
SSD 的实现相对来讲比较简单,R-CNN 系列代码的实现非常困难


3. YOLO

上图中表示 yolo v3 的直线底端表示论文中的原始精度,顶端表示通过改进之后所能达到的最大精度


4. Center Net

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值