实战深度学习目标检测:RCNN
Posted 我把梦想卖了,换成了柴米油盐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战深度学习目标检测:RCNN 相关的知识,希望对你有一定的参考价值。
Faster R-CNN
使用的检测框架是RPN网络+Fast R-CNN网络分离进行的目标检测,整体流程跟Fast R-CNN一样,只是region proposal现在是用RPN网络提取的(代替原来的selective search)。RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,因为anchor机制和边框回归可以得到多尺度多长宽比的region proposal。作者为了让RPN的网络和Fast R-CNN网络实现卷积层的权值共享,训练RPN和Fast R-CNN的时候用了4阶段的训练方法:
1、使用在ImageNet上预训练的模型初始化网络参数,微调RPN网络;
2、使用(1)中RPN网络提取region proposal训练Fast R-CNN网络;
3、使用(2)的Fast R-CNN网络重新初始化RPN, 固定卷积层进行微调;
4、固定(2)中Fast R-CNN的卷积层,使用(3)中RPN提取的region proposal微调网络。
权值共享后的RPN和Fast R-CNN用于目标检测精度会提高一些。小结:Faster R-CNN将一直以来分离的region proposal和CNN分类融合到了一起,使用端到端的网络进行目标检测,无论在速度上还
是精度上都得到了不错的提高。然而Faster R-CNN还是达不到实时的目标检测,预先获取region proposal,然后在对每个proposal分类计算量还是比较大。比较幸运的是YOLO这类目标检测方法的出现
让实时性也变的成为可能。
总结:
总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目标检测的流程变得越来越精简,精度越来越高,速度也越来越快。可以说基于region proposal的R-CNN系列目标检
测方法是当前目标最主要的一个分支。
对于提取候选框最常用的SelectiveSearch方法,提取一副图像大概需要2s的时间,改进的EdgeBoxes算法将效率提高到了0.2s,但是这还不够。候选框提取不一定要在原图上做,特征图上同样可以,低分辨率特征图意味着更少的计算量,基于这个假设,MSRA的任少卿等人提出RPN(RegionProposal Network),完美解决了这个问题,我们先来看一下网络拓扑。
通过添加额外的RPN分支网络,将候选框提取合并到深度网络中,这正是Faster-RCNN里程碑式的贡献。
RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高),提取对应9个候选窗口(anchor)的特征,用于目标分类和边框回归,与FastRCNN类似。目标分类只需要区分候选框内特征为前景或者背景。边框回归确定更精确的目标位置,基本网络结构如下图所示:
训练过程中,涉及到的候选框选取,选取依据:
1)丢弃跨越边界的anchor;
2)与样本重叠区域大于0.7的anchor标记为前景,重叠区域小于0.3的标定为背景;
对于每一个位置,通过两个全连接层(目标分类+边框回归)对每个候选框(anchor)进行判断,并且结合概率值进行舍弃(仅保留约300个anchor),没有显式地提取任何候选窗口,完全使用网络自身完成判断和修正。
从模型训练的角度来看,通过使用共享特征交替训练的方式,达到接近实时的性能,交替训练方式描述为:
1)根据现有网络初始化权值w,训练RPN;
2)用RPN提取训练集上的候选区域,用候选区域训练FastRCNN,更新权值w;
3)重复1、2,直到收敛。
因为Faster-RCNN,这种基于CNN的real-time 的目标检测方法看到了希望,在这个方向上有了
进一步的研究思路。至此,我们来看一下RCNN网络的演进,如下图所示:
以上是关于实战深度学习目标检测:RCNN 的主要内容,如果未能解决你的问题,请参考以下文章
深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构
TensorFlow2深度学习实战:SSD目标检测算法源码解析
TensorFlow2深度学习实战:SSD目标检测算法源码解析
深度学习和目标检测系列教程 6-300:目标检测Fast-RCNN架构
深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络