zoukankan      html  css  js  c++  java
  • 目标检测算法之Faster R-CNN算法详解

    Fast R-CNN存在的问题:选择性搜索,非常耗时。

    解决:加入一个提取边缘的神经网络,将候选框的选取交给神经网络。

    在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search,同时引入anchor box应对目标形状的变换问题(anchor就是位置和大小固定的box,可以理解成事先设置好的固定的proposal)

    具体做法:

    1、将RPN放在最后一个卷积层的后面

    2、RPN直接训练得到的候选区域

    RPN简介:

    1. 在feature map上滑动窗口

    2. 建一个神经网络用于物体分类 + 框位置回归

    3. 滑动窗口的位置提供了物体的大体位置信息

    4. 框的回归提供了框更精确的位置

    一种网络,四个损失函数:

    1. RPN classification(anchor good.bad)

    2. RPN regression(anchor-->proposal)

    3. Fast R-CNN classification(over classes)

    4. Fast R-CNN regression(proposal-->box)

    测试过程:

    Faster R-CNN统一的网络结构如下图所示,可以简单看做RPN + Fast R-CNN

    注意在RPN网络中的那两个全连接层是并联的,不是串联的,图有点小问题

    注意:上图Fast R-CNN中含有特有卷积层,并不是所有卷积层都参与共享

    1. 首先向CNN网络(ZF或VGG-16)输入任意大小图片

    2. 经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图

    3. 供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制(阈值为0.7),输出其Top-N得分的区域建议给ROI池化层

    4. 第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征

    5. 第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box

    速度对比:

    Faster R-CNN的主要贡献就是设计了提供候选区域的网络RPN,代替了费时的选择性搜索Selective Search,使得检测速度大幅提高。

    总结各个算法的步骤:

    RCNN

    1. 在图像中确定约1000-2000个候选框(使用选择性搜索Selective Search)

    2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取

    3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

    4. 对于属于某一类别的候选框,用回归器进一步调整器位置

    Fast R-CNN

    1. 在图像中确定约1000-2000个候选框(使用选择性搜索Selective Search)

    2. 对整张图片输入CNN,得到feature map

    3. 找到每个候选框在feature map中的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层

    4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

    5. 对于属于某一类别的候选框,用回归器进一步调整器位置

    Faster R-CNN

    1. 对整张图片输入CNN,得到feature map

    2. 卷积特征输入到RPN,得到候选框的特征信息

    3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

    4. 对于属于某一类别的候选框,用回归器进一步调整器位置

    简言之,

    R-CNN(Selective Search + CNN + SVM)

    SPP-net(ROI Pooling)

    Fast R-CNN(Selective Search + CNN + ROI)

    Faster R-CNN(RPN + CNN + ROI)

  • 相关阅读:
    python内置的魔术命令(builtin magic commands)
    绘制ROC曲线
    python with语句中的变量有作用域吗?
    Visual Studio上编译ncnn
    loss函数学习笔记
    Install zeal on ubuntu16.04
    cmake方式使用vlfeat
    整理读研期间用过、改进过、写过的代码
    ubuntu下使用matplotlib绘图无法显示中文label
    error: each element of 'ext_modules' option must be an Extension instance or 2-tuple
  • 原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10461964.html
Copyright © 2011-2022 走看看