目标检测--Scalable Object Detection using Deep Neural Networks(CVPR 2014)
Scalable Object Detection using Deep Neural Networks
作者: Dumitru Erhan, Christian Szegedy, Alexander Toshev, and Dragomir Anguelov
引用: Erhan, Dumitru, et al. "Scalable object detection using deep neural networks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2014.
引用次数: 181(Google Scholar, by 2016/11/23).
项目地址: https://github.com/google/multibox
1 介绍
这是一篇2014年发表的CVPR会议论文, 几个作者都是Google公司的,文中的检测算法被命名为"DeepMultiBox".首先来看一下本文模型的思路: 本文的目标检测还是采用两步走的策略:
第一步: 在图像上生成候选区域; 以前常用的生成候选区域的方法是穷举法,对图像上所有的位置以及尺度进行穷举,这种计算效率太低,已经遭到废弃,现在陆续出来一些其他的方法,比如论文<论文阅读笔记--Selective Search for Object Recognition>里面提出的Selective Search的方法,利用层次聚类的思想,生成指定数目最可能包含目标的候选区域.同样,本文也是在这一方面做努力,提出了使用CNN来生成候选区域,并且命名为"DeepMultiBox";
第二步: 利用CNN对生成的候选区域进行分类; 生成候选区域后,提取特征,然后利用分类器进行分类从而达到识别的目的,这是一般的思路,没有什么好讲的,本文的重心在第一步.
2 本文模型
2.1 回归模型DeepMultiBox
如何使用CNN来在图像上生成候选区域呢? 本文借鉴了AlexNet网络的结构:

要对这个问题进行建模! 我们这里的目的是想让CNN输出一定数量的bounding boxes(每个box用4个参数表示,分别是此box的左上角的横坐标+纵坐标,右下角的横坐标+纵坐标,对每个坐标值要用图像的宽和高进行归一化),另外还要输出每个box上还要有一个是否包含目标的置信度(值介于0~1之间).这样,如果我们想让CNN输出K=100个bounding boxes,CNN输出层节点的维度要为(K*(4+1)=5*K=500).
2.1.1 DeepMultiBox的训练集构造
训练集是如何构造的? 训练集的输入肯定是每张训练图像上的"maximum center square crop",这个的含义是先计算每张图像的中心点,然后以它为中心从图像上裁剪出来一个最大的正方形,为了满足AlexNet的网络结构,可能每张图像还要resize到220*220大小(这点在原文中的4.2.2中讲述);关键在于输出,这点文中讲的比较隐晦,原文的表述为:"For each image,we generate the same number of square samples such that the total number of samples is about ten million.For each image, the samples are bucketed such that for each of the ratios in the ranges of 0−5%, 5−15%, 15−50%, 50−100%,there is an equal number of samples in which the ratio covered by the bounding boxes is in the given range." 我的理解是,对于训练集中的每个图像,产生固定数量(假设为N)的正方形的区域作为训练集(问题1:为什么要是正方形? 这些区域的大小都是相同的吗?如果相同,如何满足目标多尺度要求?如果不相同,如何选择区域的大小?),这N个区域的选择是有讲究的:它由四份组成,每份中区域向数量相等,而且每份中的区域与图像上GT boxes的重合程度分别是0-5%,5-15%,15-50%,50-100%.每个区域的置信度也没有讲要如何确定,我想应该就是每个区域与GT boxes的重合程度吧!
(问题2: 训练样本是不是这样构造的,还请指教!)
2.1.2 DeepMultiBox的训练
2.2里面讲述了训练集是如何构造的(有可能我理解的不正确,但是文中讲述的也太隐晦了),下面开始训练AlexNet模型.假如回归bounding box的数目K设定为100的话,将有500个参量需要回归,这样AlexNet的输出层节点的数目就要被设置为500(这点文中也没有讲).由于是回归,在CNN后面直接用Softmax可能不行,作者自己定于了目标函数,具体的见原论文.
2.2 CNN分类模型
2.2.1 分类模型的训练集构造
DeepMultiBox在每张图像上回归了K个候选区域,然而这些候选区域到底属于哪一类还不能确定,因此这里需要再训练一个CNN来对这些区域进行分类.
原文中的4.2.1节简短讲述了用于训练CNN分类器的训练样本构造(对于VOC数据集来说的,类别总数目为20):
正样本: 为每个类别构造正样本,如果候选区域和此类的GT boxes之间的Jaccard大于0.5,则此区域被标记成正样本,这样共产生了1千万个正样本,遍布20个类;
负样本: 和正样本构造的方式类似,只是Jaccard要小于0.2才被认定是负样本,这样,总共产生了2千万个负样本;
2.2.2 分类模型的结构
文中貌似没有具体讲述分类模型的结构,只知道用的也是AlexNet,输出层的节点数目肯定改成了21(对于VOC数据集而言),样本集区域的大小是多少不知道!每个样本区域要resize到AlexNet网络输入的指定大小,这点也没看到!
2.3 测试过程
测试的过程在原文的4.2.2节有讲到(假设有N个目标): 给定一张测试图像 --> 裁剪出它的最大正方形区域 --> 将此区域resize到220*220大小 --> 送入DeepMultiBox网络进行回归,得到K个回归boxes以及每个box的置信度分数 --> 利用非最大值抑制的方法将重叠度小于0.5的box去除掉 --> 拥有最高置信度分数的10个区域将被保留 --> 将这些区域送到分类CNN里面进行软分类,输出每个区域的概率值,得到10*(N+1)的概率矩阵 --> 每个区域的置信度分割乘上概率值作为它最终的分数 --> 这些分数用于估计和计算P-R曲线.
(问题3:这个测试的过程我认为最后少了一个对最终分数进行判断的过程,不知道最后是如何确定最终结果的!)
参考文献:
[1]
目标检测--Scalable Object Detection using Deep Neural Networks(CVPR 2014)的更多相关文章
- Scalable Object Detection using Deep Neural Networks译文
原文:https://arxiv.org/abs/1312.2249
- 多尺度目标检测 Multiscale Object Detection
多尺度目标检测 Multiscale Object Detection 我们在输入图像的每个像素上生成多个锚框.这些定位框用于对输入图像的不同区域进行采样.但是,如果锚定框是以图像的每个像素为中心生成 ...
- 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn
模型和方法: 在深度学习求解目标检测问题之前的主流 detection 方法是,DPM(Deformable parts models), 度量与评价: mAP:mean Average Precis ...
- 目标检测 - Tensorflow Object Detection API
一. 找到最好的工具 "工欲善其事,必先利其器",如果你想找一个深度学习框架来解决深度学习问题,TensorFlow 就是你的不二之选,究其原因,也不必过多解释,看过其优雅的代码架 ...
- 吴恩达《深度学习》第四门课(3)目标检测(Object detection)
3.1目标定位 (1)案例1:在构建自动驾驶时,需要定位出照片中的行人.汽车.摩托车和背景,即四个类别.可以设置这样的输出,首先第一个元素pc=1表示有要定位的物体,那么用另外四个输出元素表示定位框的 ...
- 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)
Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...
- 中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 摘要 最先进的目标检测网络依靠区域提出算法 ...
- Object detection with deep learning and OpenCV
目录 Single Shot Detectors for Object Detection Deep learning-based object detection with OpenCV 这篇文 ...
- 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior
[论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...
随机推荐
- ASP:当 request.cookies 发生 Microsoft VBScript 运行时错误 (0x800A000D) 类型不匹配: '[string:
昨天当一个客户告诉我,登录后看不到图片的时候,我还不相信,因为我的浏览器测试发现一切正常. 通过QQ远程协助后,我才发现服务器端真的报错: Microsoft VBScript 运行时错误 (0x80 ...
- 2: Eclipse反编译工具Jad及插件JadClipse配置
Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的.不过因为是控制台运行,所以用起来不太方便.不过幸好有一个eclipse的插件JadClipse ...
- centos服务重启
重启openstack的整个服务openstack-service restart 1. 重启dashboardservice httpd restart service memcached rest ...
- (JAVA保留小数问题,基础)Probability hdu2131
Probability 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2131 Time Limit: 3000/1000 MS (Java/Others) ...
- Spark进阶之路-Standalone模式搭建
Spark进阶之路-Standalone模式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark的集群的准备环境 1>.master节点信息(s101) 2&g ...
- Scala进阶之路-Scala中的枚举用法案例展示
Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这 ...
- CentOS 6.9/7通过yum安装指定版本的MySQL
一.安装CENTOS 6 # wget http://repo.mysql.com/mysql57-community-release-el6.rpm && rpm -ivh mysq ...
- JVM总结(四):JVM类加载机制
这一节我们来总结一下JVM类加载机制.具体目录如下: 类加载的过程 类加载过程概括 说说引用 详解类加载全过程: 加载 验证 准备 解析 初始化 虚拟机把描述类的数据从Class文件加载到内存,并对数 ...
- javascript 面向过程和面向对象
面向过程 思维方式:把解决问题的关注点,放到解决问题的每一个详细步骤上面. 面向对象 思维方式:把解决问题的关注点,放到解决问题需要的一些对象身上. 创建对象: 对象字面量 使用内置构造对象 封装简单 ...
- 解决logstash启动缓慢问题
在部署logstash时,头几次启动时长还可以,最后高达半小时以上启动启动不了,上网查资料说,系统的“熵”过低,导致jruby启动缓慢.需要安装haveged.但是我安装完后还是慢 https://h ...