【计算机视觉之五】RCNN/Fast-RCNN/Faster-RCNN

来源:互联网 发布:下载网络视频的软件 编辑:程序博客网 时间:2024/06/01 14:57

本文为课程笔记

问题1:给出一张图,如何用分类做检测,如图所示,其实就是划分一个个分类框。这里写图片描述

小的粉红色框可能对花的打分就会很高,大的框可能对狗的打分就会很高。

Selective search:自底向上(bottom-up segmentation)
这里写图片描述

其理念是通过颜色距离来聚类,形成如图第一张那样子的小方格,每个方格都有一种颜色,最后小方格会结合起来,形成右图这样的区域。

2.1 RCNN

这里写图片描述
如图所示,其实RCNN算法一共五步:
A.为图像训练一个分类模型或者导入一个分类模型
这里写图片描述

B.微调模型
不要1000个类别,使用20个类别+背景,一共21个类别。我们去掉全连接层的最后一层,重新初始化一个可以分21类的模型。

C.提取特征
提取特征,小方框,然后把特征存起来。这个需要的需要资源很大。
这里写图片描述

D.训练SVM分类器
区分每个区域特征,这里相当于把softMax用SVM代替了。

这里写图片描述

E.为每个类别训练一个线性回归分类模型
这里写图片描述

3.Fast-RCNN

怎么更fast呢?
核心思想是:既然2000个forward太麻烦,我能不能先forward一遍,然后在feature层上再做regions proposal。在feature层特征已经抽好了,也就是说这2000个框都共享一个feature层,这样就大大得减轻了计算量了。

在conv5 feature map的时候再把他们分开。
那现在问题来了:warped操作该怎么解决?大家可以看到,图上,我们还在用全连接层的。
因此提出了ROI pooling,他就是feature层的warped操作。它把那些方框什么的都变成7X7或者其他的。

这里写图片描述

Train end-to-end:解决了RCNN重复计算每个区域feature的问题,本质上是提供roi pooling layer,使任意大小的输入都能以固定大小输出。

  1. Faster RCNN

核心思想:不用外部模型,使用CNN直接生成region-proposal。
它把selective search也嵌入到网络中了。

5.总结

RCNN-一开始就把2000个框全部分开了。
Fast-RCNN和Faster-RCNN先forward一遍,然后用roi polling把他们都分开了
这里写图片描述