3-10 候选区域
候选区域( Region proposals (Optional))
滑动窗法方法使用训练过的分类器,在这些窗口中全部运行一遍,然后运行一个检测器,看看里面是否有车辆,行人和摩托车。现在你也可以运行一下卷积算法,这个算法的其中一个缺点是,它在显然没有任何对象的区域浪费时间。
编号1,2的区域显然没有任何感兴趣的东西。
R-CNN 的算法是带区域的卷积网络,或者说带区域的 CNN。这个算法尝试选出一些区域,在这些区域上运行卷积网络分类器是有意义的,所以这里不再针对每个滑动窗运行检测算法,而是只选择一些窗口,在少数窗口上运行卷积网络分类器。
选出候选区域的方法是运行图像分割算法,分割的结果是下边的图像:
在这种情况下,如果在蓝色色块上运行分类器,希望你能检测出一个行人,如果你在青色色块上运行算法,也许你可以发现一辆车。
所以这个细节就是所谓的分割算法,你先找出可能 2000 多个色块,然后在这 2000 个色块上放置边界框,然后在这 2000 个色块上运行分类器,这样需要处理的位置可能要少的多,可以减少卷积网络分类器运行时间,比在图像所有位置运行一遍分类器要快。
这就是 R-CNN 或者区域 CNN 的特色概念,现在看来 R-CNN 算法还是很慢的。所以有一系列的研究工作去改进这个算法,所以基本的 R-CNN 算法是使用某种算法求出候选区域,然后对每个候选区域运行一下分类器,每个区域会输出一个标签。
澄清一下, R-CNN 算法不会直接信任输入的边界框,它也会输出一个边界框${b_x}$,${b_y}$,${b_w}$,${b_h}$,这样得到的边界框比较精确,比单纯使用图像分割算法给出的色块边界要好,所以它可以得到相当精确的边界框。
现在 R-CNN 算法的一个缺点是太慢了,所以这些年来有一些对 R-CNN 算法的改进工作,Ross Girshik 提出了 Fast R-CNN 算法,它基本上是 R-CNN 算法,不过用卷积实现了滑动窗法。最初的算法是逐一对区域分类的,所以 Fast R-CNN 用的是滑动窗法的一个卷积实现。
事实证明, Fast R-CNN 算法的其中一个问题是得到候选区域的聚类步骤仍然非常缓慢,所以另一个研究组, 任少卿( Shaoqing Ren)、 何凯明( Kaiming He)、 Ross Girshick 和孙剑( Jiangxi Sun)提出了更快的 R-CNN 算法(Faster R-CNN),使用的是卷积神经网络,而不是更传统的分割算法来获得候选区域色块,结果比 Fast R-CNN 算法快得多。不过我认为大多数Faster R-CNN 的算法实现还是比 YOLO 算法慢很多。