RCNN、Fast RCNN、Faster RCNN详解参考以下文章:
RCNN:https://blog.csdn.net/qq_32172681/article/details/99105617
Fast RCNN:https://blog.csdn.net/qq_32172681/article/details/99194233
Faster RCNN:https://blog.csdn.net/qq_32172681/article/details/99290543
1、RCNN分为三部分:
2、RCNN流程:
3、网络结构(AlexNet fine-tune):
selective search 提取候选框之后,喂入CNN进行特征提取
4、瓶颈:对每个region proposals 都做一次CNN计算,计算量太大。
5、损失函数:分类用交叉熵损失函数、回归用均方差损失函数
1、解决RCNN重复卷积问题
先对整个input图像做卷积,得到feature map,同时,用selective search将候选框选择出来,将候选区域在feature map上选出来,这样避免了对每个候选区域重复计算的问题,大大提高了计算速度。
2、SPP Net(因为ROI pooling借鉴了SPP Net,所以整理一下)
它的原理是,黑色图片代表卷积之后的特征图,接着我们以不同大小的块来提取特征,分别是4*4,2*2,1*1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块,从这21个块中,每个块提取出一个特征,这样刚好就是我们要提取的21维特征向量。SPP Net网络如下:
缺点:2次浮点数取整,对回归结果有影响。
3、ROI Pooling
借鉴了SPP Net,分成n块,得到n种特征。可以得到固定大小的输出,不需要像RCNN一样,直接resize。
RPI pooling 过程如下图:
详细过程见文章:https://blog.csdn.net/qq_32172681/article/details/99734978
4、Fast RCNN 流程:框回归的是anchor框和预测值之间的差值
5、Fast RCNN分为4部分:
6、Fast RCNN用同一个网络,同时进行分类和回归任务
7、损失函数:分类损失用交叉熵损失、回归损失用Smooth L1 loss
8、向后传播:在每个像素点上,有叠加候选区域,则梯度也叠加
9、多尺度训练:输入不同size的数据,相当于做数据增强
10、何恺明经典论文总结:(resnet、faster rcnn、mask rcnn)
1、解决Fast RCNN用第三方工具selective search提取region proposals的问题,用RPN代替它。
2、RPN结构
3、Faster RCNN检测流程:
4、接下来分块描述Faster RCNN:
(1)特征提取网络结构(Vgg 16去掉最后一个最大池化层)
(2)RPN网络结构
(3)ROI pooling结构(池化过程见上文)
(4)Fast RCNN结构
5、损失函数(RPN和Fast RCNN 损失的区别、以及标签区别,有点小疑惑~)
损失函数分为四部分(RPN 分类loss、RPN 框回归loss、Fast RCNN 分类loss、Fast RCNN框回归loss):
(1)RPN的分类分支,预测候选框是前景类or背景类;
分类真值由以下方法确定:
(2)RPN框回归是为Fast RCNN生成推荐区域proposals;
回归真值:构造候选框预测值与真值的位置差异,用于构造框回归损失
(3)Fast RCNN分类分支,直接分类到具体的标签;
(4)Fast RCNN框回归也是直接回归具体类别的回归系数;
初步将labels定义为每个预测窗口对应IOU最大的真值窗口的标签;进一步筛选,根据前景阈值,背景阈值将所有预测窗口分为前景窗口,背景窗口以及无效窗口;进一步,抛弃无效窗口,只保存有效窗口的roi,labels,roi_scores,其中labels设置为前景为样本真值标签,背景为0, 这也符合原论文中,将背景单作为一类用于分类的想法。
6、4-step training
(1)公共特征提取网络被ImageNet-pre-trained Model vgg16初始化,并对region proposal 任务进行fine-tuning。
(2)使用step1产生的RPN proposals训练一个单独的Fast-RCNN目标检测网络,该网络也由ImageNet-pre-trained Model初始化,这两个网络不共享卷积层。
(3)用这个目标检测网络去初始化RPN训练,固定共享的卷积层参数,只微调RPN独自的层。
(4)保持RPN的卷积层参数不变,只微调单独的Fast RCNN层。
就这样,2个网络共享卷积层,而且形成了一个统一的网络,接下来只要run更多的迭代次数。
7、RPN attention机制:RPN为Fast RCNN提供物体可能所在的区域
盗图地址:https://blog.csdn.net/babywong/article/details/79170833
problem:
faster rcnn中的rpn和fast rcnn的分类loss和框回归loss的区别是什么?他们对应的真值又是什么?