Object Detection

关键词:Object Detection、Regional Proposal、R-CNN

Object Detection 与Regression的区别

每一张图片中的对象的数量是不一定的,可能有X个,那么输出就是 X * 4 个数字。

Object Detection

在机器学习中,分类和回归是解决所有问题的两种思路。所以Object Detection不是Regression,所以尝试下分类。

在图片中画出一个个的区域,然后输入到CNN的分类器中去进行识别就可以解决Object Detection的问题了。

CNN

问题是:怎么控制这个框画多大呢?

最直接的答案:不控制,随机尝试,画框后,把框中的数据输入到分类器中,进行分类。

也就引出另一个问题:如果使用CNN去画如此多数量的框(Localization),然后去分辨框中事物的类别(Classification),计算成本太高?

Solution:缩小检索范围。

Region Proposals

方案描述:在图片中找到一些整体相似的结构,然后输出所有可能存在目标对象的区域,最后进行分类。运行的速度很快,因为它不关心框中是什么对象,只是有可能是一个对象,就框出来。

Region Proposals

在Region Proposal中,Selective search是很有名的一个算法:

它从像素入手,将颜色或者纹理相近的像素进行合并,然后不断合并范围,然后在这个过程中,不断进行画框。减少了无意义的Localization。

Selective Search

Region Proposals算法排名

讲师说他一般使用EdgeBoxes,因为运算速度很快,一张图片,大概0.3s,Selective Search大概需要10s

算法排名

R-CNN Region Based CNN

1. 用regional proposal的某个算法,从图片中画出N个可能包含对象的框

2. 把这些框裁剪成同样大小

3. 使用CNN进行特征学习

4. 使用SVM进行分类(如果目标只有一个类:猫,那么用一个二分类的SVM就可以,如果是多类,可以用多分类的SVM,或者对每一个目标,训练一个二分类的SVM)

5. 这里还有一个Bbox reg:其实是一个线性回归模型,主要是对裁剪出来的图片进行微调的,见训练步骤Step5.

RNN 图1

R-CNN的实际训练步骤

具体可见下图,以下为个人语言描述:

1. 现在一个预训练好的分类模型(如,基于ImageNet的,因为它有1000个类别)

2. 将最后一个全连接层(分类器)删除掉,然后新增自己的FC层,进行初始化。

3. 将Regional Proposal框中的所有特征都存储起来(问题:太耗存储)

4. 对于这些存储好的特征,使用SVM进行训练(正例:是猫,反例:不是猫)

5. Regional Proposal截取的特征不一定是完美的,所以使用一个线性回归算法,对于第三步中存储的特征进行调整,使用“correction factor”使这些特征,更能凸显我们的训练目标。

Step1
Step2
Step3
Step4

注:PPT有一点问题,倒数第二章图片的标记错误

Step5

你可能感兴趣的:(Object Detection)