Faster RCNN发展过程总结

85 篇文章 0 订阅

感谢https://www.bilibili.com/video/av15949356?from=search&seid=10709304168993056773

将卷积神经网络应用到物体检测中的模型发展过程:1.R-CNN 2.Fast R-CNN 3.Faster R-CNN。

(1)CNN 卷积神经网络

(2)RPN region proposal network

(3)Fast R-CNN(物体检测器)

(4)Faster R-CNN=RPN+Fast R-CNN 其中RPN和Fast R-CNN共享前面的卷积特征图。

1.R-CNN

region proposal:指的是图像中有很大概率是前景包围框的bounding boxes,在R-CNN中的region proposal由selective search算法提出。在R-CNN中,由selective search在原始的输入图像上运行后将会生成大约2000个region proposal,再对这些region proposal分别进行CNN的前向传播,即对每个候选区域分别提取卷积特征,这一过程将会消耗极大的内存资源和计算资源,R-CNN在测试阶段对于一张图像大约需要50秒,

loss = SmoothL1Loss(loc_preds, loc_targets) + CrossEntropyLoss(cls_preds, cls_targets).
物体检测中的损失函数分为两个部分:位置偏移量回归损失(smooth L1 Loss) 和 包围框分类损失(cross entropy)

回归损失:通常使用smooth L1 loss,

当abs(x)<1    0.5x**2   也即当所预测的位置偏移量距离小于1时,则将梯度值变小
当abs(x)>=1   x-0.5

分类损失:使用focal loss和OHEM,现在使用Focal loss的比较多,这是因为使用OHEM时负样本相比于正样本的采样倍数不容易确定,可能需要在实验的过程中动态调整。

(1)focal loss:由于物体检测训练RPN阶段仅仅进行前景和背景的二分类问题,故而这里仅以二分类问题为例。原始的交叉熵函数(带有解决类别不平衡为题的权重α)

CE\left ( pred,label \right )=\sum -\alpha* label\left [ i \right ]*log(pred\left [ i \right ])-\left ( 1-\alpha \right )*\left ( 1-label\left [ i \right ] \right )*log\left ( 1-pred\left [ i \right ] \right )

则加上focal loss是为了:无论是对于正样本还是负样本,都让容易训练的样本权重变小(容易训练的样本说明它很容易就预测正确),而困难的样本权重增大。物体检测中将会出现大量的负样本,而大多数的负样本都是简单负样本(即很容易分类正确的负样本)

FL(pred,label)=-α*label[i]*(1-pred[i]的γ次方)*log(pred[i])-(1-α)*(1-label[i])*(pred[i])的gamma次方*log(1-pred[i])

这意味着:对于负样本,如果pred越接近于0,则样本的权重将会更小。

(2)OHEM。OHEM的全称是on line hard negative example mining,只对困难的负样本进行在线挖掘。

它的做法是:首先计算出所有region proposal的分类损失,然后对于所有ground truth label为正样本的包围框都要保留对应的loss项,并记录正样本的个数N,再对于所有负样本的分类loss从大到小进行排序,然后取出loss为前3*N的region proposal对应的分类loss,加入到最终的分类loss中,由于这部分被挖掘出来的负样本loss是较大的,故而它一定是分类很困难的负样本,故而称为在线困难负样本挖掘。这意味着,每次训练过程中,所挖掘出来的困难负样本都是不同的,是随着训练过程的进行,网络权值的变化而不同的,故而称为在线困难负样本挖掘。

2.SPPNet

SPPNet在R-CNN上的改进主要在于:R-CNN由于对于每个region proposal的分类器和regression之前,先要对region proposal进行CNN的卷积特征提取以及FC的特征向量提取,这就要求输入到CNN之前的输入图像块具有相同的分辨率,R-CNN的做法是直接对图像块进行warp,而这一操作将会使得原始region proposal的特征损失(如宽高比、面积等),为了避免这一损失,SPPNet提出空间金字塔池化结构,允许region proposal具有不同的分辨率,经过CNN提取到特征图之后,分别进行4*4,2*2,1*1的空间金字塔池化,即将region proposal提取到的特征图分别划分成4*4,2*2,1*1的网格,在每个网格内部使用global average pooling,最终对每个特征图得到21维的特征图。

3.Fast RCNN

fast RCNN实际上借鉴了SPPNet的思想,但是它只使用了单个尺度的金字塔池化,即将region proposal经过CNN提取到的特征图划分成7*7个网格,在每个网格内部使用global average pooling,最终对每个region proposal得到7*7*C的特征图块。

fast RCNN相比于R-CNN的重要改进之处在于并不是将每个region proposal对应的图像块分别依次前向传播送入CNN,而是直接将整张输入图像送入CNN,得到整张图像对应的特征图,再根据selective search算法的指引(SS算法给出的是在原始输入图像分辨率上的region proposal像素坐标点),根据特征图与原始输入图像映射的比例关系,在特征图上crop出相应的特征块,而这些特征块必然也是不同分辨率大小,不同宽高比的,故而使用单个尺度的SPP pooling(在Fast RCNN中称为ROI pooling),得到当前region proposal对应的固定分辨率的特征图。

4.Faster RCNN

Fast RCNN相比于它之前的object detector的区别在于它不在需要selective search算法提取region proposal,而是使用RPN(region proposal network)生成region proposal。

RPN:引入anchor的概念对ground truth bounding boxes进行编码。由于神经网络所能预测的输出必须具有固定的shape。物体检测问题中的ground truth就是bounding boxes包围框,而对于每个输入图像而言,最终的包围框数量并不确定。故而引入anchor,对ground truth boxes进行编码。在输入图像经过若干次下采样之后得到的特征图中的每个像素点上生成9个anchor,anchor的生成与输入图像的内容没有任何关系,对于所有的输入图像(应具有相同的空间分辨率)anchor都是相同的,然后计算anchor与所有ground truth boxes之间的IOU(intersection over union),IOU大于0.7则为正样本,表示anchor是该包围框的正样本,IOU小于0.3则为负样本。如果anchor是正样本,则对anchor的类别和位置偏移量进行编码,编码后将会得到anchor的classification和regression ground truth,位置偏移量的编码公式与Fast RCNN编码公式相同。如果anchor 是负样本,则只需要关注类别ground truth是背景类别即可。

RPN prediction map 有两个部分:

(1) H1*W1*36,36=9*4,表示对于特征图中每个像素点的9个anchor的位置偏移量预测值,

(2)H1*W1*18,18=9*2,表示对于每个anchor前景背景类别预测。

RPN阶段的classification loss使用了OHEM。

当RPN生成了大约2000个region proposal后,再从RPN与Fast RCNNshared feature map上的对应位置crop出相应的特征块,进行ROI pooling得到2000*7*7*C的特征图,进行多个类别的前景预测和位置精修。

Faster RCNNFaster Region Convolutional Neural Network)是一种用于目标检测的深度学习模型。它是RCNN系列算法的发展,主要通过引入区域建议网络(Region Proposal Network,RPN)来提高检测速度和准确率。 Faster RCNN的部署与实现可以分为以下几个步骤: 1. 数据准备:首先需要准备训练和测试的数据集。数据集包括标注有目标框的图像和相应的类别标签。 2. 模型训练:使用训练集数据训练Faster RCNN模型。这一步需要使用深度学习框架(如TensorFlow、PyTorch等)来构建和训练模型。在训练过程中,模型会通过学习来提取图像特征,并预测目标框的位置和类别。 3. 模型调优:训练模型后,可以进行模型调优以提高检测性能。这包括调整模型的超参数、调整非极大值抑制(Non-Maximum Suppression,NMS)的阈值等。 4. 区域建议网络:Faster RCNN的关键部分是区域建议网络(RPN),它用于生成待检测目标的候选框。在部署过程中,需要根据训练好的Faster RCNN模型提取特征并使用RPN生成候选框。 5. 目标检测:在获得候选框后,将其输入Faster RCNN模型中进行目标检测。模型会根据候选框的特征和类别信息判断目标的位置和类别,并输出最终的检测结果。 6. 模型评估:部署完成后,可以使用测试集数据对模型进行评估。评估指标包括准确率、召回率等,可以用于评估模型的性能和改进算法。 总结来说,Faster RCNN的部署与实现需要进行数据准备、模型训练、模型调优、区域建议网络以及目标检测等步骤。通过这些步骤,可以实现一个高性能的目标检测系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值