【59】候选区域


1. 无对象区域

记得滑动窗法吧,使用训练过的分类器
在这些窗口中全部运行一遍,然后运行一个检测器,看看里面是否有车辆,行人和摩托车
现在也可以运行一下卷积算法

这里这个矩形区域(编号1)基本是空的,显然没有什么需要分类的东西
也许算法会在这个矩形上(编号2)运行,知道上面没有什么有趣的东西

这个算法的其中一个缺点是,它在显然没有任何对象的区域浪费时间

2. 候选区域
如果阅读一下对象检测的文献,可能会看到一组概念
所谓的候选区域,这在计算机视觉领域是非常有影响力的概念

Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik提出一种叫做R-CNN的算法
意思是带区域的卷积网络,或者说带区域的CNN
这个算法尝试选出一些区域,在这些区域上运行卷积网络分类器是有意义的

所以这里不再针对每个滑动窗运行检测算法
而是只选择一些窗口,在少数窗口上运行卷积网络分类器

选出候选区域的方法是运行图像分割算法
分割的结果是下边的图像,为了找出可能存在对象的区域
比如说,分割算法在这里得到一个色块

所以可能会选择这样的边界框(编号1),然后在这个色块上运行分类器
就像这个绿色的东西(编号2),在这里找到一个色块
接下来我们还会在那个矩形上(编号2)运行一次分类器,看看有没有东西
在这种情况下,如果在蓝色色块上(编号3)运行分类器,希望能检测出一个行人
如果在青色色块(编号4)上运行算法,也许可以发现一辆车

所以这个细节就是所谓的分割算法
先找出可能2000多个色块,然后在这2000个色块上放置边界框,然后在这2000个色块上运行分类器
这样需要处理的位置可能要少的多
可以减少卷积网络分类器运行时间,比在图像所有位置运行一遍分类器要快

特别是这种情况
现在不仅是在方形区域(编号5)中运行卷积网络
还会在高高瘦瘦(编号6)的区域运行,尝试检测出行人
然后在很宽很胖的区域(编号7)运行,尝试检测出车辆
同时在各种尺度运行分类器
这就是R-CNN或者区域CNN的特色概念

3. Faster R-CNN

基本的R-CNN算法是使用某种算法求出候选区域,然后对每个候选区域运行一下分类器
每个区域会输出一个标签,有没有车子?有没有行人?有没有摩托车?并输出一个边界框
但不会直接信任边界框,它也会输出一个边界框bx,by,bh和bw
这样就能在确实存在对象的区域得到一个精确的边界框
这样比单纯使用图像分割算法给出的色块边界要好
所以它可以得到相当精确的边界框

但现在R-CNN算法的一个缺点是太慢了
所以这些年来有一些对R-CNN算法的改进工作
Ross Girshik提出了Fast R-CNN算法,它基本上是R-CNN算法,不过用卷积实现了滑动窗法
最初的算法是逐一对区域分类的,所以Fast R-CNN用的是滑动窗法的一个卷积实现

这和 深度学习笔记(35) 滑动窗口的卷积实现 中看到的大致相似,这显著提升了R-CNN的速度
事实证明,Fast R-CNN算法的其中一个问题是得到候选区域的聚类步骤仍然非常缓慢

所以另一个研究组,任少卿、何凯明、Ross Girshick和孙剑提出了更快的R-CNN算法(Faster R-CNN)
使用的是卷积神经网络,而不是更传统的分割算法来获得候选区域色块
结果比Fast R-CNN算法快得多
不过大多数Faster R-CNN的算法实现还是比YOLO算法慢很多

候选区域是一个有趣的想法,但这个方法需要两步,首先得到候选区域,然后再分类
相比之下,能够一步做完,类似于YOLO这个算法,是长远而言更有希望的方向

原文地址:https://www.cnblogs.com/lau1997/p/12378407.html