R-CNN、Fast-RCNN、Faster-RCNN思想总结

本文对运用深度学习卷积神经网络来进行目标检测(object detection)的 tow-stage两阶段法的思想用自己的理解做一个总结,本人新手一个理解可能有错误或者不完备。在运用卷积神经网络处理目标检测之前还有很多的传统算法这里不做介绍。

一、传统的滑窗算法

VGG16

所谓目标检测就是要在图片中用一个框框出物体并且进行分类。而用深度学习去解决这样的问题还得从滑窗算法说起。滑窗算法就是用一个特定尺寸大小的窗口以特定的步长在图片上滑动截取小图像块Resize之后将其送入一个为分类任务所训练的卷积神经网络中,比如VGG16,如果我们是想加测出十类物体那么把VGG16或者其他分类网络迁移过来去掉最后一层保持其他层的网络参数一致,然后在写一个softmax输出元素个数为10的向量,之后在网络上接着训练进行微调(Fine-tuning)就可以了。本质上来说这种滑窗算法就是将目标检测问题转变成了一个分类问题,这样处理过于简单,算法的缺陷是很明显的:

  1. 要设置给定的步长和窗口大小,窗口太小框不住物体,太大又产生数据冗余,框被定死了不能变通

2.计算量太大,没滑动一次都将图像块输入网络中分类,这样可能将背景图片也输入进去了进行分类这是很没必要的。而且窗口滑动的时候与上一次滑动的结果可能有重叠区域,这样就重复计算了,且滑动产生的区域很多计算量很大。

二、R-CNN

image.png

R-CNN算法的提出才是真正奠定了深度学习在目标检测领域的应用。R-CNN算法主要解决了滑窗算法的两个弊端:
1.随着窗口的滑动导致产生的数据量异常多,计算量非常大,R-CNN将滑窗截取图像块的方法替换成选择性搜索(Selective Search)生成建议区域(Region Proposal),选择性搜索通过图像的纹理和像素聚类来分割出图像可能存在物体的小区域,让后给这些小区域打上边框送入网络中进行分类和边框回归建议区域极大的降低了滑窗生成的数据量。

2.边框回归改进了用固定大小的窗口框出物体所在位置,使得目标定位更加准确

R-CNN算法流程

  1. 对输入图像进行选择性搜索生成不同大小的Region Proposal,将Region Proposal的区域Resize到固定尺寸
  2. 并进将某个分类网络迁移过来提取出建议区域的特征,并在现有数据集上进行微调。
  3. 用提取出的特征训练多个支持向量机,每一个都用来进行二分类
  4. 将每个提议区域连同其标注框一起进行边界框回归

R-CNN虽然对比滑窗法有了很大的改进但是依旧存在很大的问题:
1.R-CNN虽然减少了滑窗算法的计算量但是选择性搜索生成了数千个建议区域这意味着每张图片都要进行上千次前向传播,这个巨大的计算量令R-CNN依旧难以在实际应用中被广泛使用。
2.由于R-CNN建议区域的尺寸不一样而输入到全连接层的时候又要以固定的尺寸进行输入,这就意味着要将每一个建议区域都进行Resize操作使得图像在一定程度上发生了形变和扭曲,对分类任务很不利。
3.每个提议区域都要经过卷积层的特征提取过程,重复了卷积操作过程。
4.R-CNN在进行预测的时候边框仍旧不够准确。

三、Fast RCNN

image.png

Fast RCNN在R-CNN的基础上进行了改善,主要有以下几条:

1 . Fast RCNN共享卷积层也就是说不对每个提议区域分别进行卷积操作提取特征,而是直接将输入图片输入一个全卷积神经网络提取特征,减少了计算量。

  1. Fast RCNN引入了一个ROI(region of interest)池化层,这个池化层的作用简而言之就是将所有的提议区域池化成同样尺寸的张量。避免了R-CNN中通过resize操作造成的图片扭曲和失真。
  2. 不用分别对分类器和边框回归模型进行训练,两者能够同时进行。

Fast-RCNN算法大致步骤

1.对图片进行选择性搜索提取出建议区域
2.将图片输入共享全卷积神经网络进行特征抽取
3.将建议区域映射到全卷积神经网络的feature map上。
4.将feature map输入ROI池化层池化到固定尺寸输入全连接层根据边框回归还是分类器训练输出不同尺度的张量。

Fast RCNN虽然通过共享卷积层降低计算量、ROI池化层避免了Resize的负面影响。但是由于其预测框太少,召回率不高。

四、Faster-RCNN

Faster-RCNN

Faster-RCNN在Fast-RCNN上的改动主要是以下两点:

1.引入了anchor机制
2.用RPN网络代替选择性搜索

什么是anchor机制?


anchor机制图

anchor机制简要而言就是在原始图像ground truth box的中心位置标注几个不同长宽比例的bounding box就是anchors,之所以要引入anchors的目的其一是因为图中的物体大小不一形状各异,用一种类型的bounding box不能够很成功的给物体定位,当anchor数量很多密密麻麻布满整个图片的时候我们就有理由认为这些bounding box已经框住了物体。下满结合RPN网络的作用来介绍Faster-RCNN中使用anchor机制的作用

RPN网络

RPN网络的作用是代替选择性搜索来提取建议区域,先来看Faster RCNN的网络图,图中将输入图片通过一个全卷积神经网络输出之后的feature map然后将feature map通过一个3x3的卷积层生成表示anchor的张量,比如feature map的尺寸为40x40的feature map,这个feature map的每一个点都可以映射到输入图片的某个位置上,每一个点都可以看做是原图的某个领域特征抽取池化之后的像素,每个点都是某个区域的中心,那么通过卷积层输出一个40x40x(4*9)的张量,也就是说feature map中每个点对应到原图中的区域中心点处都有9个anchor,每个anchor都有4个参数(x_1,y_1,w_1,h_1)这四个参数代表了anchor的中心点以及box 的宽和高。然后要做的就是通过与ground truth的交并比来对anchor框柱的是背景还是物体进行分类并且对有物体的anchor进行与之前在输入图像中标注的anchor进行边框回归,之后在通过非极大值抑制对anchor概率小的anchor进行剔除。之后得到的(x_1,y_1,w_1,h_1)所有anchor的4个参数就是我们通过RPN得出来的建议区域。然后在将anchor的参数映射到feature map上输入ROI池化层将所有anchor区域池化成相同尺寸输入全连接层。之后的处理与Fast-RCNN是一样的,最后的边框回归是针对ground truth的而不是针对在原图像中标注的辅助anchor。这样我们的anchor就可以看做是一个先验信息,表示物体大致在什么方位,对最后的边框回归有辅助作用。而且当物体以不同的形状中心出现在相同的位置时能够更好的给物体定位。

Fast-RCNN由于引入了anchor机制增强了网络的定位能力。

尽管到Fast-RCNN two-stage的性能已经提升了不少但是由于模型训练困难,计算速度慢的弱点很多情况下还是不能使用,如何来提高计算速度嘞?这就要说到one-stage中经典的 YOLOV1-V3的算法了。且看下集YOLOV1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342