发表时间:2013
发表作者:(Google)Szegedy C, Toshev A, Erhan D
发表刊物/会议:Advances in Neural Information Processing Systems(NIPS)

本文实现了一种利用DNN来做目标检测的方法。当时,CNN等深度学习在识别上面做的还挺好,但是在目标检测上面没有特别突出的结果。本文中作者把目标检测看做一个回归问题,回归目标窗口(BoundingBox)的位置,寻找一张图片当中目标类别和目标出现的位置。
作者在ImageNet CNN(见下图)基础上构建网络模型。ImageNet CNN共7层,前5层为卷积+Relu层(其中3层包含Max Pooling),后2层为全连接层。本文将ImageNet CNN的最后一层(Softmax Classifer)替换成了Regression Layer。

ImageNet CNN

首先,作者制定了一个基于DNN的回归方法,它的输出是对象Bounding Boxes的二值masks;其次,利用一个简单的Bounding Boxes从这些masks中推理提取出检测对象;最后,在全图以及少数修剪后的大图上进行调整,从而提高定位的精度。下图是基于DNNs进行对象检测的原理图(Figure 1)以及微调步骤图(Figure 2)。

基于DNNs进行对象检测

Regression Layer生成对象的Binary Mask \(DNN(x; \theta)\in \Bbb R^N\),其中$\theta$是模型的参数,\(N\) 是对象的像素总数。由于模型的输出维度固定,因此假设模型所预测的输出大小为$ N=d×d$ 。对于Resized后,符合模型输入的图片,经模型得到的Binary Masks结果包含一个或多个对象,然后规定属于对象中的Binary Mask的值为1,否则为0。
通过最小化每张图片$x$ 的Binary Mask与Ground Truth mask \(m∈[0,1]N\) 差值的 \(L_2\) 范式对模型进行训练,Loss Funciton 如下所示:

\[
min_{\ \theta} \sum_{(x, y) \in \theta} \Vert (Diag(m) + \lambda I)^{1 \over 2} (DNN(x; \theta)-m)\Vert ^2 _2
\]

其中$D$是图片训练集,这些图片包含Bounding Boxed Objects,而图片中的Bounding Boxed Objects被表征为Binary Masks。
从损失函数的形式可以看出,它具有非凸性,则求解最优值将得不到保证。通常,可以利用Varying Weights对Loss Function进行Regularize。对于绝大多数Objects的尺寸相对于整个图片来说比较小,从而使得模型容易将平凡解(指尺寸比较小的Objects)容易被忽略掉。为了避免这个问题,Loss Function利用参数 \(λ∈R^+\) 来调整模型中的权重值,模型的输出若为与Ground Truth Mask对应的非零值,则增加输出的Weight。若所选择的参数 \(λ\) 比较小,则具有Groundtruth value 0的输出上的误差被惩罚的强度将小于Groundtruth value1的误差,因此即使模型输出的Masks属于Objects的强度比较弱,也能促使模型预测其为非零值。在本论文的实现中,作者设计模型的输入是$ 225×225$ 而输出的Binary Mask是 \(d×d\),其中 \(d=24\)。
论文主要对三个具有挑战性的问题进行分析和解决。第一,模型输出的单个Object Mask无法有效地对相互靠近的歧义Objects进行对象检测;第二,由于模型输出大小的限制,所生成的Obinary Mask的尺寸相对于原始图片显得及其小,譬如: $400×400$, \(d=24\),那么每个输出对应到原始图片的单元大小大约为$16×16 $,故无法精确地对对象进行定位,而在原始图片更小的时候,难度将更大;第三,受输入是整张图片的影响,尺寸比较小的Objects对Input Neurons的影响很小,从而使得识别变得困难。

参考:
bolg

最新文章

  1. Jquery对网页高度、宽度的操作
  2. 基于Netbeans的PHPUnit单元测试环境搭建
  3. .net平台下获取高精度时间类
  4. AngularJS快速入门指南07:Http对象
  5. 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
  6. PHP文件操作 之读取目录信息
  7. Problem A+B(Big Integer)
  8. Hbase与hive整合
  9. Sed&awk笔记之sed篇
  10. DNA和纳米(Nano)Fusion技术的发展趋势
  11. 【日报C在23】堆和栈的深入了解
  12. linux中probe函数传递参数的寻找(下)
  13. PAT1118:Birds in Forest
  14. ADO.NET之使用DataSet类更新数据库
  15. 【图论】最短路问题之spfa
  16. Lauterbach TRACE32技巧小集
  17. elk之kibana
  18. mysql、oracle 中按照拼音首字母排序
  19. 2.1_Scikit-learn数据集
  20. 使用redis4.0.1和redis-cluster搭建集群并编写重启shell脚本

热门文章

  1. 华为ENSP命令大全
  2. 【ARM-Linux开发】在win下开发的eclipse+yougatoo+jlink环境搭建
  3. C++之cmath常用库函数一览
  4. php-fpm的参数优化
  5. [LuoguP1074]靶形数独_搜索
  6. Nginx04---实现直播
  7. Java:集合类的数据结构
  8. 【AtCoder】CODE FESTIVAL 2016 qual B
  9. SpringBoot 项目如何在tomcat容器中运行
  10. review代码,需要做些什么???