一。rcnn是使用神经网络进行目标检测的开山之作,他的灵感来自于alexnet模型的出现,基于神经网络的目标检测的出现撼动了surf和hog等检测算法。

rcnn的具体实现步骤分为四步:

1.使用selective search算法产生1k-2k个候选区。

2.对于每个区域利用 CNN 抽取一个固定长度的特征向量。

( 而通过 Selective Search 产生的候选区域大小不一,为了与 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换到 227*227 的尺寸。)

3.再对每个区域利用 SVM 进行目标分类。

4.使用边界框回归器对候选区进行微调。

Fast rcnn 测试 rcnn,fast-rcnn,faster-rcnn_目标检测

提取特征的时间,如果用 GPU ,13s/张,CPU 53s/张。

缺点:1.测试时间长2.训练时间长3.所需内存大

二。fast rcnn相比R-CNN,主要两处不同:

(1)最后一层卷积层后加了一个ROI pooling layer;
(2)损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练

fast rcnn的具体实现步骤分为四步:

1.使用selective search算法产生1k-2k个候选区。

2.对输入图片进行特征提取,得到feature map。根据候选区截取到feature map相应的区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。(特征提取)

3.利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.(Fast R-CNN则是将候选框目标分类与bbox regression并列放入全连接层,形成一个multi-task模型。)(联合候选框回归与目标分类的全连接层)

fastrcnn针对rcnn的部分问题进行优化:1.因为时间和内存消耗比较大。在训练SVM和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间消耗还是比较大的。测试的时候也比较慢,每张图片的每个region proposal都要做卷积,重复操作太多。候选区之间有很多重叠的部分导致特征被反复提取


Fast rcnn 测试 rcnn,fast-rcnn,faster-rcnn_全连接_02

三。faster rcnn相比FAST-RCNN,主要两处不同:

(1)使用RPN(Region Proposal Network)代替原来的Selective Search方法产生建议窗口;
(2)产生建议窗口的CNN和目标检测的CNN共享

faster rcnn的具体实现步骤分为四步:

1.通过cnn提取feature map。

2.feature map用RPN先生成一堆Anchor box,对其进行裁剪过滤后通过softmax判断anchors属于前景(foreground)或者后景(background),即是物体or不是物体,所以这是一个二分类;同时,另一分支bounding box regression修正anchor box,形成较精确的proposal(注:这里的较精确是相对于后面全连接层的再一次box regression而言

3.根据建议窗口截取到feature map相应的区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。
4.利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.

Fast rcnn 测试 rcnn,fast-rcnn,faster-rcnn_目标检测_03