OHEM论文笔记
目录
引言
Fast R-CNN设计思路
- Fast R-CNN将整张图片和选择性搜索算法提取出来的候选区域作为输入,对整张图片利用卷积+池化的组合提取特征,产生一个feature map(特征层),结合选择性搜索算法提取出来的候选区域位置,从feature map中选择对应位置的特征(红色框)送到RoI pooling层
- 因为后面的全连接层需要固定大小的输入,所以作者在RoI pooling层对其采用了特殊的处理。即将\(h \times w\)输入划分成固定的输出大小\(H \times W\),这样\(H \times W\)的每个单元格中包含了\(h/H \times w/W\)个元素,对其中的元素进行maxpool,就得到了固定的输出大小\(H \times W\)。
- 将RoI pooling后的输出送入全连接层后在两个子网络分别进行输出和回归。

一、动机
目标检测领域一个经典的问题,难易样本不均衡。
二、现有方案hard negative mining 及其窘境
hard negative mining实现
- 固定模型,去寻找难样本添加到样本集中
- 在上一步中选出的样本集中更新模型
- 重复以上步骤直到满足条件如模型性能不再上升
窘境
固定模型寻找难样本对于目标检测计算量太大,一个图片有约\(2k+\)个候选区域,其次因为难样本RoI与对应的图片关联,没有办法单独保存难RoI到样本集中去,要想学习难样本必须对对应图片再来一次候选区域提取和卷积特征提取,并对不需要再学习的简单样本来一次梯度更新,想想都很麻烦还慢。所以Fast R-CNN中没有用。不过Fast R-CNN采用了一个正负样本1:3的设计。
设计思路
由以上分析可以看出来,这种交替执行寻找难样本的方法在Fast R-CNN中实现是不现实的,如果能在线学习的话,就可以解决掉这个问题。下面是作者的思路

OHEM步骤:
- 提取N张图片的特征,提取RoI
- 对所有的RoI计算loss, 然后选择其中表现最差(\(loss=l_{cls}+l_{reg}\)最大)的B/N个RoI。
- 然后利用选择出来的B/N个RoI更新网络
- 重复2-3步骤
对于第二步,作者说因为卷积特征提取层的参数共享,前向传播计算所有loss的计算量很小。
这里有个注意事项是,因为相邻的RoI很可能拥有相邻的loss,对loss进行选择的时候容易重复选择,所以采用了NMS的方法,将IoU大于0.7的loss低的RoI移除了。
另一个问题是,如果只是简单的将其他没有被选择的RoI的loss置为零,但是仍然会对所有RoI分配空间存储参数并进行反向传播计算,这十分不高效。所以,作者设计了一个新的结构来优化上述结构。

作者设计了一个只进行前向传播的结构(绿色)和一个用来进行反向更新的结构(红色)。红色和绿色的部分网络完全相同且共享权重参数。前向结构用来计算所有RoI的loss,然后从中挑出B/N个loss最大的RoI送到红色的结构中进行反向传播,这样,进行反向传播的就只有B/N个RoI了,从而减少了计算量。作者实验表明,使用这种方法与不使用相比,空间占用差不多,但是快了两倍多。
反向传播
看不懂Fast R-CNN的反向传播,暂时先空着。
实验结果

其中N表示一次采样几张图片,LR是学习率,B是batch_size,bg_lo是Fast R-CNN中正负样本划分的值,[bg_lo, 0,5)被认为是负样本。可以看到网络精度提升了2个百分点。

推理时间慢了一点,但也不是特别多。
OHEM论文笔记的更多相关文章
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型
看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 论文笔记(2):A fast learning algorithm for deep belief nets.
论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...
- 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN
论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...
随机推荐
- PTA笔记 堆栈模拟队列+求前缀表达式的值
基础实验 3-2.5 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Sta ...
- asp获取隐藏域的json 并解析
方法粗糙,适用度适中. var data2 = document.getElementById("hd_data02"); var val = data2.value; var o ...
- Shell常用命令之主机检测(ping)
主机检测命令ping 向网络主机发送ICMP回传请求 常用选项 -A:洪水攻击选项,启用此功能能在短时间之内发送大量的ping包 -b:开启ping网桥模式,默认不允许ping网桥 -c:设置发送多少 ...
- jdk源码Object类解析
一 简介 java.lang.Object,是Java所有类的父类,在你编写一个类的时候,若无指定父类(没有显式extends一个父类),会默认的添加Object为该类的父类. 在JDK 6之前是编译 ...
- python+selenium爬取百度文库不能下载的word文档
有些时候我们需要用到百度文库的某些文章时,却发现需要会员才能下载,很难受,其实我们可以通过爬虫的方式来获取到我们所需要的文本. 工具:python3.7+selenium+任意一款编辑器 前期准备:可 ...
- NLP(十九)首次使用BERT的可视化指导
本文(部分内容)翻译自文章A Visual Guide to Using BERT for the First Time,其作者为Jay Alammar,访问网址为:http://jalammar ...
- 为什么Netflix没有运维岗位?
Netflix 是业界微服务架构的最佳实践者,其基于公有云上的微服务架构设计.持续交付.监控.稳定性保障,都为业界提供了大量可遵从的原则和实践经验. 在运维这个细分领域,Netflix 仍然是最佳实践 ...
- reload重载配置文件的真相
02检查配置文件语法也就是说在重载nginx配置文件之前,不是必须使用nginx -t检查语法 03修改配置文件,新开启端口,比如443,所以需要打开新的监听端口 04使用新配置启动新的worker子 ...
- Linux基础与搭建
1 学习目标 了解Linux的简介与安装 掌握Linux常用的命令 掌握Linux系统上JDK.Mysql.Tomcat的安装 2 Linux简介 2.1 Unix简介 Unix是一个强大的多用户. ...
- Java使用自定义类加载器实现热部署
热部署: 热部署就是在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象.一般情况下,类的加载都是由系统自带的类加载器完成,且对于同一个全限定名的java类,只能被加载一 ...