两阶段(two stage)目标检测原理详解 -- RCNN

目录

一、目标检测的任务

二、什么是“两阶段”呢?

三、两阶段算法原理

(二)候选区域算法

(三)边框回归( Bounding Box Regression )

1. 非极大值抑制(Non-Maximum Suppression,NMS)

2. 对候选框进行坐标调整

(三)RCNN模型结构

1. RCNN的模型结构

​​​​​2. R-CNN 总结


         目前目标检测领域的深度学习方法主要分为两类:two stage 的目标检测算法one stage 的目标检测算法

一、目标检测的任务

在图像中把目标物体框出来,主要分为两个:

  1. 定位任务:把物体在图像中的位置检测处理,通常用(x,y,w,h)表示物体位置框,其中x,y是目标的中心点,w,h是目标物体框的长和宽。
  2. 图像分类任务:目标物体是哪种物体,如该物体具体是猫还是狗,还是汽车等。

二、什么是“两阶段”呢?

        两阶段指的是实现检测的方式有主要两个过程,如下:

  •         第一步:先提取物体区域;
  •         第二步:再对区域进行CNN分类识别;

        因此,“两阶段”又称基于候选区域(Region proposal)的目标检测。它是基于深度学习的检测算法的先驱者;代表性算法如下图的RCNN系列(RCNN,Fast RCNN,Faster RCNN)还有SPPNet等。

        RCNN是“两阶段”目标检测中的第一个模型。该算法步骤大致分为两大步骤进行:

  •         1.获取输入图像,提取约候选区域;
  •         2.将每个候选区域的图片缩放到固定大小224x224,输入CNN网络,得到的结果再输入分类器中进行类别的判定。

        两阶段目标检测模型结构:

三、两阶段算法原理

        传统算法模型结构:

        两阶段目标检测模型结构:

(二)候选区域算法

        传统目标检测算法使用“穷举法”来获取候选区域,即暴力的使用滑动窗口从左到右、上到下扫描图片。缺点非常明显,候选区域过多,相邻窗口重复信息大,无效的区域也很多,导致计算量大,检测速度慢。

        RCNN使用“选择性搜索算法”(SS,Selective Search)来获取候选框,具体步骤如下:

  •         (1)图片中的每一个像素作为一组,然后计算每个像素的纹理;
  •         (2)将相近的组合起来形成更大的像素组,然后继续合并各个像素组;
  •         (3)SS选取的检测框大小都不一样,最后,得到不同尺寸的BBox候选框(约2000个)。

        相比传统的穷举法,BBox候选框明显的减少了,在后面步骤的物体分类上减少了很多计算资源。

(三)边框回归( Bounding Box Regression )

        围绕如下2个问题进行算法设计:

  •         1.一张图大约有2000多个候选框,是否有冗余?若存在冗余该如何对多个候选框进行筛选?
    •         2. 筛选过后的候选框是最优的吗?

        经过SS搜索,共有2000多个候选区域,首先需要对每个候选区域进行分类识别:

        如上图所示,每个目标有两三个候选区域,每个候选区域都有目标概率值;原则上,1个物体对应1个候选区域,那么如何去除冗余的候选区域框,保留最好的1个?

        使用非极大值抑制NMS来解决以上问题。

1. 非极大值抑制(Non-Maximum Suppression,NMS)

思路:选取那些邻域里分类数值最高,并且抑制那些分数低的窗口。

 做法:设定阈值(阈值通常设定0.3~0.5 ),比较两两区域的IoU与阈值的关系。

Iou是两个区域的交并比,如下:

            

那么可以如下两个思路来筛选候选框,假设阈值设定0.5:

  • (1)IoU>0.5,表示A框与B框重叠率高,可能是同一个物体,保留上一步计算的分类概率值高的候选框;
  • (2)IoU<0.5,表示A框与B框重叠率不高,可能是两个物体;

例子:假设检测到如下出6个都是人脸的矩形框,目的要找到最好的一个。

  • (1)根据分类器的类别分类概率做排序从小到大的概率分别为A、B、C、D、E、F;
  • (2)从最大概率矩形框F开始,分别判断A~E与F的重叠度IoU是否大于设定的阈值;
  • (3)假设B、D与F的重叠度超过阈值,那么就去除矩形框B、D;并标记第一个矩形框F,是我们保留下来的一个人脸框;
  • (4)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,如果A、C的重叠度都大于设定的阈值,那么就去除;并标记E是我们保留下来的第二个矩形框;
  • (5)就这样一直重复,遍历所有,直到找到所有被保留下来的矩形框。

2. 对候选框进行坐标调整

        将最后选出的候选框与目标值(Ground Truth)建立回归方程。如下图:

        红色的框:最终提取的候选区域框;

        绿色的框:目标值, 即真实标注的目标区域。

        目测可判定,红色框定位不准(IoU<0.5), 那么说明红色框没有正确的标志飞机,因此需要对红色框进行微调,使得经过微调后的窗口跟目标值更接近。

        对于窗口,一般使用四维向量(x,y,w,h)表示,分别表示窗口中心点坐标和宽高;寻找一种关系使得输入候选窗口 P 经过映射f得到一个跟真实窗口G^更接近的回归窗口G ̂,使得新的候选区域G ̂更接近真实目标G^,从而提高预测的准确率:

回归方程: 

  • (三)RCNN模型结构

    1. RCNN的模型结构

    如下:

        模块1 :

                (1)采用selective search算法对每个图片提取约2000个候选框;

                (2)再将尺寸变形为227×227的大小【适应AlexNet网络的输入】

        模块2:

                (1)使用AlexNet网络对候选框进行特征提取,每个候选框有4096维特征;

                (2)采用训练好的AlexNet CNN网络进特定样本【如VOC数据集-20个分类类别】下的微调fine-tune;

        模块3:

                (1)对每个候选框的4096维特征进行分类;

                (2)需要为每个类别训练单独的SVM;

        模块4:

                (1)进行边框回归训练。

​​​​​2. R-CNN 总结

        优点:基于传统的手工提取特征的方法,性能大幅提升;

        缺点:但是训练时间很长(84h),测试阶段很慢,一张图片大概16s;R-CNN速度较慢的一个重要原因是卷积特征重复计算量太大,每张图片约有2000区域需计算CNN特征。

  • 44
    点赞
  • 255
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值