pytorch目标检测篇:1. R-CNN、Fast R-CNN、Faster R-CNN理论合集

前言

第一阶段的图像分类篇基本结束了,接下来开始目标检测篇。

学习资料来自:


1. R-CNN(Region with CNN feature)

原论文:《Rich feature hierarchies for accurate object detection and semantic segmentation》,发表于2014年 CVPR

R-CNN可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。

R-CNN算法流程

  1. 使用 Selective Search 方法,对一张图像生成1000~2000个候选区域
  2. 对每个候选区域,使用深度网络提取特征
  3. 特征送入每一类的SVM分类器,判断是否属于该类
  4. 使用回归器精细修正候选框的位置

在这里插入图片描述

1.1 Region Proposal (Selective Search)

候选区域的生成

使用 Selective Search (SS) 算法,对一张图像生成1000~2000个候选区域。如下图所示,假如我们要检测花,那么先用SS算法生成可能是花的候选区域:

在这里插入图片描述

关于SS算法,可以简单理解为将图像分割成很多很多的小块,计算每两个相邻的区域的相似度,然后每次合并最相似的两块,最后得到的每一块区域都是SS算法所认为的一个完整的物体,如下图所示:
在这里插入图片描述

1.2 Feature Extraction(CNN)

CNN提取候选区域的特征

将2000候选区域 resize 到227×227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征,最后得到2000×4096维的特征矩阵。

在这里插入图片描述

1.3 Classification(SVM)

SVM 判定候选区域所属类别

将 2000 个候选区域的特征向量,即 2000×4096 维特征矩阵送入 20 个SVM分类器,获得 2000×20 维的概率矩阵,每一行代表一个候选区域归为每个目标类别的概率。(红点代表每个候选框对应最大概率的类别)

在这里插入图片描述
还是以花这幅图像为例,由于图中只有花这一个类别目标,因此 2000 个候选框的分类最大概率都应该是花这个类别(不排除某些候选框被分到其他类别的可能),只是每个候选框的最大概率不同。

SVM分类器为二分类器,以 PASCAL VOC 有20个类别为例,即每个类别都有一个SVM分类器

在这里插入图片描述

分别对上述 2000×20 维矩阵中每一列,即每一类进行 非极大值抑制(Non-Maximum Suppression:NMS) 剔除重叠的候选框,保留高质量的候选框。

  • 寻找分类概率最高的候选框
  • 计算其他候选框与该候选框的IOU
  • 删除所有IOU值大于给定阈值的候选框
    在这里插入图片描述

IOU(Intersection over Union),交并比,即 ( A ∩ B ) / ( A ∪ B ) (A∩B)/(A∪B) (AB)/(AB)
在这里插入图片描述

1.4 Bounding-box Regression

边框回归:回归器修正候选框位置

对 NMS 处理后剩余的建议框进一步筛选,即用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的 bounding-box

在这里插入图片描述

1.5 R-CNN框架总结

在这里插入图片描述

1.6 R-CNN存在的问题

  • 测试速度慢:一张图像内候选框之间存在大量重叠,提取特征操作冗余。
  • 训练速度慢:过程极其繁琐。
  • 训练所需空间大:对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。

2. Fast R-CNN

原论文:《Fast R-CNN》,发表于2015年的 ICCV

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用vGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(再Pascal voc数据集上)。

Fast R-CNN算法流程

  1. 使用 Selective Search 方法,对一张图像生成1000~2000个候选区域

  2. 将图像输入网络得到相应的特征图(feature map),并将 SS 算法生成的候选框投影到特征图上获得相应的特征矩阵(feature vector)

  3. 每个特征矩阵通过 ROI pooling 层缩放到 7×7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
    在这里插入图片描述

2.1 改进

  1. 一次性计算整张图特征
    卷积不再是对每个region proposal进行,而是直接对整张图像,这样减少了很多重复计算。

在这里插入图片描述

  1. ROI Pooling Layer
    每个特征矩阵通过 ROI pooling Layer 缩放到 7×7 大小,其实就是个 Max Pooling 的操作。
    用ROI pooling进行特征的尺寸变换,保证了全连接层输入尺寸大小一样的要求,这样就不限制网络输入图像的尺寸

    注:RCNN中经过SS得到的候选框,在送入网络提取特征前需要先resize到227×227

在这里插入图片描述

  1. 目标分类和边框回归在同一个网络
    网络同时输出目标检测结果和边框回归结果,相比于R-CNN中(SVM分类+边框回归)要简单很多
    在这里插入图片描述

    在这里插入图片描述

2.2 Fast R-CNN框架总结

可以看到, Fast R-CNN 相比于 R-CNN,将特征提取、目标分类、边框回归都统一到一个网络中,唯一的瓶颈就在于 Region proposal 这一步,SS算法提取候选区域十分耗时,这将在 Faster R-CNN 中得到解决。

在这里插入图片描述


3. Faster R-CNN

原论文名:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》,发表于2017年 TPAMI

Faster R-CNN 是作者 Ross Girshick 继 Fast R-CNN 后的又一力作。同样使用 VGG16 作为网络的 backbone,推理速度在GPU上达到 5fps (包括候选区域的生成),效果接近实时,对应论文标题中的 “ Towards Real-Time Object Detection”

Faster R-CNN算法流程(相当于 RPN + Fast R-CNN)

  1. 将图像输入网络得到相应的特征图(feature map)
  2. 使用 RPN 结构生成候选框,将 RPN 生成的候选框投影到特征图(feature map)上获得相应的特征矩阵(feature vector)
  3. 将每个特征矩阵通过 ROI Pooling 层缩放到 7×7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

在这里插入图片描述
更详细的网络结构图:
在这里插入图片描述

3.1 改进:RPN(Region Proposal Network)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于 RPN 生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制(NMS),IoU设为0.7,这样每张图片只剩 2k 个候选框。


3.2 Faster R-CNN框架总结

利用RPN进行候选区域提取,取代了十分耗时的SS算法,网络结构得到统一,速度得到大幅提升
在这里插入图片描述


总结

从 R-CNN 到 Fast R-CNN 再到 Faster R-CNN,框架越来越简洁,效果也越来越好

在这里插入图片描述

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
目标检测计算机视觉领域的重要任务,而Faster R-CNN作为目标检测领域的经典算法之一,具有较高的检测精度和鲁棒性。在睿智的目标检测系列中,我们将使用PyTorch搭建一个基于Faster R-CNN目标检测平台。 首先,我们将使用PyTorch构建一个深度学习模型的基础框架。PyTorch是一个开源的机器学习库,具有灵活的设计和易于使用的特点,因此非常适合用于搭建目标检测平台。我们将利用PyTorch提供的模块和工具,构建一个包含RPN模块、ROI pooling模块和分类回归模块的Faster R-CNN模型。 其次,我们将使用标记好的目标检测数据集,如COCO或PASCAL VOC数据集,对我们搭建的目标检测平台进行训练和验证。我们将利用PyTorch内置的数据加载和预处理工具,以及优化器和损失函数,对Faster R-CNN模型进行端到端的训练,以提高检测精度和泛化能力。 最后,我们将通过在真实场景下的目标检测任务中的应用,来验证我们搭建的Faster R-CNN目标检测平台的性能。我们将评估其在目标定位、多目标检测、不同尺寸目标检测等方面的表现,并对可能的改进和优化进行进一步的研究和实验。 通过这样一个基于PyTorch搭建的Faster R-CNN目标检测平台,我们将能够深入理解目标检测算法的原理和实现细节,提高对深度学习框架的应用能力,并为未来的研究和应用奠定基础。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值