论文解读--用卷积网络基于视觉显著性的方法提高人类检测

《 Using Visual Saliency to Improve Human Detection with Convolutional Networks 》论文解读

论文下载地址:点击打开链接

如果下载链接出现了问题,回复我,我会发一个链接给下载。


一、论文解读

1. 人类检测的困难之处与目前常用的检测方法

检测(即包括人类的检测)在视觉领域是一个比较重要的问题,对于人类的检测主要存在如下几个比较困难的点:

  • 人物的不同姿势
  • 不同的光照条件
  • 人物图像的不同的角度
  • 图像中拥挤的人物以及人物之间的重叠等

给出一个对于上述问题的示例图:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测


目前对于人物检测常用的方法有:

(1) HOG和Haar描述子的特征提取的组合,再用级联进行分类,分类器的选择比如SVM、boosting等。

(2) 采用可变形的部件模型。

以上说的方法均是人工提取的特征,也有通过学习的方式去提取特征进行分类检测的,比如如下特征提取模型(监督学习的和无监督学习的都有):

(3) 受限玻尔兹曼机(RBM)的堆叠网络。

然而,这种深层网络模型的分层的的表示学习,学习的特征并没有图像的语义信息,因此所得到的特征表现并不是那么好。


2. 对于人物检测相关方法的简介

2.1 显著性物体检测

这里主要说几个paper说到的方法。

(1) 通过选取一些特征(比如:颜色,尺度特征等),使用线性组合的方式去检测局部突出的地方。

(2) 通过计算每个不同层面含义的像素的颜色之间像素值来估计视觉显著性。

paper中还提及了一些其他方法,这个我们只要了解一下就好了,有需要可以去看一下原文。

论文中提及到的方法都有其局限:这些方法结合的是人工选取的特征,去得到图像显著性的的映射。人工选取的特征很难达到一个较好的表现,因此在了解这些方法以后,作者提出了他们的idea。


2.2 人物检测

在人物检测的任务中,根据HOG特征进行检测是比较常用的一种方式,其效果成了后边实现模型的一个baseline。paper中说到当前物体检测常用的还是滑动窗口,但是了解过目前检测的人应该知道,像候选窗口生成算法,以及RPN生成检测窗口的方法在fast-rcnn、faster-rcnn的模型中用的飞起来,因此后边介绍完该论文提出的模型之后,如果要实现的话,我们可以进行尝试对这个模型进行改进,看是否能的得到一个不错的表现。

在人物检测这一块,作者还提出了一种解决图像中人物粘合,人物拥挤的方法,即通过使视觉显著性乘一个因子的办法,这个后边在论文模型的部分说到。


2.3 深度卷积神经网络

这个其实没有什么好说的,paper就说卷积神经网络在视觉的大部分问题上取得了比以往好得多的表现,因此论文在实现他们模型的时候也采取的CNNs。接下来就说说paper实现的idea。



3. 论文的idea

3.1 论文提出的模型的概述

论文提出的模型分为两部分:视觉显著性模型+检测模型

(1) 用深度多层的网络结构处理原始图像得到视觉显著性图像,将原始图像乘以视觉显著性图像并乘以一个值为0.8的乘子(后边我会把这一层的结构简写为 MLNet)。下面放模型跑出来的效果图:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

(2) 训练一个检测模型(paper中称为DetectNet),用(1)中处理得到的图像数据喂给这个模型,然后计算损失进行训练(显然这里是监督学习的方式)

后边会介绍这个模型更多的细节,这里先总的概述一下,因为我要一步步的放大图了。。。


3.2 对数据的预处理

(1) paper中使用的数据集是Penn-Fudan Dataset 和 TudBrussels Benchmark Dataset,可能作者嫌这两个数据集中的数据太少,不容易让他们的模型收敛或者为了避免overfit,为了增强模型的稳健型等等,作者对数据集做了数据增强(Data Augmentation)。

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

这里说一下经验之谈,对于用深度学习去完成视觉的一些问题,往往对你的数据集做数据增强能使模型有更好的属性,比如更稳健,有更好的表现等。因此在你在做task的时候要考虑到这一点。另外做数据增强有工具可以使用,这用工具能更有效率,更好的批量的处理你手上的数据集,这里给出一个工具地址给大家:

Data Augmentation:点击打开链接


(2)除了数据增强,作者对所使用的两个数据集中的数据也做了处理,作者怕两个数据集之间的差异带来的变量因素会降低模型的准确度,因此为了统一两个数据集之间的差异,作者把通过MLNet模型处理的图像调整尺度到512×512,然后在继续后边的训练。


3.3 模型结构的介绍

话不多说,直接上图:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

结合概述加上图,应该对这个模型理解的差不多了,接下来说说几个点。

(1) 模型结构

MLNet的结构为(CNN+Encoder),这里边的Encoder的作用是学到图像的视觉显著性的权重,可以更好的生成诗句显著性图像。至于MLNet的具体实现,大家根据自己的task和Dataset,怎么效果好怎么来。

DetectNet部分,作者直接上的GoogLeNet,连训练模型的时候,权重都直接拿的ImageNet的权重进行训练。这一部分就是以GoogLeNet为基础训练了一个FCN。如下给出一张图:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测


(2) 模型训练

从上图可以明显的看到作业是把训练和测试分开来做的,至于为什么这样,paper说这样能提高模型的表现(这个。。。。)。在这个模型中,作者将3810幅图像作为训练集,1252张图像作为验证集,3036张图像作为测试集(1030 images of Penn-Fudan and 2006 images of TUD-Brussels )。

另外作者还说了一些超参数的值,需要的可以去看原文,这里就不提了(感觉paper这里不稳)。


(3) 模型损失函数的计算

损失函数包括两部分:检测的bbox损失 + 分割的pixel损失

检测的损失计算:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

分割的损失计算:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

上述计算中的N表示batch size,式中带有t的表示真实值,带p的表示预测值。

综合两部分损失,对该模型进行训练就好了。paper中顺带提到,使用Adam优化器进行优化。

接下来给出几组训练的结果:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

论文解读--用卷积网络基于视觉显著性的方法提高人类检测


4. 论文的实验结果

在实验中,paper提到一个事,就是当提供同样维度和类型的图像喂给MLNet,整个模型可以得到更好的表现

向来不喜欢看paper实验结果的我,只会简略的看一下结果图,如下:

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

论文解读--用卷积网络基于视觉显著性的方法提高人类检测

论文解读--用卷积网络基于视觉显著性的方法提高人类检测



二、论文心得

从paper提出的模型来看,特别是DetectNet的部分很容易让我想到我比较推崇的一位大牛——KaiMing,他提出的Mask-rcnn的结构和这篇paper提出的DetectNet特别相似。当然这篇paper有个我们可以参考的点:对于粘合在一起的人物和人物出现很多的图像,可以借鉴MLNet进行训练得到视觉显著性的图像,再进行后边的训练或许能得到一个不错的结果。