R-CNN总结

不总结就没有积累

R-CNN的全称是 Regions with CNN features。它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统的SIFT、SURF的特征。同时,还利用了AlexNet本来的功能:分类,这时所得的分类结果相当于预分类。最后,由于每个Region是有边界的,使用SVM对其进行分类得到一个score,定位每个物体的bounding box。

预处理:

先看一看AlexNet的网络结构

可以看到,它的输入图像是一个224*224*3的3通道的图像,包含有五层的卷积层,两层的全连接层,最后输出是softmax层。

R-CNN开始对图片进行提取region,称为Region proposal,并且使用的是selective search。对每张region图片warp,可以认为是调整图片的大小,但论文上提到的图片的大小是227*227,与AlexNet有一点区别。在图片warp之前,会先扩张bounding box的大小为p=16个像素。我猜这是为了消除图像的边缘效应。

训练:

这里会先做pre-training。Pre-training的好处是可以加快训练的速度,参数可以直接从其他AlexNet迁移过来,也可以重新训练,AlexNet的类别数是1000的。从图中的结构看出,最后输出的特征向量有4096维。

AlexNet的参数训练完之后,就更改它的类别数(论文使用21维,包括20维的类别,和一维的背景)。这时使用有监督训练微调参数(fine tuning),这个fine tuning我认为是由于初始的学习率较小吧,是0.001。有监督训练会涉及到类别的问题(因为这里网络最后的结果还是分类),于是,当region proposal和人工标注的ground truth 的IOU(即交集/并集)大于等于0.5时,把相应的region标记为正的,即有类别的,否则标记为负样例即background。训练的方法使用随机梯度下降的方式,与AlexNet类似,可以参考文献《ImageNet Classification with Deep Convolutional Neural Networks》。

训练的一个batch的大小为128,其中包括38个正样例,和90个负样例。(batch代表批,训练一批又叫1 iteration,所有的批训练了一次成为epoch)。

得到region即bounding box的类别之后,使用SVM训练一个二分类的分类器。算法为每一个类别都训练一个SVM分类器,注意,SVM训练的数据是经过R-CNN提取特征的4096维特征向量。此处SVM标记为负样例的阈值为IOU小于0.3,而正样例直接取ground truth box的region。训练的过程如下图:

测试:

测试的过程相对简单,对每一张图片进行region proposal之后,一般是2000个region proposal,使用R-CNN提取每个region proposal的4096维特征向量。使用SVM分类器进行分类,对得到的每个bounding box(region proposal本身是有边界的)都有一个score,在排序前先把那些IOU低于某个阈值的bounding box去掉。然后再使用非极大值抑制的方法选出最好的bounding box,从而实现定位。

论文中还做了一个对比实验,就是如果只提取特征用于分类,对于最后一个pooling层和两个全连接层fc6、fc7,当没有fine-tuning时,发现三者的分类精度其实差不多,但是如果有fine-tuning时,加入全连接层所提取的特征所得的精度会高很多。

减少定位错误:

这里定位错误使用了一种方法叫做bounding box regression,而且使用的特征就是pooling层提取的特征向量(这里是为什么呢?)。

关于bounding box regression的内容来自

http://blog.csdn.net/u011534057/article/details/51235964,这篇文章里说的很好。

【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation的更多相关文章

  1. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  2. 深度学习论文翻译解析(八):Rich feature hierarchies for accurate object detection and semantic segmentation

    论文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 标题翻译:丰富的特征层次结构 ...

  3. 2 - Rich feature hierarchies for accurate object detection and semantic segmentation(阅读翻译)

    Rich feature hierarchies for accurate object detection and semantic segmentation Ross Girshick Jeff ...

  4. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)

    Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...

  5. 目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Tech report

    目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Te ...

  6. 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)

    论文源址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn 摘要 在PASCAL VOC数据集上,最好的方法的思路是将低级信息与较高层次的上下文信息进 ...

  7. 论文笔记(一)---翻译 Rich feature hierarchies for accurate object detection and semantic segmentation

    论文网址: https://arxiv.org/abs/1311.2524 RCNN利用深度学习进行目标检测. 摘要 可以将ImageNet上的进全图像分类而训练好的大型卷积神经网络用到PASCAL的 ...

  8. R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)论文理解

    论文地址:https://arxiv.org/pdf/1311.2524.pdf 翻译请移步: https://www.cnblogs.com/xiaotongtt/p/6691103.html ht ...

  9. 目标检测论文解读1——Rich feature hierarchies for accurate object detection and semantic segmentation

    背景 在2012 Imagenet LSVRC比赛中,Alexnet以15.3%的top-5 错误率轻松拔得头筹(第二名top-5错误率为26.2%).由此,ConvNet的潜力受到广泛认可,一炮而红 ...

随机推荐

  1. Redis安全与持久化(适合小白阅读)

    前言:Redis的使用越来越重要.以下仅为个人学习的点点记录.仅供参考. 一.简单的redis安全性设置 1. 生产环境的redis最好建议在redis配置文件中设置bind.配置允许指定的ip登陆r ...

  2. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(249,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515。

    解决: Add this to your PATH environment variables: C:\Program Files (x86)\Microsoft Visual Studio 11.0 ...

  3. 【Linux】Ubuntu下C语言访问MySQL数据库入门

    使用的系统是Ubuntu 11.10.数据库是MySQL. MySQL数据库环境配置 首先需要安装MySQL客户端和服务器,命令行安装方式为: sudo apt-get install mysql-s ...

  4. java web 学习笔记 - jsp用的文件上传组件 SmartUpload

    ---恢复内容开始--- 1. SmartUpload 此控件在jsp中被广泛的使用,而FileUpload控件主要是用在框架中 2. 如果想要使用,需要在tomcat的lib目录中,将SmartUp ...

  5. ERwin逻辑模型

    1.自动排序 Format>>Preferences>>Layout Entire Diagram CA ERwin

  6. Exceptions & Errors - 异常与错误

    来源于 Ry’s Objective-C Tutorial - RyPress 一个学习Objective-C基础知识的网站. 个人觉得很棒,所以决定抽时间把章节翻译一下. 本人的英语水平有限,有让大 ...

  7. 前端JavaScript入门——JavaScript变量和操作元素

    变量JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定. 定义变量需要用关键字 ‘var’: var a = 123; var b = 'asd'; //同时定义多个 ...

  8. 04C语言输入输出

    C语言输入输出 输入字符getchar() #include <stdio.h> int main(){ putchar(getchar()); putchar(getchar()); ; ...

  9. Python自学-1-基本概念问题

    C语言适合开发那些追求运行速度.充分发挥硬件性能的程序. Python是用来编写应用程序的高级编程语言. Python提供了 第三方库 & 基础代码库(覆盖了网络.文件.GUI.数据库.文本等 ...

  10. 利用freemarker+SAX解析xml的方式对excel文件字段校验

    利用freemarker对参数进行校验这篇文章主要用到的技术点: 自定义注解的使用反射机制SAX解析xmlFreemarker的运用我们在工作中经常需要上传excel文件,然后在对文件中的字段进行校验 ...