- Faster R-CNN论文链接:
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
- 推荐代码:
https://github.com/facebookresearch/Detectron (首推!Faster RCNN原班人马复现代码,模型有很多,Faster RCNN、端到端的Faster RCNN、Mask RCNN以及keypoint net。但是基于caffe2实现,可读性差)
https://github.com/tensorflow/models/tree/master/research/object_detection (由google实现,专人维护,同样有可选多模型。基于tensorflow实现,使用了tensorflow各种特性,对tensorflow没有一定掌握程度的同学,很难读懂代码)
https://github.com/smallcorgi/Faster-RCNN_TF (python2,tensorflow,最大的亮点是类函数链式调用实现网络结构,可读性强超强。唯一缺点就是roi pooling的代码没有开源)
https://github.com/endernewton/tf-faster-rcnn (tensorflow,slim,有全部实现代码,可读性较强)
(您的点赞是对知识分享的最大认可,谢谢)
一、概述
Faster R-CNN是截止目前,RCNN系列算法的最杰出产物,two-stage中最为经典的物体检测算法。推理第一阶段先找出图片中待检测物体的anchor矩形框(对背景、待检测物体进行二分类),第二阶段对anchor框内待检测物体进行分类。
![f6e28fc665d34de6bba20b522632958a.png](https://i-blog.csdnimg.cn/blog_migrate/b419874367dad638640db55e4646288b.jpeg)
R-CNN系列物体检测算法的思路都是,先产生一些待检测框,再对检测框进行分类。Faster R-CNN使用神经网络生成待检测框,替代了其他R-CNN算法中通过规则等产生候选框的方法,从而实现了端到端训练,并且大幅提速。如果不了解R-CNN、Fast R-CNN,建议不必深究,不影响读懂Faster R-CNN。
前文中推荐的几篇解读,在各种Faster R-CNN文章中算是比较出类拔萃的,本文同样将其作为参考。Faster R-CNN实现细节相对复杂,论文以及论文解读,都无法百分之百还原算法全貌,透彻理解需要同时阅读代码。
二、网络结构
![7ad3be12612c82cb288d7cb84fa341d4.png](https://i-blog.csdnimg.cn/blog_migrate/71ebcb1fdca8359ce2f975cfb533aaec.jpeg)
整个Faster R-CNN可以分为三部分:
- backbone:共享基础卷积层,用于提取整张图片的特征。例如VGG16,或Resnet101,去除其中的全连接层,只留下卷基层,输出下采样后的特征图。
- RPN:候选检测框生成网络(Region Proposal Networks)。
- Roi pooling与分类网络:对候选检测框进行分类,并且再次微调候选框坐标(在RPN中,网络会根据先前人为设置的anchor框进行坐标调整,所以这里是第二次调整)。输出检