深度学习目标检测算法对比详述(RCNN,FAST-RCNN,FASTER-RCNN,YOLO,SSD)

综述_部分内容借鉴

目标检测中的RNN家族 与 基于深度学习的回归方法
RNN家族
采用selective search+CNN+SVM的RCNN模型
  • 提取候选框:使用selective search方法,这是一种传统的候选框提取算法,根据图像的颜色纹理色差提取出大约两千个proposal(候选框),注意这些候选框是可以重叠的。

    selective search 方法提取的候选框

    selective search 提取候选框的方法

  • 对候选框进行特征提取:对每一个候选框使用CNN提取特征,因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征,但是进行warp and crop 很大程度上会造成图像的失真。

    图像进行warp和crop之后造成失真

  • 使用特征对候选框进行分类 :将每个Region Proposal提取到的CNN特征输入到SVM进行分类,SVM是已经训练好的21个(voc数据集有20个分类+1个背景)分类器,用于判断这个物品是否属于这一类,最终选出置信度最高的类作为图像的分类,然后使用回归模型对候选框进行精修,回归方法

    回归模型对候选框进行精修

  • 细心的同学可能看出来了问题,R-CNN虽然不再像传统方法那样穷举,但R-CNN流程的第一步中对原始图片通过Selective Search提取的候选框region proposal多达2000个左右,而这2000个候选框每个框都需要进行CNN提特征+SVM分类,计算量很大,导致R-CNN检测速度很慢,一张图都需要47s。

  • 如何训练RCNN?使用什么网络结构?
    因为标注有框的检测模型数据集很少,但是用于分类的数据集数量是比较多的,所以我们要利用分类数据集(voc,pascal)来训练我们的网络,并且也使用分类模型进行fine-turning 得到我们的检测模型。

    RCNN网络结构

  • 训练样本怎么标记?如何得到训练集?


    RCNN训练集
  • 为什么不直接使用CNN分类还要使用SVM进行分类呢:原因在于CNN容易过拟合,所以我们需要大量的标注图片,但是使用上面方法得到的标注信息其条件很松散(因为只要IOU大于0.5就算正样本,那么很有可能只是物体的一部分也被判断成物体了,物体的另一部分却不视为这个物体),所以用来做分类效果并不好。

    RCNN为什么要用SVM进行分类

  • 如何使用特征+SVM进行分类:并不是把特征丢到一个一个的SVM分类器中的哦,并且SVM的正负样本IOU阈值和CNN正负样本IOU阈值不一样,注意分辨。

    SVM进行分类是正负样本的阈值

SVM进行分类
  • 如何对框体进行位置精修?: 对于每一个类别中IOU大于0.6的框使用线性脊回归器进行位置精修

    图片7.png

  • 所以RCNN的训练方法如下:非极大值抑制就是对被分为同一类的框,从概率最大的框开始一直到最小概率的框(对列进行排序,从列首到列尾进行循环),重复的去除一些与当前框IOU大于阈值的小概率框。

    RCNN的训练方法

SPP Net(空间金字塔池化)
  • SPP-Net是出自2015年发表在IEEE上的论文-《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》。 该论文提出了将 最后一个卷积层后的池化层替换为spatial pyramid pooling layer(SPP层), 该层能够生成长度固定的特征,并输入到全连接层。因此,SPP-net适合输入大小不同的图像。之前的CNN网络都要求使用尺寸的图片作为输入,因为全连接层要求的输入尺寸成固定的那么倒推整个CNN网络的输入图片的尺寸也要是固定尺寸,这样就要求对图片进行裁剪和缩放,使得图像识别失真,SPP-Net可以使得CNN网络输入图片的大小是非固定的,因为从原理上来说,做卷积,池化都不需要图片有固定尺寸,那么我们只需要在输入全连接层之前做一个池化操作就可以使得输入到全连接层的特征是尺寸相同的了。即在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了 ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
    RCNN与SPP-Net网络结构的比较
  • SPP-Net的贡献二是 只对原图提取一次卷积特征: 在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。而SPP Net根据这个缺点做了优化:只对原图进行一次卷积计算,便得到整张图的卷积特征feature map,然后找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作。如此这般,R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次卷积,从而节省了大量的计算时间,比R-CNN有一百倍左右的提速。
  • SPP-Net的构造方法:我们以论文中的例子进行讲解,如果原始的CNN中最后一个池化层的输出是60 * 40 * 256(256个60 * 40的特征图,256是维度)的特征图,如果要得到固定的神经元个数,论文中提到的是21,我们就需要将60*40的特征图,处理成长度为21的向量。
    SPP-Net

论文中使用三层的金字塔池化层pooling,且论文中设置每次特征图被分别切成(1,4,16)块,然后按照层次对这个特征图分别处理(用代码实现就是for(1,2,3层))。第一层对这个特征图整个特征图进行池化(池化又分为:最大池化,平均池化,随机池化),论文中使用的是最大池化,然后得到了1个特征。第二层先将这个特征图切分为4个(20,30)的小的特征图,然后使用对应的大小的池化核对其进行池化得到4个特征。第三层先将这个特征图切分为16个(10,15)的小的特征图,然后使用对应大小的池化核对其进行池化得到16个特征,然后将这1+4+16=21个特征输入到全连接层,当然了,这个层数是可以随意设定的,以及这个图片划分也是可以随意的,只要效果好同时最后能组合成我们需要的特征个数即可,这就SPP-Net的核心思想。

Fast-RCNN
  • 与RCNN的区别:一是最后一个卷积层后加了一个ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中训练,使用softmax代替SVM进行分类
  • ROI Layer :ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个77512维度的特征向量作为全连接层的输入。
  • 构造成end-to-end模型:R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。之前R-CNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做box regression,而在Fast R-CNN中,作者巧妙的把box regression放进了神经网络内部,与region分类和并成为了一个multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。

总结 :R-CNN有一些相当大的缺点(把这些缺点都改掉了,就成了Fast R-CNN)容易看见,Fast R-CNN相对于R-CNN的提速原因就在于:不过不像R-CNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。

Faster RCNN(与Fast RCNN 的区别是使用RPN网络,所以Faster RCNN讲解就是RPN网络的讲解)
  • Faster RCNN的改进之处主要在加入了一个特征提取网络RPN以代替原来获取候选框的selective search 方法:这一网络可以根据共享的特征图直接得到分类信息(框里面的物体属于前景还是背景)与框的位置信息(框的坐标信息)。

RPN简介: 
• 在feature map上滑动窗口
• 建一个神经网络用于物体分类+框位置的回归
• 滑动窗口的位置提供了物体的大体位置信息
• 框的回归提供了框更精确的位置

RPN网络

PRN网络结构

FasterRcnn的PRN网络
  • 一个特征点(总共256维)产生2k个分数(256 * 9),4k个坐标(256 * 9 * 4),最后一层特征图尺寸是7 * 7,所以总共大概产生20000个坐标(框)。
  • Faster-RCNN网络结构
    Faster-RCNN 网络结构
  • 网络中有4个pooling层 最终的feature Map的大小是(M/16)*(N/16),


    卷积层

    图片大小
  • softmax前后都有1 * 1的卷积核进行reshape是为了方便分类
    reshape layer的作用
bounding box regression
  • 与ROIPooling层相接的Proposal层的作用
    对于一副任意大小的P*Q的图像,传入FasterRCNN之前首先要Reshape 到固定的M * N大小,im_info=[M,N,scale_factor]保存的就是此次缩放的所有信息,所以虽然输入到Faster RCNN的图片都是reshape过的,但是还是保留有且使用原图的信息,只不过输出给ROIPooling层的proposal 是对应于reshape后的图片的。
    图片17.png
Proposal 层
  • ROI Pooling层的处理方式相当于只使用一层的SPP-Net
    ROI Pooling 层
  • 最后一部分,分类,回归精修框:
    Classify 层
  • 总结!Faster RCNN网络的处理过程:

1.对整张图片输进CNN,得到feature map
2.卷积特征输入到RPN,得到候选框的特征信息
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置

什么是下采样

缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图
下采样原理:对于一副图像I尺寸为MN,对起进行s倍下采样,即得到(M/s)(N/s)尺寸的分辨率图像,当然,s应该是M和N的公约数才可以,如果考虑是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的 均值:Pk = Σ Ii / s2。

未完待续。。。

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

推荐阅读更多精彩内容