一.R-CNN(具有CNN特征的区域)
![](https://i-blog.csdnimg.cn/blog_migrate/6cb586b78c7a92aba35e3d126f7d2667.png)
1. Extract region proposal,使用selective search(与类别无关)的方法提取2000个候选区域
2.Compute CNN features,使用CNN网络计算每个proposal region的feature map
3.Classify regions,将提取到的feature输入到SVM中进行分类
4.Non-maximum suppression,用于去除掉重复的box
5.Bounding box regression,位置精修,使用回归器精细修正候选框的位置
二.selective search
![](https://i-blog.csdnimg.cn/blog_migrate/0a386ffc611e5fa9378253cac7612c3b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7cf2c35e88fbfbafffee96462296e6c2.png)
主要作用:输入是一幅图像,而输出是图像中目标的具体位置。
主要思路:输入一张图片,首先通过图像分割的方法(代码里使用的是felzenszwalb算法)获得很多小的区域,然后对这些小的区域不断进行合并,一直到无法合并为止。
算法分为如下几个大步:
1.生成原始的区域集R(利用felzenszwalb算法)
2.计算区域集R里每个相邻区域的相似度S={s1,s2,…}
3.找出相似度最高的两个区域,将其合并为新集,添加进R
4.从S中移除所有与第3步中有关的子集
5.计算新集与所有子集的相似度
6.跳至第三步,不断循环,合并,直至S为空(到不能再合并时为止)
三.Compute CNN features
![](https://i-blog.csdnimg.cn/blog_migrate/687e3b77ade97b88d9172c97f0b4d6c3.png)
3.1 Warped region
CNN中包含有全连接层,这就需要输入神经网络的图片有相同的size,但是region proposal都是不同size的,所以需要对每个region都缩放到固定的大小(227*227):
(1)各向异性缩放:不管图片的尺寸,直接resize到固定的大小,图中第D列,这种方法会导致图片发生形变。(精度最高)
(2)各向同性缩放:
主要包括两种方法:
先扩充后裁剪:在原始图片中把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪,如上图第B列所示。
先裁剪后扩充:先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片,如上图第C列所示。
3.2 Training
(1) Pre-training,由于目标检测的数据量相对较少,不足以训练一个好的CNN网络,因此首先使用一个大的数据集(ILSVRC2012数据集)来训练AlexNet,得到一个预训练的分类网络模型。
![](https://i-blog.csdnimg.cn/blog_migrate/9a9c65436209e85fb93dfcb6bd664519.png)
(2) Fine-tuning,然后再使用warped region proposals来微调AlexNet的参数,即微调AlexNet来对region proposal进行分类。需要将原来1000-way的分类层替换成了21-way的分类层(20类物体+背景)。
![](https://i-blog.csdnimg.cn/blog_migrate/9b70012fe4eb99632addaa5e0dbcd6dd.png)
在训练的时候,计算每个region proposal和ground truth 的IoU,对于IoU>0.5的region proposal被视为正样本,否则为负样本(即背景)。在每次迭代的过程中,选取32个正样本和96个负样本组成一个mini-batch。我们使用0.001的学习率和SGD来进行训练。
四.SVM
![](https://i-blog.csdnimg.cn/blog_migrate/0d6f4f1eb4ddd7f5fdb328832cd8e08d.png)
1.主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。
3.SVM要寻找的最优解:每一个可能把数据集正确分开的方向都有一个最优决策面,而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面。
![](https://i-blog.csdnimg.cn/blog_migrate/048861623a1c1d5606c85472eb1e3942.png)
4.1 Training
(1) CNN feature:CNN网络为每个region proposal提取的feature,共2000*4096。
(2) Ground truth labels: 在训练时,会为每个region proposal附上一个label,在SVM分类过程中,当IoU<0.3时,为负样本,然后正样本便是ground-turth box。
五.Non-maximum suppression
![](https://i-blog.csdnimg.cn/blog_migrate/34c6cbea3c6a523e3bebb23c8171d528.png)
在SVM处理后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高,并且抑制那些分数低的窗口。
六.Bounding box regression
![](https://i-blog.csdnimg.cn/blog_migrate/3c884455f42235c74e378468485d4e55.png)
目的:
绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟Ground Truth 更接近, 这样岂不是定位会更准确,Bounding-box regression 就是用来微调这个窗口的。
![](https://i-blog.csdnimg.cn/blog_migrate/2c47c9b665c9144bf3b7c8a3ad529a3d.png)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
![](https://i-blog.csdnimg.cn/blog_migrate/cd1eda8ca2c38cf511fa94aa1dcfaee2.png)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
七.Conclusio
优点:
1.采用CNN网络提取图像特征,提高特征对样本的表示能力
2.用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合的问题这两个思维方法。从人为提取特征转向为用CNN自动提取特征,是用深度解决检测问题的先驱
缺点:
缺点:
1.最大的缺点是对一张图处理的速度很慢,这是由于一张图片中由selective search算法得出的约2k个建议框都需要经过变形处理后由CNN前向网络计算一次特征,其中涵盖了对一张图片中多个重复区域的重复计算,很累赘;
2.在计算2k个建议框的CNN特征时,在硬盘上保留了2K个建议框的Pool5特征,虽然这样做只需要一次CNN前向网络运算,但是耗费了大量磁盘空间。
3.训练时间长,每次都需要计算不同图片中不同建议框CNN特征,无法共享同一张图的CNN特征,训练速度很慢。
3.训练、测试过程很复杂,这些不连续过程必然涉及到特征存储、浪费磁盘空间等问题。