R-CNN虽然是ECCV2014年的论文,但它是目标检测算法的基石,Fast R-CNN、Faster R-CNN都是在R-CNN基础上的不断优化改进。
1.什么是目标检测?
给一张图,如上图,图片中的动物是什么?它在图片中哪个位置?这就是是目标检测要做的事情。
目标检测主要两块内容:
2.R-CNN论文:
论文地址:
Rich feature hierarchies for accurate object detection and semantic segmentation
先从R-CNN开始,了解其思想,对后面Fast R-CNN、Faster R-CNN的理解灰常有帮助的。
从上图可以看到:R-CNN算法即做分类也做回归。图中的Bbox-reg(回归)和SVMs(分类)
RCNN算法的流程:
-
输入一张图像
-
用selective search 算法在原始图像上找出一些候选框,一张图像大约有2k个候选框(根据颜色、纹理、角边等等找到可能存在的候选框)。
-
对每一个候选框分别进行卷积。先通过一些基本算法产生大约有二千个候选框,一个一个地分别输入卷积层卷积,这时是不是明显感觉速度会很慢了
-
卷积后,把特征送进SVMs分类器进行分类,判断它是什么类别;再把特征送到Bbox-reg做回归。
即:候选框→卷积→分类和回归
这就是R-CNN的主要思想:在输入图像上产生一些候选框,对这些候选框分别的进行卷积,得到的特征拿来做分类和回归
3.R-CNN的问题:
- 候选框没有共享各自的卷积网络。每一个候选框都需要通过CNN网络进行计算,计算量会很大,因为卷积层对图像的输入大小没有限制,但全连接层对图像的尺寸是有限制的,而候选框的大小是不一样的,所以要通过不同的卷积网络训练了。
- 两种不同的loss function。linear SVMs是hinge loss ,bounding-box regressions 是least squares。
- 速度很慢。47s/image(VGG16)
Reference:
https://www.cnblogs.com/zyly/p/9246221.html
https://cloud.tencent.com/developer/news/281788