Fast-Rcnn学习笔记
Fast-RCNN总览
step1:图片先放进卷积层
step2:再卷积层的特征图谱上回映射出对应的感兴趣区域
step3:集过一层ROI Pooling(后面介绍)
step4:每一个ROI变成一维的向量送入两个全连接层
step5:在最后的全连接层再分别将向量送入到分类框/回归框
Fast-RCNN与SPPNet的比较
- Fast-Rcnn在SPPNet上再进行改进
- SPP-net上的不足之处
- 训练比较慢(25h),需要许多磁盘空间
- 再训练时不能更新SPP层下的参数
- Fast R-CNN有点
- 测试是更快
- 一步训练
- 更高的map
- Fast R-CNN的ROI跟sPPNet类似但是又不太一样
- Fast R-CNN是用固定大小的H*W的框(H,W是需要设置的超参数)
- 假设从特征图谱出来的特征图大小为(hw),则每一个小格的大小为(h/Hw/W)
- 然后从每个小的格子中max-pooling,在每个特征图的通道中最大池化都是独立的
在测试时和训练时的过程
- 测试时
- 训练时
关于在分类器和回归器中的详解
在分类器
step1:这里包括N+1个类别(包括1个背景类)
step2:对这一个类别使用softmax进行打分(总和为1)
step3:从这N+1中选择一个分最大的,则该ROI属于的类别为该类
在回归器
step1:每一个类别对应4个参数(后面介绍dx,dy,dw,dh这四个参数)
step2:同理选出属于该类的dx,dy,dw,dh
- 详解边界框回归器
- 说明
step1:绿色的G是Ground Truth,黄色框P是预选框,红色框是最终预测的边界框
step2:dx(P) = (Gx-px)/Pw。同理可以求得dy(p),dw(p),dh(p)
step3:将求得的带入上面的公式中即可求得最终的预测框
关于Fast-RCnn中的Multi-task loss
分类损失
- 因为是属于分类任务,所以使用Cross Entropy loss
- 关于Cross Entropy
- 本文对应的是多分类任务
step1:假设真实标签的one-hot编码是:[0,0,...,1,...,0]
step2:预测的softmax概率为[0.1,0.3,...,0.4,...,0.1]
step3:那么Loss=-log(0.4)
边界框回归损失
针对[u>=1]艾弗森括号:如果是背景类别则该项为0,即:背景不用边界框回归
- 总上所述:fast-rcnn除了没用将selective search融为一体,将Feature extraction,classification,bounding-box regression都融为一体了
- 后面提出的Faster-RCNN将解决这一问题