一般物体检测--Binarized Normed Gradients for Objectness Estimation at 300fps
转自:一般物体检测--Binarized Normed Gradients for Objectness Estimation at 300fps - 姜文晖的博客 - 博客频道 - CSDN.NET
前一段时间很多人在网上传程明明在CVPR14年上即将发表的Objectness文章,Project Page在这里,和这里。最近,正好想用一般物体检测做点事情,上周也在实验室做了一个这个方面的报告,今天用文字总结一下。 网上已经有一些评论和分享讨论作者分享的代码如何在不同机器和vs版本上进行配置的帖子了,大家可以看这里和这里。
所谓一般物体(class-independent object, Generic objects),或者Objectness,顾名思义,就是与类别无关的一切物体。对于行人检测这样的经典问题,我们的目标是在图像中判断哪些位置出现了人------人就是一种物体。在更难的问题中,比如VOC和ImageNet的竞赛中,问题变得更难了-----不仅需要参赛者标注出图片中出现了哪些物体,而且得标出物体出现在哪些位置。顺便插一句,还有更难的问题------训练样本中只给出图片,并告诉你图片中出现了哪些东西(这里的东西不仅仅是指物体啦,还可以是蓝天白云),但是不告诉你这些东西出现在哪,要求大家在测试图像中不仅给出测试图像的label,而且标注出这些东西出现在哪。这个问题在南京大学周志华教授的一系列多示例多标签学习的问题中得到研究,大家有兴趣可以去看看。
当然言归正传,我们现在要讨论的问题属于前两类,就是要检测的东西都是物体。以行人检测为例,传统的方法就是sliding windows,但是对于一幅NXN的图像来说,可能的sub-windows有N^4的数量级之多。这样对于一个实时的行人检测系统来说,我们只好选择弱特征(为快速计算,如HOG),以及弱的分类器(也是为了计算快速,如SVM)。如果我们能够利用人是“物体”这种先验知识,快速地从N^4个候选的sub-windows中过滤掉绝大部分,而选择出10^3数量级的可能是物体的sub-windows,那就太好了,我们就能用一些稍微复杂的特征和分类器用在这10^3个候选windows上过滤就可以了。对于这种要求实时的系统来说,这第一步,就是找出10^3数量级的sub-windows,一定要快速才行。(当然对于某些只是要离线过程中处理的情况下,这一步要求可以稍微降低一些。哪些场合是离线处理的,以后时机成熟了我会再说。)以往的selective search的方法,速度上也需要1-2秒。而Cheng的这项工作使速度能达到300fps。
“物体”的最大特点就是有Well-defined closed boundary,而背景则是杂乱无章的。而文章中最主要的发现则是,在梯度空间图(normed gradient space)上,无论物体是长的还是宽的,只要归一化到一个相同的尺度上(例如8*8),它们的就变得十分有共性了,这时用SVM分类器就能把物体和非物体区分出来。所以作者采用的特征就是简单的像素梯度的幅值(norm of gradient),并且只选择36种不同的size(比如8*8,16*16,32*64等),而分类器则是采用cascaded SVM。级联的SVM中第一级SVM对所有的候选窗口进行粗过滤,第二级SVM,则是对每一个size的窗口分别设计(也就是设计了36个不同的SVM),这也比较合理,因为不同的size会是物体的概率是不一样的,正方形的窗口就更可能是物体,而8*256这种长条形的窗口就不太可能是。训练样本是直接用VOC的training set的ground truth,而负样本是每个training set image中随机采100个。如果这36种size中,某个size的正样本数少于50个,这个size就直接被忽略。为了获取不同size的候选框,作者采样首先对原始图像进行不同尺度的resize,然后用训练好的SVM在resize后的每个8*8的模板上进行卷积,达到效果。(以200*200的图像为例,如要检测每个32*32的窗口大小是否会是物体,一般的做法就是先算整个图的梯度,然后隔点取32*32大小的框,再把框中的子图归一化到8*8的大小,最后送到cascaded SVM当中看得分。而作者的做法则是先把图像resize到50*50,然后计算梯度,然后再逐点取8*8大小的框,送到cascaded SVM当中看得分。这两步骤效果是差不多的,只是计算梯度的尺度不一样,但是后者只用做一次resize)。
本来说到这里,大家就以为要做完了,但是作者最重要的部分就是做速度上的优化。这是通过二值表示的优化完成的。SVM的分类器无非是y=w·x,这里w和x都是64维的向量。作者首先将w用一组基来表示(这组基一共Nw个,Nw应小于64,作者在程序中取了2。这个Nw是很重要的,直接减少计算量。感谢Yi Jun师兄在组会上的提醒),这组基中每个向量的64维都只由0和1来表达。至于x,normed gradient中每个像素的梯度是0-255的值,在计算机中是用一个byte来表示的,作者做了“二值化”,仅由这个byte的头Ng位来代替(这样产生Ng个二值化的图)。我们假设Ng=1,就是最典型的二值化操作。这样做,y=w·x的大部分计算都是位运算,只有Nw次浮点/整型的乘法和Nw·Ng次浮点/整型加法。还有一个优点就是遍历图像中每一个8*8的框的时候,也可以用位操作做滑动,而不用每次都遍历64个值。我讲的比较粗糙,具体点的大家可以看下面两个截图:
这里面优化的部分应该是最重要的,motivation倒不是很难(鄙人无眼光的看法,诸位莫喷)。model本身也许大家会疑问为什么是8*8之类的参数,我更觉得这些参数有些是为了优化而故意这么设计的。年初老万和我说Objectness代替sliding windows会是大趋势了,当时我还很迷糊,不确定一般物体检测会有多靠谱,现在等我反应过来的时候,这个方向很快就已经做到又快又准了。哎,我还是一个没眼光看长远的人。
还要提一下,作者的准确的度量是用了VOC的检测的准则:intersection/union超过50%就算是框对了。其实这个条件还算比较宽松的-----对VOC的检测问题来说,这个指标达到50%确实可以检测的准确性是八九不离十的了,但是objectness只是用于检测的第一步,只有50%的intersection/union实在是就有点说不过去了(大家看看效果便知),这多少对后面的recognition有点影响。所以,别看这96.2%的准确性就觉得这个方向没啥做的了,其实光从准确性的方面来说,就还有蛮大的上升空间的,更别提如何把候选的regions降低到1000以下了(我好像又和上一段话自相矛盾了,哈哈)。
一般物体检测--Binarized Normed Gradients for Objectness Estimation at 300fps相关推荐
- BING: Binarized Normed Gradients for Objectness Estimation at 300fps
BING: Binarized Normed Gradients for Objectness Estimation at 300fps 基于二值化赋范梯度特征的一般对象估计 摘要: 训练通用对象 ...
- 物体检测中的Objectness是什么?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自AI公园 作者:Nathan Zhao 编译:ronghu ...
- 理解物体检测中的Objectness
本文转自AI公园. 作者:Nathan Zhao 编译:ronghuaiyang 导读 在本文中,我们将讨论目标检测模型和Objectness的基础知识. 什么是物体检测模型? 物体检测模型本质上,正 ...
- 物体检测--HOG特征
有些长,转过来有时间看 一.理论 1.HOG特征描述子的定义: locally normalised histogram of gradient orientation in dense overla ...
- 显著性物体检测与分割
http://valse.mmcheng.net/salobj/ 显著性物体检测与分割 活动时间:2014年9月4日星期4,北京时间20:00开始. 主持人:山世光 主讲人:卢湖川,李寅,程明明,等 ...
- 清华优博论文丨物体检测中的特征构建与模型优化
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘 要:本文针对物体检测中的环境变化多样.物体尺度变化不一.搜索空 ...
- 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。
1.背景差分法: 它的基本思想是将输入图像与背景模型进行比较,通过判定灰度等特征的变化,或用直方图等统计信息的变化来分割运动目标. 首先建立好背景模型,存储背景图像.当当前帧与背景图像相减大于一定的阈 ...
- 达摩院实现自动驾驶核心技术突破,达摩院首次实现3D物体检测精度与速度的兼得
阿里巴巴达摩院在自动驾驶3D物体检测领域取得了新突破!达摩院近期一篇论文入选计算机视觉顶会CVPR 2020,该论文提出了一个通用.高性能的自动驾驶检测器,首次实现3D物体检测精度与速度的兼得,有效提 ...
- 63万张!旷视发布最大物体检测数据集Objects365 | 技术头条
编辑 | 琥珀 来源 | AI科技大本营(id:rgznai100) 昨日,在旷视科技联合北京智源人工智能研究院举办的发布会上,旷视研究院发布了物体检测数据集 Objects365,包含 63 万张图 ...
- 中科院自动化所博士带你入门CV物体检测算法
物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...
最新文章
- java文件下载大小限制,完整PDF
- 通用无线设备对码软件_珞光全新发布国产通用软件无线电平台 :USRP-LW N310!珞光品牌已实现国产替代...
- vue脚手架v-cli,第一个vue程序
- java 输入16进制_尝试使用十六进制输入来使用小端和大端
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
- Java中JTextField.getText() 和 JPassword.getPassword() 的区别
- 第十五章:使用SpringBoot validator让数据更真实
- 苹果mac视频音频格式转换软件:Permute
- delegate vs. event(转自LTP.NET知识库)
- 信捷无线触摸屏与plc实现多从站MODBUS通讯
- Kafka报错:Couldn't find leaders for Set
- python语言常用的中文分词第三方库是_基于boost使用Python调用NLPIR(ICTCLAS2013)中文分词组件...
- 实朴检测深交所上市:市值44亿 应收账款逾期6587万
- 执法仪接入GB28181平台实现实时监控、对讲、报警、定位等管理
- 2021保研经验——控制AI(北航AI)
- python英文词云代码_Python 词云 【中/英】小白简单入门教程
- VUE超超超!入门介绍
- 京东最爱考的前端面试题,html5移动web开发实战
- 证明一个数能被3整除,当且仅当它的各位数的和能被3整除!
- void *作为函数形参类型