目标检测算法Faster R-CNN(详解)

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测算法Faster R-CNN(详解)相关的知识,希望对你有一定的参考价值。

学习目标

  • 目标

    • 了解Faster R-CNN的特点
    • 知道RPN的原理以及作用

【目标检测算法】Fast R-CNN(详解)

Fast R-CNN还存在着瓶颈问题:Selective Search(选择性搜索)。要找出所有的候选框,那我们有没有一个更加高效的方法来求出这些候选框呢?

1. Faster R-CNN

Faster R-CNN中加入一个提取边缘的神经网络,也就说找候选框的工作也交给神经网络来做了。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。

Faster R-CNN可以简单地看成是区域生成网络+Fast R-CNN的模型,用区域生成网络(Region Proposal Network,简称RPN)来代替Fast R-CNN中的选择性搜索方法,结构如下:

  • 1、首先向CNN网络(VGG-16)输入图片,Faster RCNN使用一组基础的conv+relu+pooling层提取feature map该feature map被共享用于后续RPN层和全连接层。
  • 2、Region Proposal Networks。RPN网络用于生成region proposals,faster rcnn中称之为anchors
    • 通过softmax判断anchors属于foreground或者background
    • 再利用bounding box regression修正anchors获得精确的proposals,输出其Top-N(默认为300)的区域给RoI pooling
  • 生成anchors -> softmax分类器提取fg anchors -> bbox reg回归fg anchors -> Proposal Layer生成proposals
  • 3、后续就是Fast RCNN操作

2. RPN原理

RPN网络的主要作用是得出比较准确的候选区域。整个过程分为两步

  • 用n×n(默认3×3=9)的大小窗口去扫描特征图,每个滑窗位置映射到一个低维的向量(默认256维),
  • 并为每个滑窗位置考虑k种(在论文设计中k=9)可能的参考窗口(论文中称为anchors)

2.1 anchors

  • 3*3卷积核的中心点对应原图上的位置,将该点作为anchor的中心点,在原图中框出多尺度、多种长宽比的anchors,三种尺度{ 128,256,512 }, 三种长宽比{1:1,1:2,2:1},每个特征图中的像素点有9中框

举个例子:

3. Faster RCNN训练

3.1 Faster R-CNN的训练

Faster R-CNN的训练分为两部分,即两个网络的训练。

  • RPN训练
    • 目的:从众多的候选区域中提取出score较高的,并且经过regression调整的候选区域
  • Fast RCNN部分的训练
    • Fast R-CNN classification (over classes) :所有类别分类 N+1,得到候选区域的每个类别概率
    • Fast R-CNN regression (bbox regression):得到更好的位置

3.2 候选区域的训练

  • 训练样本anchor标记
    • 1.每个ground-truth box有着最高的IoU的anchor标记为正样本
    • 2.剩下的anchor/anchors与任何ground-truth box的IoU大于0.7记为正样本,IoU小于0.3,记为负样本
    • 3.剩下的样本全部忽略
    • 正负样本比例为1:3

  • 训练损失
    • RPN classification (anchor good / bad) ,二分类,是否有物体,是、否
    • RPN regression (anchor -> proposal) ,回归
    • 注:这里使用的损失函数和Fast R-CNN内的损失函数原理类似,同时最小化两种代价

候选区域的训练是为了让得出来的 正确的候选区域, 并且候选区域经过了回归微调。在这基础之上做Fast RCNN训练是得到特征向量做分类预测和回归预测。

4. 效果对比

R-CNNFast R-CNNFaster R-CNN
Test time/image50.0s2.0s0.2s
mAP(VOC2007)66.066.966.9

5. Faster R-CNN总结

  • 优点
    • 提出RPN网络
    • 端到端网络模型
  • 缺点
    • 训练参数过大

可以改进的需求:

  • RPN(Region Proposal Networks) 改进对于小目标选择利用多尺度特征信息进行RPN
  • 速度提升,如YOLO系列算法,删去了RPN,直接对proposal进行分类回归,极大的提升了网络的速度

6. 总结

  • Faster R-CNN的特点
  • RPN的原理

7. 问题

1、Faster RCNN改进之处?

2、如何得到RPN的 anchors?

8. 开源keras Faster RCNN 模型介绍

地址https://github.com/jinfagang/keras_frcnn

请参考开源Keras Faster RCNN 模型介绍

加油!

感谢!

努力!

以上是关于目标检测算法Faster R-CNN(详解)的主要内容,如果未能解决你的问题,请参考以下文章

R-CNN, Fast R-CNN, Faster R-CNN, YOLO:目标检测算法总结

Faster R-CNN:详解目标检测的实现过程

TensorFlow2深度学习实战(十七):目标检测算法 Faster R-CNN 实战

TensorFlow2深度学习实战(十七):目标检测算法 Faster R-CNN 实战

TensorFlow2深度学习实战(十六):目标检测算法Faster R-CNN解析

TensorFlow2深度学习实战(十六):目标检测算法Faster R-CNN解析