RCNN学习笔记

fine-tuning:把已经训练过的模型应用到新的数据集上,相当于继续训练

例子:

fine-tuning: 先拿CNN在cifar100上训练,然后仅仅修改最后一层softmax的输出节点个数(100改为10),再放到cifar10上训练。

训练过程:

第一步,fine-tuning训练过程:

在CNN神经网络Alexnet的基础上进行训练,我们从原始图片中生成出2000个proposal框,然后将每个框归一化成227*227大小,如果proposal框与GroundTruth的重叠区域IoU大于0.5,那么我们就把这个proposal框标注成物体类别,否则我们就把它当做背景类别,物体类别一共有20种,加上背景最后总共有21种类别,这样,可以生成proposal框的图像分类训练样本集。

然后将Alexnet神经网络softmax分类输出层由1000类变成21类,然后再进行训练,相当于用新的图片分类的样本集在之前训练好的Alexnet神经网络的基础上进行再次训练。

第二步,经过fine-tuning将网络训练好了之后,对于20种物体类别训练出各自的二分类SVM分类器,对于某一类物体,proposal框与这个物体的proposal的重叠区域IoU大于0.3,就将这个物体视为正样本,否则视为负样本,针对这个类别将所有proposal框都给标注好了之后,便进行训练。

训练的时候每个proposal框输入到前面fine-tuning后的Alexnet网络,然后输出一个4096维的特征向量X, 接着这个特征向量作为SVM的输入,训练出这个类别下的SVM分类器的权值W,b,其中W也是4096维的,对于一张图片的训练过程,相当于是把这张图中的2000个proposal框作为训练样本,然后对于这一类进行训练,20个类别就相当于是生成了20个SVM,相当于输入样本是2000*4096的矩阵,2000个样本,每个样本对应4096个特征,训练出的4096*20的SVM分类器参数W矩阵,参数矩阵每一列代表的是每个类别的SVM分类器对应的W向量,应该还有一个1*20的SVM分类器参数b的矩阵

测试过程:

输入一张多目标图像,采用selective search算法提取约2000个proposal框,并把每个proposal框变为227×227的大小,将每个proposal框输入到训练好的Alexnet网络,提取出4096维的特征,2000个proposal框提取完特征后形成2000×4096维特征矩阵,将2000×4096维特征矩阵与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个proposal框是某个物体类别的得分,然后将2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些proposal框,最后20个类别中各自得分最高的一些proposal框,最后用20个回归器对上述20个类别中的一些proposal框进行回归操作,最终得到每个类别的修正后的得分最高的那个proposal框。

非极大值抑制:

非极大值抑制顾名思义就是抑制不是极大值的元素,搜索局部的极大值。

比如定位一个车辆,从下面这张图片中找出n多个可能是车辆的矩形框,每个矩形框有对应的分类概率,我们需要判别哪些矩形框是没用的:

先假设有6个矩形框,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A、B、C、D、E、F。

(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;

(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。

(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。

就这样一直重复,找到所有被保留下来的矩形框。

回归过程如下:

得到了对应类别得分最高的proposal框之后,这个proposal框与ground truth之间还是会有误差,如下图所示,绿色框为ground truth,黄色框为得分最高的proposal 框,绿色框与黄色框的IOU值并不大,所以为了使得最后的目标检测精度变得更高,采用了回归器对proposal框进行校正

校正示意图:(红框是回归校正后的框)

时间: 2024-08-08 13:56:25

RCNN学习笔记的相关文章

RCNN学习笔记(5):faster rcnn

reference link: http://blog.csdn.net/shenxiaolu1984/article/details/51152614 http://blog.csdn.net/xyy19920105/article/details/50817725 思想 从RCNN到fast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内.所有计算没有重复,完全在GPU中完成,大大提高了运行速度.

RCNN学习笔记(8):Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)

[论文信息] <Fully Convolutional Networks for Semantic Segmentation> CVPR 2015 best paper Reference link: http://blog.csdn.net/tangwei2014 http://blog.csdn.net/u010025211/article/details/51209504 概览&主要贡献 提出了一种end-to-end的做semantic segmentation的方法,简称FC

RCNN学习笔记(6):You Only Look Once(YOLO):Unified, Real-Time Object Detection

Reference link: http://blog.csdn.net/tangwei2014 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字:YOLO. 虽然目前版本还有一些硬伤,但是解决了目前基于DL检测中一个大痛点,就是速度问题. 其增强版本GPU中能跑45fps,简化版本155fps. 论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://g

RCNN学习笔记(4):fast rcnn

reference link: http://zhangliliang.com/2015/05/17/paper-note-fast-rcnn/ http://blog.csdn.net/shenxiaolu1984/article/details/51036677 http://blog.csdn.net/qq_26898461/article/details/50906926 论文出处见:http://arxiv.org/abs/1504.08083 项目见:https://github.c

RCNN学习笔记(9):OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

Reference link: http://blog.csdn.net/whiteinblue/article/details/43374195 https://www.zybuluo.com/coolwyj/note/203086#1-classification 本文是纽约大学Yann LeCun团队中Pierre Sermanet ,David Eigen和张翔等在13年撰写的一篇论文,本文改进了Alex-net,并用图像缩放和滑窗方法在test数据集上测试网络:提出了一种图像定位的方法

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------