rcnn学习笔记:Rich feature hierarchies for accurate object detection and semantic segmentation
2016-03-08 07:49
639 查看
Rich feature hierarchies for accurate object
detection and semantic segmentation、
rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对应的物体的bounding-box,然后对于每一个region proposal 都wrap到固定的大小的scale,224*224,对于每一个处理之后的图片,把他都放到CNN上去进行特征提取,得到每个region proposal的feature
map,这些特征用固定长度的特征集合feature vector来表示。最后对于每一个类别,我们都会得到很多的feature vector,然后把这些特征向量直接放到svm现行分类器去判断,当前region所对应的实物是background还是所对应的物体类别,每个region 都会给出所对应的score,因为有些时候并不是说这些region中所包含的实物就一点都不存在,有些包含的多有些包含的少,包含的多少还需要合适的bounding-box,所以我们才会对于每一region给出包含实物类别多少的分数,选出前几个对大数值,然后再用非极大值抑制canny来进行边缘检测,最后就会得到所对应的bounding-box啦,整个架构如下图所示:
这篇paper中作者指出两个在inference的时候的关键点:第一:全部的参数在每种class类别都是共享的。第二点:和其他的方法相比较,我们最后的feature vector的维度都是相对较低的。
还有一个注意的地方:CNN中每层的参数都是如何训练出来的呢?首先:我们在ILSVRC 2012的数据集上进行分类训练,主要模拟的CNN模型是利用AlexNet进行分类,虽然最后的结果精度会有所降低,只是因为有些小小的改变而已,无伤大雅。这个过程是"pre-traing",如下图所示:
然后需要做的就是"fine-runing",主要就是对上面得到的model进行稍微的改动。首先改变了数据集的大小,前面用的数据集是比较大的,主要适用于进行分类,这里我们主要使用的是相对较小的,并且是通过selective search之后的region proposal 作为网络的输入。如果当前region proposal的IOU大于0.5,把他标记为positive,其余的是作为negtive,去训练detection网络。并且对SGD的参数进行的适当的修改。
这个时候,上面的model中训练好了,之后,就需要对每一个region proposal进行特征集合feature vector训练好了,得到了特征就可以对每一个得到的特征输入到SVM进行分类看看这个feature vector所对应的region proposal是需要的物体呢?还是无关的实物(background),排序,canny边界检测之后就得到了我们需要的bounding-box啦.如下所示
总之感觉:r-cnn有点麻烦,他要先过一次classification得到分类的model,继而在得到的model上进行适当的改变又得到了detection的model,最后才开始在detection model cnn上进行边界检测。好麻烦,因为rcnn首先需要在AlexNet上进行分类的训练model,得到AlexNet之后才能进行分类。分类之后在改一下AxlexNet
model 得到detection model,然后在上面利用SVM进行二分类判断当前的region有没有包含我们需要的物体(对结果进行排序,取前面的IOU最大的那几个),在对这些进行canny边缘检测,才可以得到bounding-box。
简单地说:就是r-cnn需要两次进行跑cnn model,第一次得到classification的结果,第二次才能得到bounding-box。但是r-cnn也不是一事无成,人家还是有自己的特点嘛,就提在原来的架构上提出为啥不用CNN来进行特征提取,而是用那些老套的sift,hog呢?当然科研界的大牛还是很厉害的啦,在r-cnn的基础上就提出了fast-rcnn,它解决了rcnn中跑了两次cnn才分别得到classification和bounding-box,牛掰之处在于ROI层的提出,下片再来看看。
detection and semantic segmentation、
rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对应的物体的bounding-box,然后对于每一个region proposal 都wrap到固定的大小的scale,224*224,对于每一个处理之后的图片,把他都放到CNN上去进行特征提取,得到每个region proposal的feature
map,这些特征用固定长度的特征集合feature vector来表示。最后对于每一个类别,我们都会得到很多的feature vector,然后把这些特征向量直接放到svm现行分类器去判断,当前region所对应的实物是background还是所对应的物体类别,每个region 都会给出所对应的score,因为有些时候并不是说这些region中所包含的实物就一点都不存在,有些包含的多有些包含的少,包含的多少还需要合适的bounding-box,所以我们才会对于每一region给出包含实物类别多少的分数,选出前几个对大数值,然后再用非极大值抑制canny来进行边缘检测,最后就会得到所对应的bounding-box啦,整个架构如下图所示:
这篇paper中作者指出两个在inference的时候的关键点:第一:全部的参数在每种class类别都是共享的。第二点:和其他的方法相比较,我们最后的feature vector的维度都是相对较低的。
还有一个注意的地方:CNN中每层的参数都是如何训练出来的呢?首先:我们在ILSVRC 2012的数据集上进行分类训练,主要模拟的CNN模型是利用AlexNet进行分类,虽然最后的结果精度会有所降低,只是因为有些小小的改变而已,无伤大雅。这个过程是"pre-traing",如下图所示:
然后需要做的就是"fine-runing",主要就是对上面得到的model进行稍微的改动。首先改变了数据集的大小,前面用的数据集是比较大的,主要适用于进行分类,这里我们主要使用的是相对较小的,并且是通过selective search之后的region proposal 作为网络的输入。如果当前region proposal的IOU大于0.5,把他标记为positive,其余的是作为negtive,去训练detection网络。并且对SGD的参数进行的适当的修改。
这个时候,上面的model中训练好了,之后,就需要对每一个region proposal进行特征集合feature vector训练好了,得到了特征就可以对每一个得到的特征输入到SVM进行分类看看这个feature vector所对应的region proposal是需要的物体呢?还是无关的实物(background),排序,canny边界检测之后就得到了我们需要的bounding-box啦.如下所示
总之感觉:r-cnn有点麻烦,他要先过一次classification得到分类的model,继而在得到的model上进行适当的改变又得到了detection的model,最后才开始在detection model cnn上进行边界检测。好麻烦,因为rcnn首先需要在AlexNet上进行分类的训练model,得到AlexNet之后才能进行分类。分类之后在改一下AxlexNet
model 得到detection model,然后在上面利用SVM进行二分类判断当前的region有没有包含我们需要的物体(对结果进行排序,取前面的IOU最大的那几个),在对这些进行canny边缘检测,才可以得到bounding-box。
简单地说:就是r-cnn需要两次进行跑cnn model,第一次得到classification的结果,第二次才能得到bounding-box。但是r-cnn也不是一事无成,人家还是有自己的特点嘛,就提在原来的架构上提出为啥不用CNN来进行特征提取,而是用那些老套的sift,hog呢?当然科研界的大牛还是很厉害的啦,在r-cnn的基础上就提出了fast-rcnn,它解决了rcnn中跑了两次cnn才分别得到classification和bounding-box,牛掰之处在于ROI层的提出,下片再来看看。
相关文章推荐
- NSNumber各类型包装转换
- 单例在ObjectiveC中的正确打开方式
- Object-C高级编程读书笔记(1)——Block的基本概念
- Objective-C与Swift中通过字符串获取类的方法对比与实现
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
- 使用C、C++、Objective-C三语言混编时的注意事项
- The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...
- Runtime of Objective-C
- Objective-C Runtime 一小时入门教程(下)
- Objective-C Runtime 一小时入门教程(中)
- Objective-C Runtime 一小时入门教程(上)
- objective-c 等待多个异步函数完成后,再执行某段代码--GCD Group 的使用
- Objective-C利用正则表达式进行搜索时正则关键字的转义
- Objective-C用正则表达式判断字符串是否为手机号、邮箱、身份证号
- 【转】The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...
- Objective-C Runtime 一小时入门教程(下)
- Objective-C页面消失或出现时,判断是pop还是push操作
- Objective-C Runtime 一小时入门教程(中)
- new Object[5]语句是否创建了5个对象
- 关于QObject::connect: Cannot queue arguments of type"..."