RCNN(Regions with Convolutional Neural Network Feature)
来源:互联网 发布:网络教育心理学专业 编辑:程序博客网 时间:2024/06/14 13:17
在目标检测评价中,有一个参数定位准确率,即IOU,IOU计算公式如下:
简单来说,IOU就是模型预测的bounding box与标记bounding box的重合率.
通常我们预测的bounding box是无法与标记bounding box完全重合的,例如下面几种情况:
因此可以通过求两个bounding box的重合率即IOU,并设定一个阈值t0,并认为IOU值大于t0的候选框为物体,否则为背景.
模型结构
物体检测系统如下:
物体检测分三步:
(1)对输入图像,提取2000个物体候选框(bounding box),如图中标号2.
(2)使用CNN网络提取每个bounding box的特征向量,特征向量为4096维,如图中标号3.
(3)对于每个bounding box的特征,进行分类,分类算法采用线性SVM,如图中标号4.
R-CNN算法在PASCAL VOC2010上获得了63.7%的mAP,ILSVRC2013,200个类别上,31.4%mAP.
步骤1:提取候选框
文献提取了2000个可能的物体候选框,使用的算法为论文Selective Search for Object Recognition.
简单来说就是,通过将图像分割(文献Efficient GraphBased Image Segmentation)为多个region,并且用合并(grouping)的方法将region聚合成大的region,重复该过程,知道整张图像为一个最大的region,这样就能得到多尺度的region.具体算法如下:
使用Efficient GraphBased Image Segmentation算法分割图像得到多个region.
计算每两个region的相似度.
合并相似度最大的两个region.
计算新合并region与其他region的相似度,合并相似度最大的两个region.
重复上述过程直到整张图片都聚合成一个大的region
使用一种随机的计分方式给每个region打分,按照分数进行ranking,取出top k的子集,就是selective search的结果.
详细原理可以参考:http://blog.csdn.net/csyhhb/article/details/50425114
selective search提取的候选框是大小不同的,而CNN输入图像大小是固定的(本文输入为227 × 227 pixels),因此需要将候选框缩放到227 × 227 pixels.作者提出了两种形变方法:
(1)各向异性缩放
各向异性缩放就是,不管图像是否扭曲,直接将图像缩放到固定大小,如图D所示.
(2)各向同性缩放
文献提出了两种方法.一种是将图像在原图中沿着bounding box进行扩展,如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充,如图B所示.另一种方法是将图像用固定的背景填充,如图C所示.
步骤2:CNN训练
关于CNN网络结构的选取,文献通过对比发现,R-CNN O-Net(VGG16)相比于R-CNN T-Net(Alexnet),mAP从58.5%增加到66%,但是计算时间也多了7倍,因此文献选用的为Alexnet.
预训练CNN
对于CNN,训练数据通常不够,这时候可以用其他任务已经训练好的模型参数,或者其他数据集训练模型,以初始化模型.首先,使用ILSVRC2012分类数据(无bounding box 标记)训练CNN,在ILSVRC2012 分类validation数据上,测试发现,相比文献25,获得了top-1,错误率比高2.2%的效果.
fine tuning CNN
将CNN的最后一层用(N+1)类层替代,N为物体检测的类别,+1的意思是加上一个背景类别,并随机初始化该层,CNN的其他结构不变.例如,对于VOC,N=20,ILSVRC2013,N=200.之后用selective search提取的候选块,处理成CNN的输入大小,对CNN进行fine-tuning,训练采用SGD,学习率0.001.

文献对比了去掉CNN的f6,f7的效果对比,以及有误fine tuning对比,如上表,有第1-3行最后一列知,如果没有fine tuningpool5,f6,f7层的mAP(平均精度)差不多,fine tuning后f6,f7的精度明显提升很多.由此可见,在训练的时候f6,f7层提取到了特定任务的特征.
步骤3:SVM分类
疑问:CNN网络本身就可以对bounding box的物体进行识别分类训练,在训练的时候最后一层softmax就是分类层,为什么还要先用CNN做特征提取(提取fc7层数据),然后再把提取的特征用于训练svm分类器?这个是因为svm训练和cnn训练过程的正负样本定义方式各有不同,导致最后采用CNN softmax输出比采用svm精度还低。CNN训练的时候,容易出现过拟合,因此需要大量的训练数据,而为了得到大量训练数据,在数据标注的时候通常限制条件比较宽松,比如当bounding box只包含部分物体时,我们就将其标注为正样本.;
而SVM是一个正负样本分类器,适用于少样本训练,所以对于训练样本数据的IOU要求比较严格,我们只有当bounding box把整个物体都包含进去了,我们才把它标注为物体类别即正样本,否则为负样本.那么怎样判断正负样本呢,作者测试了IOU阈值各种方案数值0,0.1,0.2,0.3,0.4,0.5,训练发现,IOU阈值为0.3效果最好,因此当IOU值大于0.3时为正样本,小于0.3为负样本,得到正负样本数据后,便可以用于训练SVM。
我们对每个物体类别分别训练一个SVM分类器,因此对于N个物体类别,需要训练N个SVM.而对于每张图像,selective search 得到2000个候选框,输入CNN,为每个侯选框得到一个4096维的向量,因此CNN输出为一个的特征矩阵.对于N个类别的物体,SVM的权重矩阵为(每个SVM权重矩阵为输出为的矩阵).
参考文献:
1.论文:Rich feature hierarchies for accurate object detection and semantic segmentationTech report (v5)
2.http://blog.csdn.net/hjimce/article/details/50187029
3.http://blog.csdn.net/csyhhb/article/details/50425114
4.https://zhuanlan.zhihu.com/p/23006190?refer=xiaoleimlnote
- RCNN(Regions with Convolutional Neural Network Feature)
- ImageNet classification with deep convolutional neural network
- Discriminative unsupervised feature learning with convolutional neural networks
- Convolutional neural network
- convolutional neural network
- Convolutional Neural Network
- 【论文笔记】Image Classification with Deep Convolutional Neural Network
- ImageNet Classification with Deep Convolutional Neural Network解读
- ImageNet Classification with Deep Convolutional Neural Network 翻译
- Computing the Stereo Matching Cost with a Convolutional Neural Network
- A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal regions
- 卷积神经网络 convolutional neural network
- UFLDL Exercise: Convolutional Neural Network
- Tensorflow: Convolutional Neural Network Basic
- cs231n Convolutional Neural Network 笔记
- Introduction to Convolutional Neural Network
- Convolutional neural networks(CNN) (十二) Convolutional Neural Network Theory
- Convolutional neural networks(CNN) (十三) Convolutional Neural Network Exercise
- 第3章 GPU Pipeline Overview
- linux 一些基础操作备忘
- Androidstudio Intent无缘无故跳转白屏
- Python2.7.x安装requests模块
- Networking||POJ1287
- RCNN(Regions with Convolutional Neural Network Feature)
- 红黑树和AVL树的比较
- epoll模型讲解/源码分析
- 基于ajax的三层,实现数据库增删改查基础(五 前端界面其他功能的实现)
- HBase数据库
- 线程的互斥与同步通信
- Bug库____org.hibernate.HibernateException: No Session found for current thread
- 百度地图开发者平台API项目应用
- Android 使用Zxing实现二维码,横切竖屏预览扭曲变开的解决方法