这篇承接上一篇,FRCN是rbgirshick在R-CNN基础上提出的改进,提出了一些创新式的做法,不仅提升了训练和测试时的速度,而且提升了精度。
SPPnet是Kaiming He提出的一种结构,论文链接在这:https://arxiv.org/abs/1406.4729
可以看出,FRCN不仅在精度上得到了提升,更重要的是,它在测试时比RCNN快了213倍,这让实时处理成为可能(当然faster RCNN基本已经达到了实时的要求)。接下来我们首先分析一下这篇论文:https://arxiv.org/abs/1504.08083
写在解读之前:
通篇阅读下来,实在敬服rbgirshick大神。有理有据,对比实验,实现,思路都十分清晰。尤其是第五部分,对那几个问题的探讨和对比实验,更是让人茅塞顿开。RBG大神的学术态度真是高山仰止!
一.论文解读
1.Introduction
detection有两方面的挑战。第一,大量的候选区域需要被处理;第二,候选区域只能提供大致的定位,所以必须被细调来达到精确的定位。这两个挑战让众多解决方案只能牺牲速度和精度。
RCNN是一个多级的过程,首先提取约2k个候选区域,然后使用log loss微调一个卷积网络,最后,训练SVMs作为检测器。RCNN在测试时很慢(在GPU上大约47s/image),因为每一个候选区域都需要在卷积网络中做一遍前向传播,没有共享计算。
SPPnet改进了这一点,它将整张图片作为输入得到一张特征图,然后再用特征图中提取到的特征向量分类每一个候选区域,但SPPnet同样是一个多级过程。
rbgirshick认为FRCN有以下几个贡献:
1.更高的检测质量(mAP)相比于RCNN和SPPnet
2.使用一个多任务的loss,训练时单级的
3.训练可以更新所有网络层
4.不需要为特征缓存提供磁盘存储
2.Architecture和training
这张图就是FRCN的架构图。一个FRCN网络使用整张图片和候选区域集做为输入,网络首先处理整张图片得到一个卷积特征图,然后,为每个候选区域的ROI(region of interest)池化层从特征图中提取一个固定长度的特征向量,每个特征向量被送入全连接层,最终分成两个兄弟输出层:一个产生softmax概率评估K个物体类别外加一个"背景"类,另一个为每一个物体类输出4个实数值,每个4个值的集合都是K个类别的位置细调的结果。
2.1 ROI pooling layer
ROI池化层是SPP(spatial pyramid pooling)层的特殊情况,