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

目录

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

[1.1 R-CNN​编辑](#1.1 R-CNN编辑)

[1.2 Fast R-CNN](#1.2 Fast R-CNN)

[1.3 Faster R-CNN](#1.3 Faster R-CNN)

[1.4 Mask R-CNN](#1.4 Mask R-CNN)

[1.5 模型精度比较](#1.5 模型精度比较)

[1.6 总结](#1.6 总结)

[2. 单发多框检测(SSD)](#2. 单发多框检测(SSD))

[3. YOLO](#3. YOLO)

[4. Center Net](#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

相关推荐
BulingQAQ18 分钟前
论文阅读:PET/CT Cross-modal medical image fusion of lung tumors based on DCIF-GAN
论文阅读·深度学习·生成对抗网络·计算机视觉·gan
hsling松子21 分钟前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
正在走向自律24 分钟前
机器学习框架
人工智能·机器学习
dengqingrui1231 小时前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
C++忠实粉丝1 小时前
前缀和(8)_矩阵区域和
数据结构·c++·线性代数·算法·矩阵
好吃番茄1 小时前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
ZZZ_O^O1 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
小堃学编程1 小时前
计算机网络(十) —— IP协议详解,理解运营商和全球网络
网络·tcp/ip·计算机网络
CV-King2 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
禁默2 小时前
2024年计算机视觉与艺术研讨会(CVA 2024)
人工智能·计算机视觉