本次介绍的是Fast R-CNN,与之前的RCNN和SPPNet不同,Fast R-CNN是一个清晰和快速的目标检测的框架。在训练和测试的速度上都远超过上述两种方法。同时,Fast R-CNN的训练是一次性的端到端的训练,同时训练的分类和回归两个任务。极大的简化的训练的流程。
项目代码:https://github.com/rbgirshick/fast-rcnn
三、Fast R-CNN
1)R-CNN与SPPNet的不足
R-CNN在目标检测中有很好的准确率,但是这个方法本身仍有很多的问题。
- 训练过程是多级的。R-CNN的训练分成三个部分,首先是finetune一个网络(目标检测的类别和ImageNet不一样)。之后是使用SVM进行目标的分类的训练。最后是使用feature map来进行目标的bounding-box的回归训练。
- 训练过程费时费空间。SVM和回归两个任务,需要存储目标的特征,需要很多空间。网络的训练过程很慢。
- 测试速度太慢。需要对每个proposal进行前馈,耗时太长。速度只有47s / image。
SPPNet可以加速R-CNN,在SPPNet中,在卷积的部分直接前馈整张图片,之后对于每个proposal,计算出它在feature map上的位置,然后使用SPP Pooling的方式,得到定长的特征向量。使得测试时间大大缩短。但SPPNet也有很多的问题。