2016_Single-image crowd counting via multi-column convolutional neural network

说明

本文是对以下这篇文章的总结及部分翻译。
Zhang Y, Zhou D, Chen S, et al. Single-image crowd counting via multi-column convolutional neural network[C]//IEEE conference on computer vision and pattern recognition. 2016: 589-597.

概括

Zhang等人提出了一个简单但有效的多列卷积神经网络(MCNN)架构映射图像到其人群密度图。该模型通过使用不同大小的接受域的过滤器,每个列CNN学习到的特征能适应人/头的大小变化。

一、Challenges

a) 前景分割在现有的大部分工作中是不可缺少的。然而前景分割本身是一项具有挑战性的任务,不准确的分割会对最终的计数产生不可逆转的不良影响。在我们的任务中,图像的视角可以是任意的。没有关于场景几何或运动的信息,几乎不可能从背景中准确地分割人群。因此,我们必须在不分割前景的情况下估计人群的数量

b) 在我们的任务(或数据集)中,人群的密度和分布差异显著,通常在每张图像中有大量的遮挡。因此,传统的基于检测的方法不能很好地工作在这样的图像和情况。

c) 由于图像中人物的尺度可能有很大的差异,我们需要将不同尺度的特征一起使用,以便准确估计不同图像的人群数量。由于我们没有跟踪特征,而且很难手工制作所有不同尺度的特征,我们不得不求助于能够自动学习有效特征的方法

二、Contributions

a) 我们在这里采用多列架构的原因是很自然的:三列对应不同大小的接受域(大、中、小)的过滤器,因此,由于透视影响或不同的图像分辨率,CNN每一列学习到的特征自适应人/头大小的变化此处,CSRNet做了实验,证明这种多列结构实际上没有效果,详见CSRNet中Introduction。

b) 在我们的MCNN中,我们用一个滤波器大小为1 × 1的卷积层代替了全连通层。因此,我们的模型的输入图像可以是任意大小,以避免失真。该网络的直接输出是对人群密度的估计,从中我们可以推导出总体计数。

c) 收集了一个新的数据集ShanghaiTech dataset。现有的人群计数数据集在视点的变化(UCSD, WorldExpo ’ 10)、人群计数(UCSD)、数据集的规模(UCSD, UCF CC 50)或场景的多样性(UCF CC 50)方面存在局限性,无法在本工作考虑的不同场景中充分测试算法的性能。

ShanghaiTech dataset包含1200张图片,有大约33万个精确标记的头像。就注释头数量而言,它是最大的人群计数数据集。在这个数据集中,没有两张图片是从相同的视角拍摄的。该数据集包括两部分:A部分和B部分。A部分的图片是从网上随机抓取的,大部分都有大量的人。B部分取自海繁华的街道。

三、几何自适应高斯核生成密度图(如何将带有标记的人头的图像转换为密度图)

事实上,每个xi都是3D场景中地面人群密度的一个样本,由于透视失真,与不同样本xi相关联的像素对应于场景中不同大小的区域。因此,为了准确估计人群密度F,我们需要考虑到ground plane和image plane之间的**单应性(homography)**造成的失真。但是,我们通常不知道场景的几何形状。然而,如果我们假设在每个头部周围,人群是均匀分布的,那么头部与其最近的k个邻居之间的平均距离(在图像中)给出了一个合理的几何失真(由透视效果引起的)估计。

因此,我们应该根据图像中每个人头部的大小来确定扩散参数σ。然而,在实际应用中,由于许多情况下的遮挡,几乎不可能准确地得到头部的大小,也很难找到头部大小与密度图之间的潜在关系。有趣的是,我们发现在拥挤的场景中,通常头的大小与相邻两个人中心之间的距离有关。对于拥挤场景的密度图,我们提出了一种折衷方案,即根据每个人与邻居的平均距离自适应地确定每个人的扩散参数。
在这里插入图片描述
对于只包含很少人的数据,并且头部大小相似,我们对所有的人使用固定的扩散参数。

四、Multi-column CNN

在这里插入图片描述
损失函数:
在这里插入图片描述
MCNN训练:

先单独训练每一列直接将最后卷积的特征层映射出密度图,然后将每一列预训练的参数作为整个MCNN的初始化参数,最后再同时训练更新全部参数。

Transfer learning setting:

如果该模型是在一个包含不同大小头部的大型数据集上进行训练,那么该模型可以很容易地适应(或转移)到另一个具有特定规模的人群头部的数据集。如果目标域只包含少量的训练样本,我们可以简单地固定MCNN每列的前几层,只微调最后几层卷积。有文献表明这种域自适应方法效果有限,有更好的方法。

五、实验

Evaluation metric:
在这里插入图片描述
大约来说,MAE表示估计的准确性,MSE表示估计的鲁棒性。

数据增强:

为了增强训练MCNN的训练集,在每幅图像的不同位置裁剪了9个patch,每个patch的大小是原始图像的1/4。所有patch都用来训练MCNN模型。

The effect of pretraining in MCNN:

预训练的网络比没有预训练的网络表现更好。结果表明,由于从随机初始化开始的优化往往会陷入局部极小值,MCNN预处理的必要性。

Single column CNNs vs MCNN:

下图可以看出,无论是MAE还是MSE, MCNN的表现都明显优于单列CNN。这验证了MCNN体系结构的有效性。
在这里插入图片描述
Comparison of different loss functions:

除了将图像映射到它们的密度地图,我们还可以将图像直接映射到图像中的总人头数。以人群数回归的损失函数如下:
在这里插入图片描述
Table 2实验结果表明基于人群计数回归的结果是相当差的。在某种程度上,学习密度图可以保留更多的图像信息,从而提高计数的准确性。
在这里插入图片描述
我们的方法与Zhang等人在Shanghaitech数据集上比较:我们根据人数的增加将测试图像平均分成10组。纵轴上的绝对计数为每组图像的平均人群数。从图中可以看出,我们的方法对于人群数量/密度的大变化更加准确和稳健。
在这里插入图片描述
还有在其他数据集的实验对比。

Evaluation on transfer learning:

对最后两层进行微调可以确保模型的输出适合于目标域,并保持模型的前几层完整,确保从源域的足够数据中学到的好的特征/过滤器将被保留。但如果在目标域内数据不足的情况下对整个网络进行微调,则学习到的模型与只使用目标域内训练数据学习到的模型相似。因此,性能降低到后一种情况下学习的模型的性能。
在这里插入图片描述

参考文献

Zhang Y, Zhou D, Chen S, et al. Single-image crowd counting via multi-column convolutional neural network[C]//IEEE conference on computer vision and pattern recognition. 2016: 589-597.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值