前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【个人整理】faster-RCNN的背景、结构以及大致实现架构(一)

【个人整理】faster-RCNN的背景、结构以及大致实现架构(一)

作者头像
小草AI
发布2019-06-02 23:33:43
5.9K0
发布2019-06-02 23:33:43
举报

前言

前言:faster-RCNN是区域卷积神经网络(RCNN系列)的第三篇文章,是为了解决select search方法找寻region proposal速度太慢的问题而提出来的,整个faster-RCNN的大致框架依然是沿袭了fast-RCNN的基本能结构,只不过在region proposal的产生上面应用了专门的技术手段——区域推荐网络(region proposal network,即RPN),这是整个faster最难以理解的地方,本文也将以他为重点进行说明。鉴于篇幅较长,本次系列文章将分为3篇来说明:

第一篇:faster-RCNN的背景、结构以及大致实现架构

第二篇:faster-RCNN的核心构件——RPN区域推荐网络

第三篇:faster-RCNN的训练以及补充

本次为系列文章第一篇。

一、 faster-RCNN的背景

Faster R-CNN 发表于 NIPS 2015,其后出现了很多改进版本,后面会进行介绍.

R-CNN - Rich feature hierarchies for accurate object detection and semantic segmentation 是 Faster R-CNN 的启发版本. R-CNN 是采用 Selective Search 算法来提取(propose)可能的 RoIs(regions of interest) 区域,然后对每个提取区域采用标准 CNN 进行分类.

出现于 2015 年早期的 Fast R-CNN 是 R-CNN 的改进,其采用兴趣区域池化(Region of Interest Pooling,RoI Pooling) 来共享计算量较大的部分,提高模型的效率.

Faster R-CNN 随后被提出,其是第一个完全可微分的模型. Faster R-CNN 是 R-CNN 论文的第三个版本.R-CNN、Fast R-CNN 和 Faster R-CNN 作者都有 Ross Girshick.

二、faster-RCNN的网络结构

Faster R-CNN 的结构是复杂的,因为其有几个移动部件. 这里先对整体框架宏观介绍,然后再对每个部分的细节分析.

问题描述:

针对一张图片,需要获得的输出有:

  • 边界框(bounding boxes) 列表,即一幅图像有多少个候选框(region proposal),比如有2000个;
  • 每个边界框的类别标签,比如候选框里面是猫?狗?等等;
  • 每个边界框和类别标签的概率。

2.1 faster-RCNN的基本结构

除此之外,下面的几幅图也能够较好的描述发图尔-RCNN的一般结构:

2.2 faster-RCNN的大致实现过程

整个网络的大致过程如下:

(1)首先,输入图片表示为 Height × Width × Depth 的张量(多维数组)形式,经过预训练 CNN 模型的处理,得到卷积特征图(conv feature map)。即将 CNN 作为特征提取器,送入下一个部分。这种技术在迁移学习(Transfer Learning)中比较普遍,尤其是,采用在大规模数据集训练的网络权重,来对小规模数据集训练分类器. 后面会详细介绍.

(2)然后,RPN(Region Propose Network) 对提取的卷积特征图进行处理. RPN 用于寻找可能包含 objects 的预定义数量的区域(regions,边界框)。这是整个文章最核心的改进,也是本文会着重介绍的点。

基于深度学习的目标检测中,可能最难的问题就是生成长度不定(variable-length)的边界框列表. 在构建深度神经网络时,最后的网络输出一般是固定尺寸的张量输出(采用RNN的除外). 例如,在图片分类中,网络输出是 (N, ) 的张量,N 是类别标签数,张量的每个位置的标量值表示图片是类别 labeli{ label_i }labeli 的概率值.

在 RPN 中,通过采用 anchors 来解决边界框列表长度不定的问题,即,在原始图像中统一放置固定大小的参考边界框. 不同于直接检测 objects 的位置,这里将问题转化为两部分:

对每一个 anchor 而言,

  • anchor 是否包含相关的 object?
  • 如何调整 anchor 以更好的拟合相关的 object?

这里可能不容易理解,后面会深入介绍anchor以及RPN相关的实现原理。

(3)当获得了可能的相关objects 和其在原始图像中的对应位置之后,问题就更加直接了. 采用 CNN 提取的特征和包含相关 objects 的边界框,采用 RoI Pooling 处理,并提取相关 object 的特征,得到一个新的向量.

最后,基于 R-CNN 模块,得到:

  • 对边界框内的内容进行分类,(或丢弃边界框,采用 background 作为一个 label.)
  • 调整边界框坐标,以更好的使用 object.

上面的过程没有涉及到一些重要的细节信息. 但包括了 Faster R-CNN 的大致实现过程。

2.3 faster-RCNN的基本组成

faster-RCNN其实就是由几个基本的网络架构组成的。

Faster R-CNN的整体流程如下图所示。

从上面的图形中可以看出,Faster R-CNN主要分为四部分(图中四个绿色框)

(1)Dataset数据。提供符合要求的数据格式(目前常用数据集是VOC和COCO);

(2)Extractor卷积神经网络。 利用CNN提取图片特征features(原始论文用的是ZF和VGG16,后来人们又用ResNet101);

(3)RPN(Region Proposal Network)。 负责提供候选区域rois(每张图给出大概2000个候选框);

(4)RoIHead。 负责对由RPN产生的ROI进行分类和微调。对RPN找出的ROI,判断它是否包含目标,并修正框的位置和座标。

Faster R-CNN整体的流程可以分为三步:

(1)提特征。 图片(img)经过预训练的网络(Extractor),提取到了图片的特征(feature)

(2)Region Proposal。 利用提取的特征(feature),经过RPN网络,找出一定数量的rois(region of interests)

(3)分类与回归。将rois和图像特征features,输入到RoIHead,对这些rois进行分类,判断都属于什么类别,同时对这些rois的位置进行微调。

就是第二步是关键所在,第一步和第三部同fast-RCNN一样。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-12,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 机器学习与python集中营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com