# 3.10 候选区域（选修）（Region proposals (Optional)）

滑动窗法会对原始图片的每个区域都进行扫描，即使是一些空白的或明显没有目标的区域，这样会降低算法运行效率，耗费时间

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/838a6aeb35865f9cfecac8dc593b565b.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/838a6aeb35865f9cfecac8dc593b565b.png)

**R-CNN**算法，即带区域的卷积网络，或者带区域的**CNN**。这个算法尝试选出一些区域，在少数窗口上运行卷积网络分类器

选出候选区域的方法是运行图像分割算法，找出各个尺度的色块，然后在色块上运行分类器，即首先得到候选区域，然后再分类

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/e78e4465af892d0965e2b0863263ef8c.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/e78e4465af892d0965e2b0863263ef8c.png)

**R-CNN**算法很慢，基本的**R-CNN**算法是使用某种算法求出候选区域，然后对每个候选区域运行一下分类器，每个区域会输出一个标签，有没有车子、行人、摩托车？并输出一个边界框，就能在确实存在对象的区域得到一个精确的边界框

**R-CNN**算法不会直接信任输入的边界框，也会输出一个边界框$$b\_{x}$$，$$b\_{y}$$，$$b\_{h}$$和$$b\_{w}$$，这样得到的边界框比较精确，比单纯使用图像分割算法给出的色块边界要好

**Fast R-CNN**算法基本上是**R-CNN**算法，最初的算法是逐一对区域分类，快速**R-CNN**用的是滑动窗法的一个卷积实现，和**3.4 卷积的滑动窗口实现**的相似，显著提升了**R-CNN**的速度，问题是得到候选区域的聚类步骤仍然非常缓慢

更快的**R-CNN**算法（**Faster R-CNN**），使用的是卷积神经网络，而不是更传统的分割算法来获得候选区域色块，比**Fast R-CNN**算法快得多

[![](https://github.com/fengdu78/deeplearning_ai_books/raw/master/images/e6ed1aa3263107d4e189dd75adc060b4.png)](https://github.com/fengdu78/deeplearning_ai_books/blob/master/images/e6ed1aa3263107d4e189dd75adc060b4.png)

不过大多数更快**R-CNN**的算法实现还是比**YOLO**算法慢很多
