写在前面:

本系列笔记主要记录本人在阅读过程中的收获,尽量详细到实现层次,水平有限,欢迎留言指出问题~


这篇文章被认为是深度学习应用于目标检测的开山之作,自然是要好好读一下的,由于文章是前些日子读的,所以仅凭记忆把印象深刻的地方记录一下,许多地方是自己理解,有错误请指出。

1. 算法的流程

  

这篇文章干了一件什么事情呢,就是用selective search生成一堆建议区域,然后把这些建议区域根据一定的准则做成分类训练集,微调预训练的CNN,C然后用CNN提取的特征和对应的类别训练SVM二分类器,最后经过非极大值抑制过滤后得到的结果对应的region proposal就作为检测边框。预测的时候,要对每一个region proposal执行一次CNN+SVM。

我理解的是,CNN(或者说CNN+SVM)在RCNN中仍然只是一个分类模型,对selective search生成的region proposals进行分类,经过后处理,留下的被判定为目标的region proposal就作为最后的检测结果。

2. 训练细节

2.1 生成候选区域

作者使用selective search算法生成大约2k个就建议区域,这是一个传统算法,组合多种策略和人工特征可以直接给出合乎条件的目标区域。这里的问题是,生成的边框尺寸大小不一,背景多目标少,很多只能框住目标的一部分,这些对后面的训练策略有影响。

2.2 微调预训练的CNN

作者先在公开数据集上预训练了一个CNN的分类模型,然后在当前任务上微调。具体的,上一步生成一堆建议区域有很多只框住了目标的一部分,作者把IoU>0.5的认定为正样本,其余的为负样本,于是形成了一个分类的训练集,以此来微调模型。

这里面还有个细节,上一步生成的一堆建议区域,并不能直接送入CNN,因为当时的CNN分类模型都是若干卷积层+全连接层这样的结构,因为全连接层的缘故,模型的输入必须是某个固定的尺寸,因此哪些大小不一的region proposals必须先warp到fixed size。具体warp方法不展开讲了。

2.3 训练SVM分类器

同样需要形成一个训练集(X,Y),这次标准不一样,将IoU=1的认定为正样本(y=1),IoU<0.3的认定为负样本(y=0)。具体的,IoU是region proposal与ground  truth的交并比,而训练集的X则是该region proposal经过CNN encode得到的特征向量。

2.4 过滤

使用非极大值抑制去除重复检测

3. 重要问题

为什么不直接用CNN模型进行分类,而要使用SVM呢?

为什么训练CNN和SVM时候,正负例判定标准IoU阈值设置不同呢?

答:这两个问题是相关的,我认为本质上是因为这是一个多阶段的模型,很多地方需要trade off,第一步生成的建议区域是正例少负例多,构建训练集的时候就容易不平衡,因此需要放宽正例的条件,但是要想定位准确,就需要正例更精准,这就是矛盾所在,因此有了不同的IoU阈值和引入SVM。具体的,由于算法最后给出的检测结果就是经过筛选的region proposal,那么肯定希望它跟ground truth更吻合,也就是IoU接近于1,那么自然的要把哪些容易产生干扰的样本剔除掉为好。但训练CNN需要大量样本,在当前任务下,负例多正例少,一次调高IoU阈值为0.5,增加正例数量,防止过拟合;而训练SVM需要样本数量少,因为IoU阈值设置严格,以提高定位准确率。

4. 缺陷

4.1 对每一个region proposal都要过一遍CNN,重复计算严重拖累的模型的效率

直观的想,解决这个问题就是要共享计算,也就是要先对图片进行一次整体卷积,然后在feature map上选取region proposal,但是这时的region proposal的尺寸又是大小不一的了,不满足全连接层的输入要求。。针对这个问题,提出了SPP-Net和Fast-RCNN,后面陆续展开讲。

4.2 通过selective search生成region proposals。

这部分是不能通过学习优化的,然后通过对这些分类代替回归定位,感觉潜力有限。是否回归生成region proposals更优,还不太确定,等读到后面的论文再说。

4.3 多阶段的模型,尤其是加入不能学习的算法,造成一种脱节感,限制了深度学习模型的威力。

RCNN论文细节的更多相关文章

  1. [原创]Faster R-CNN论文翻译

    Faster R-CNN论文翻译   Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...

  2. R-CNN论文翻译

    R-CNN论文翻译 Rich feature hierarchies for accurate object detection and semantic segmentation 用于精确物体定位和 ...

  3. [Network Architecture]Mask R-CNN论文解析(转)

    前言 最近有一个idea需要去验证,比较忙,看完Mask R-CNN论文了,最近会去研究Mask R-CNN的代码,论文解析转载网上的两篇博客 技术挖掘者 remanented 文章1 论文题目:Ma ...

  4. k[原创]Faster R-CNN论文翻译

    物体检测论文翻译系列: 建议从前往后看,这些论文之间具有明显的延续性和递进性. R-CNN SPP-net Fast R-CNN Faster R-CNN Faster R-CNN论文翻译   原文地 ...

  5. Mesh R-CNN 论文翻译(实验部分)

    本文为 Mesh R-CNN 论文翻译(原理部分)的后续.Mesh R-CNN 原论文. 4 实验   我们在ShapeNet上对网格预测分支进行基准测试,并与最先进的方法相比较.然后,我们在野生的有 ...

  6. CVPR2019 | Mask Scoring R-CNN 论文解读

    Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...

  7. Faster R-CNN论文详解 - CSDN博客

    废话不多说,上车吧,少年 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks ...

  8. 【目标检测】Cascade R-CNN 论文解析

    目录 0. 论文链接 1. 概述 2. 网络结构的合理性 3. 网络结构 4. 参考链接 @ 0. 论文链接 Cascade R-CNN 1. 概述   这是CVPR 2018的一篇文章,这篇文章也为 ...

  9. Make R-CNN论文学习

    在论文是在Faster R-CNN的基础上的改进 ,实现的效果有: 目标检测:能够在输入图像中绘制出目标的边界框,预测目标位置 目标分类:判别出该划定边界的目标的类别是什么,如人.车.猫和狗等类别 像 ...

随机推荐

  1. 记事本:一些js案例以及DOM和BOM

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 分布式系列十五: MongoDB数据库

    MongoDB 是基于分布式文件存储的数据库. 开发语言是C++. 具有高性能,可扩展的特点. 是NoSql中最像关系数据库的. 什么是NoSql NoSQL 是 Not only SQL 的缩写. ...

  3. day16——函数式编程和内置函数

    编程的方法论 面向过程:找到问题的 函数式:不可变.不用变量保存状态.不修改变量 面向对象: 高阶函数: 满足俩个特性任意一个即为高阶函数 1.函数的传入参数是一个函数名 2.函数的返回值是一个函数名 ...

  4. linux中gcc和g++的区别

    1.两者都是编译器 2.gcc编译c语言:g++既可以编译c语言,也可以编译c++语言 3.gcc不能自动链接库文件,一般用g++来链接库文件,非要用gcc的话,一般使用gcc -lstdc++命令 ...

  5. hbase学习一 shell命令操作

    基本操作: #命名空间级别: #列出所有命名空间 hbase> list_namespace #新建命名空间 hbase> create_namespace 'ns1' #删除命名空间 h ...

  6. electron Windows和mac 的菜单栏隐藏

    1.Windows隐藏方法 const {electron,Menu,debug} = require('electron'); Menu.setApplicationMenu(null) 2.mac ...

  7. 实践笔记_J2EE_Server_Tomcat_tomcat域名绑定_1_单域名绑定

                                                                      Tomcat域名绑定(1)单域名绑定 1. 测试环境说明 名称 版本 ...

  8. SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件

    参考:https://www.cnblogs.com/bjlhx/p/8325374.html 1.需要有一个默认的配置文件,然后一个正式的配置文件,一个测试的配置文件.激活配置项,默认的配置文件ap ...

  9. 基于.net的分布式系统限流组件(限流算法:令牌算法和漏斗算法)

    转载链接:https://www.cnblogs.com/vveiliang/p/9049393.html 1.令牌桶算法 令牌桶算法是比较常见的限流算法之一,大概描述如下: 1).所有的请求在处理之 ...

  10. CYJian的新春虐题赛

    题解: t1: 算了一下发现乘法也是可以莫比乌斯反演的 然后就直接对原式莫比乌斯反演了 大概加法是$\mu {(i)}*f(i)$ 乘法就是$f(i)^{\mu {(i)}}$ 然后这个算法成功达到$ ...