目标检测算法Faster R-CNN(详解)
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测算法Faster R-CNN(详解)相关的知识,希望对你有一定的参考价值。
Faster R-CNN
学习目标
-
目标
- 了解Faster R-CNN的特点
- 知道RPN的原理以及作用
在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-CNN | Fast R-CNN | Faster R-CNN | |
---|---|---|---|
Test time/image | 50.0s | 2.0s | 0.2s |
mAP(VOC2007) | 66.0 | 66.9 | 66.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
加油!
感谢!
努力!
以上是关于目标检测算法Faster R-CNN(详解)的主要内容,如果未能解决你的问题,请参考以下文章
R-CNN, Fast R-CNN, Faster R-CNN, YOLO:目标检测算法总结
TensorFlow2深度学习实战(十七):目标检测算法 Faster R-CNN 实战
TensorFlow2深度学习实战(十七):目标检测算法 Faster R-CNN 实战