两阶段检测算法

两阶段检测算法


在2012年深度学习开始兴起之后,发现用深度学习来解决图像分类的问题有显著的优势,于是在2014年以后希望将该种算法运用到目标检测的任务中来

R-CNN


举例:检测一个苹果,可以检测一个区域内红色区域的占比,若红色的占比越大就可以理解为是苹果的概率越大

R-CNN

  • 是最早将深度学习和目标检测算法结合起来的方案

R-CNN网络结构


  • Selective Search通过一些传统的特征如颜色,纹理,相似度来提取候选区域
  • 计算出来的特征可以理解为该候选区域的特征,即一个区域对应一个特征
  • svm是机器学习中比较经典的算法

R-CNN面临的问题


为了解决这个问题,Fast R-CNN应运而生

输入一张图片然后将该图片直接输入到卷积神经网络当中,得到一个特征图,再在这个特征图上用Selective Search中选出若干个候选区域,它们会共享这一个特征图(使计算量大幅度下降)
注意:这里提取出来的候选区域的大小和形状是不一样的,而在R-CNN中会将其缩放到相同尺寸,但这样可能会面临数据损失的一个问题,那么在Fast R-CNN中就将warp的方式转化为Rol-Pooling的方式,这样我们就的到了每个候选区域的特征,这些可以分为回归和分类两个分支,在Fast R-CNN中会将分类分支从svm替换到softmax,实现了分类分支和联合分支的联合训练

Fast R-CNN的效果


为了解决Fast R-CNN中的问题,Faster R-CNN应运而生

Faster R-CNN


虚线框出来的部分就是Faster R-CNN提出来的RPN概念

  • 会把特征图的每一个点都作为中心点,生成大小比例不同的框(锚框Anchor),对每一个Anchor都会分为两个分支
    1.分类分支:判断这个图上有没有东西,不关心框出来的东西是狗还是猫
    2.回归分支:判断锚框与真实框有多远
    接下来会将RPN输出的候选框做一定的处理,进入到Rol Pooling去提取候选框所对应的一个特征(进入第二阶段的计算),在第二个阶段的分类分支中就要判断所框起来的物体属于哪个类别,回归分支就要对候选框进行进一步的额微调,整体上实现了端到端的训练

锚框

RPN网络结构

  • 输入(conv feature map)(作为整体RPN的输入)
    1.首先先形成一个3X3的卷积再形成两个分支即分类分支和回归分支
    2.在上方讲到Anchor为9,所以K可以取9,那么在分类分支中需要两维来判断Anchor是否包含物体,在回归分支中需要四维来判断Anchor与真实框的相对位置
    3.最后将RPN部分的输出和Anchor结合得到RPN网络的输出得到Proposal
  • 对右半部分的讲解
    1.有一张图片有512个特征图,每个特征图的大小是60X40
    2.经过3X3的卷积得到1X256X60X40的特征图,然后在该特征图上去生成Anchor,所以总共生成21600个Anchor,然后就会分成两个分支(18理解为2x9,36理解为4x9)
    3.最后根据RPN的输出和两万多个Anchor,得到N个proposals,作为最终RPN网络的输出

RPN网络训练策略


还需要对这些样本分配一个监督信息,告诉这些Anchor到底包不包含信息

RPN网络监督信息


偏移量就是那四个黄色的箭头,如果偏移量足够好的时候就可以结合Anchor生成预测框,这样的话预测框和真实框就可以足够接近

RPN网络Loss


posted @ 2025-06-19 21:38  探索笋  阅读(42)  评论(0)    收藏  举报