论文笔记《Spatial Memory for Context Reasoning in Object Detection》
好久不写论文笔记了,不是没看,而是很少看到好的或者说值得记的了,今天被xinlei这篇paper炸了出来,这篇被据老大说xinlei自称idea of the year,所以看的时候还是很认真的,然后最后确实也发现了不少干货。
一、introduction
这篇文章主要还是解决detection中如何有效的利用context信息的问题,这里作者提出了有两种context信息:1、image-level的信息,也就是当前场景的信息,例如一张床出现在卧室里面,一个篮球出现在篮球场里面,都是极其合理的 2、obeject-object relationship,例如一个人手上拿着一个球,比一个人手上拿着一辆车还是要合理很多很多的。。
首先传统的faster rcnn的pipeline中几乎没有利用过任何的context信息,作者提出特别实在NMS的时候,暴力去除掉那些候选框并不是一个好主意,因此提出来spatial memory network来解决这个问题。这个方法的核心就是,当你在图片中检测到车,记住它,然后在下次迭代的时候作为先验知识会帮助下一次的检测得到一些之前漏检的结果。
二、insight&&contribution
具体的内容其实还是要看paper,文章太长了然后mac截图好麻烦,记几点关键的吧。
1.首先将在图片中的检测物体的行为model成一个公式

这些推导当然都是合理的,不过其实一般DL的论文,怎么解释都有道理。。
2.下图式整个算法的pipeline,灰色的是原来的faster rcnn的步骤,只不过把conv5的feature换成了m_conv5的feature,并且在每次迭代的时候,通过memory S得到更好的detection结果,然后再根据新的结果更新S,如此迭代优化。

这里为决定memory S的选择也是比较合理的,如下图所示:

细节就不说了,主要是融合了conv5_3的feature以及softmax的的score,前者具有spatial的fearure,后者更多的是semantic的信息。
3.最后一个比较合理的地方就是训练的一个关键了,很多时候你有一个很好的idea,最后的结果不好,未必是你的idea不好,而是有些地方没有处理好。
如下图所示,一开始训练的时候并不收敛,作者经过实验和推导发现了问题所在,那就是memory和detection的在bp的时候是有contract的,我们希望第一次之后的迭代是不会检测到前面的物体的,所以网络会不停的接受矛盾的signal,一个希望它尽量检测一切物体,一个希望不要检测太多,这样的矛盾是的detecor的更新是不合理的,所以最后作者发现,第一次没有memory的时候更新detector M,后面的迭代就不BP了。

三、conclusion
让我最喜欢的是两点,一个是context信息的object-obejct的阐述,还有一个是训练的时候bp的细节,到了这个份上,这个工作到底work不work对于我来说已经不是关键了。。。。
论文笔记《Spatial Memory for Context Reasoning in Object Detection》的更多相关文章
- 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记
论文题目:<Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition> 论文作者:Qibin ...
- [place recognition]NetVLAD: CNN architecture for weakly supervised place recognition 论文翻译及解析(转)
https://blog.csdn.net/qq_32417287/article/details/80102466 abstract introduction method overview Dee ...
- 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...
- 论文笔记——Rethinking the Inception Architecture for Computer Vision
1. 论文思想 factorized convolutions and aggressive regularization. 本文给出了一些网络设计的技巧. 2. 结果 用5G的计算量和25M的参数. ...
- 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells
Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...
- 论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware 2019-03-19 16:13:18 Pape ...
- 论文笔记:DARTS: Differentiable Architecture Search
DARTS: Differentiable Architecture Search 2019-03-19 10:04:26accepted by ICLR 2019 Paper:https://arx ...
- 论文笔记:Progressive Neural Architecture Search
Progressive Neural Architecture Search 2019-03-18 20:28:13 Paper:http://openaccess.thecvf.com/conten ...
- 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation
Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...
- 论文笔记系列-DARTS: Differentiable Architecture Search
Summary 我的理解就是原本节点和节点之间操作是离散的,因为就是从若干个操作中选择某一个,而作者试图使用softmax和relaxation(松弛化)将操作连续化,所以模型结构搜索的任务就转变成了 ...
随机推荐
- 【Hive二】 Hive基本使用
Hive基本使用 创建数据库 创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db create database 库名; 避免要创建的数据库已经存在错 ...
- AB PLC 编程之状态机
AB的程序设计和西门子有点PLC不大一样,在AB中没有RS指令,所以主要用move指令来作步进.今天我们就用Move指令写个AB的程序,和西门子比,有哪些不同. 控制任务 很简单的一个状态机.初始步为 ...
- jmeter 插件安装
1.下载Plugins Manager插件 打开下载插件地址:https://jmeter-plugins.org/ 2.将下载的plugins-manager.jar包复制到Jmeter安装目录,l ...
- makefile = 与 := 的区别
“=” make会将整个makefile展开后,再决定变量的值.也就是说,变量的值将会是整个makefile中最后被指定的值.看例子: x = foo y = $(x) bar ...
- Go语言中的UDP应用
Go语言中的UDP应用 Go语言中使用UDP是很方便的,net包提供了UDP和TCP的功能,这里使用UDP做了一个UDP广播,然后接收各个设备的返回信息.实现起来很快,总体感觉比使用C#中的UDP更优 ...
- python2.7入门---网络编程(socket)
Python 提供了两个级别访问的网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别 ...
- 初步学习pg_control文件之十一
接前文 初步学习pg_control文件之十,再看这个 XLogRecPtr prevCheckPoint; /* previous check point record ptr */ 发生了che ...
- iOS笔记058 - IOS之多线程
IOS开发中多线程 主线程 一个iOS程序运行后,默认会开启1条线程,称为"主线程"或"UI线程" 作用 显示和刷新界面 处理UI事件(点击.滚动.拖拽等) 注 ...
- Python-学习-import语句导入模块
简单的学习一下调用外部的模块文件. 在Python中,模块是一种组织形式,它将彼此有关系的Pyrhon 代码组织到一个个独立的文件当中,模块可以包含可执行代码,函数,和类或者是这些东西的组合. 当我们 ...
- Appium iOS万能的定位方式--Predicate(iOSNsPredicate)
所谓Predicate定位即Java-Client -5.0.版本以及Appium-Python-Client 0.31版本更新后增加的新的定位方式: 举个例子: JAVA代码: //输入账号和密码 ...