1.介绍
人群计数是指估计无限制场景的图像中的物体(人、车、细胞等)的数量。人群计数的算法主要分为两大类,早期的计数方法研究聚焦于基于检测的方法,使用一个滑动窗口检测器来检测场景中人群,并统计相应的人数。第二种基于回归的计数方法,主要思想是通过学习一种特征到人群数量的映射。不同于传统的基于检测和回归的方法,对于图像中密集人群区域,利用预测密度图(Density Map)的方法得到了更好的预测结果。这类方法对拥挤的场景实现了高精确度,并保留了关于人的分布的空间信息。
2.相关工作
在计算机视觉中,有很多技术可以解决人群计数问题。这些方法具有不同的网络结构,从网络的不同分支中提取多种特征来处理人的尺度变化。例如,HydraCNN[1]向网络中输入一个金字塔形的图像补丁,以估算数量。HSRNet[2]基于研究中特征尺度处理的两个缺陷,提出两个网络模块SFM和SRM。S-DCNet[3]对特征图进行解码和上采样。
3. 研究方法
人群计数的任务是将输入的图片通过卷积神经网络计算得到估计的数值。研究思路如下:
(图1. 基于卷积神经网络的人群计数设计)
利用GT(ground truth)对应的坐标点生成高斯密度图,对网络进行监督训练,最终生成预测的人群数值。针对这个训练网络的方法,可以看到明显的缺陷是在密度图的生成,基于坐标点生成的密度图忽视了人头大小的问题,导致计数不准确。针对上述问题,我们将近些年的研究类别大致归为一下几类:
(图 2.本文的网络改进分类)
3.1 针对密度图改进
3.1.1 多列网络
MCNN[4]针对固定核提取人头特征的缺陷,将卷积核核改为三个尺度, 这种多列架构,具有三个使用不同内核大小(大,中,小)的分支。采用不同的列来捕获对应于不同接受域的多尺度信息,从而为人群计数带来了较好的性能
1. Switching Convolutional Neural Network for Crowd Counting[5](2017)
该架构包含三个结构互不相同的CNN回归器和一个选择最优回归器的分类器。对于每一张输入图片,首先将其裁剪为互不重叠的9份,每份为原图的1/3长宽。其目的是为了使输入的小图片作为一个选择回归器的最小单位可以拥有单一的密度、规模和视角信息。
三个CNN网络设计R1,R2,R3 和 MCNN 是一样的。每一列都包括4个卷积层和2个池化层,三列的卷积核大小各不相同,
文章利用基于CNN的回归分类法,最大程度地减少计数误差并利用场景内的密度变化来提高密度定位。
2.Adaptive Density Map Generation for Crowd Counting[6](2019)
该文章核心是针对密度图的生成过程进行优化,使得产生更为合理的密度图,以帮助网络训练。文章通过两种方式去动态调整密度图:一是采用RF DM(refine density map)的模块在训练中微调密度图。二是采用自注意力机制的模型从标注的人头点自适应产生密度图。
该框架用一个精炼器对手动事先制作好的密度图去微调,利用自注意力机制通过自适应产生密度图。主要改动是将精炼器网络改成了自适应生成密度图的网络。预先生成K个密度图,然后每个密度图经过自注意力机制网络,生成对应的图像并和对应的按像素相乘,就能够自适应地选择输入图片每个区域使用哪种核,最后进行融合,得到密度图。
但是,多列网络看起来像是几个弱回归变量的简单组合。多列网络难以训练多列网络,因为它需要更多的时间,导致大量信息冗余。由于上述缺点,它激发了许多研究人员探索更简单却有效的单列网络体系结构。
3.1.2 单列网络
1.Scale Aggregation Network for Accurate and Efficient Crowd Counting[7](2018)
该论文同样考虑要提取每个图像的多个尺度的人头信息,但并不采取类似MCNN的多阵列网络结构,其使用了类似于Inception架构的模块,在每个卷积层都同时使用不同大小的卷积核,也就是使用一系列的Inception结构提取不同尺度的特征,最后通过反卷积得到最终的密度图。
2.Learn to Scale: Generating Multipolar Normalized density maps for Crowd Counting[8](2019)
该文章的思路主要模仿人在标记样本的过程, 人群稀疏的区域, 直接在头部用点进行标记; 对于人数比较密集的区域, 人工标记一般会先放大这个区域, 再进行人头标记。
文章依据与回归的方法提出改进,将原图输入生成初始密度图; 然后将密度图s划分为8x8的patch, 并根据密集程度划分得到K groups;并对每一个patch的密度中心进行放缩; 最后将所有的patch 连接成KxK的密度图。
这种学习缩放模块来解决人群计数中的密度变化问题。
3.Perspective-Guided Convolution Networks for Crowd Counting[9] (2019)
在人群计数网络中每张人群图片,可能是近大远小的分布,一般希望同一张图,不同的区域用不同感受野的卷积,通常采用的方法是定义一个固定尺寸核的卷积层,对于不同地方不同的尺寸核,实现改变尺寸的卷积很困难。
因此该论文采用改变尺寸的高斯滤波+fix kernel conv即文章的核心模块来实现对密度图的改进,这个改变核的高斯滤波是基于perspective map来确定的。
4.ADSCNET[10](2020)
目前,基于静态密度图的监督学习框架被广泛使用,即使用高斯核生成密度图作为学习目标,欧几里得距离作为损失函数来优化模型,但是这种框架会因为标注误差影响估计精度,也不能反映出尺度的变化,对此,该论文提出了自适应空洞卷积和自校正监督学习框架。
输入相同的特征,通过标准3×3卷积层得到一张与原图相同大小的单通道的膨胀率图。对特征进行自适应感受野的采样,不同位置的采样的网格大小即膨胀率图对应位置的值,最后对采样值进行加权求和得到新的特征。
和多尺度特征融合和多列网络相比效果要好,计算量更小。
3.2 加注意力机制
3.2.1 空间加注意力机制
1.CANNET[11](2019)
论文把人群计数问题转化为人群密度回归问题,引入了一种新的深层网络结构,它可以自适应地将多层次的上下文信息编码到它产生的特征(scale feature)中,采用添加空间注意力机制(权重)的方式,回归出最终的密度预测图。它可以自适应地利用这些尺度感知特征回归出最终的密度图。
2.HSRnet[2](2020)
• Scale Focus Module (SFM) :增强局部特征的表示能力。通过对信道和空间维度之间丰富的上下文依赖关系进行建模,网络中的不同层次可以关注行人的适当尺度。
• Scale Recalibration Module (SRM): 要重新校准和聚合多尺度的数据,将对应不同阶段的顺序图层的特征标记为对应等级,加以attention生成最终的预测图,显著提高了结构对具有不同尺度变化的复杂场景的适应能力。
3.ASNet[12](2020)
由于人群密度在图片上的变化较大,以数据为驱动网络依赖数据集,很容易在估计时出现误差,为了解决这一问题,文章提出了一个新的网络。网络主要包括两部分:Density Attention Network(DANet) 和Attention Scaling Network(ASNet)。
DANet为ASNet提供了与不同密度水平区域相关的注意力掩膜。ASNet首先生成中间密度图和缩放因子,然后将它们与注意力掩膜相乘,以输出多张基于注意力的不同密度水平的密度图。该网络尤其对于复杂场景具有更好的效果。
3.2.2 空间和通道层次加注意力机制
1.Focus for free[13](2019)
该论文为了提高计数的精确度,将分割、计数和分类三个任务融合,利用分割为计数提供空间注意力,利用分类为计数提供通道注意力。
3.3 其他方式
3.3.1 改进数据集
1. Leveraging unlabeled data for crowd counting by learning to rank[14] (2018)
文中提出一种新方法,在learning-to-rank框架中利用大量可得的无标签人群图像。分析了三种使用排列图像集与标记人群场景的数据集相结合的训练方法,证实了利用大量可用的未标记数据可以提高计数性能。
在Google上通过关键词搜索(keyword searches)和例证查询(query-by-example)得到文中使用的两个数据集。
2. S-DCNet[3](2019)
目标计数任务是一个天然的开集(Open Set)问题,其预测范围是。而训练网络的数据集始终人数是有界。针对这个问题文章将分治策略引入人群计数研究,提出S-DCNet,其从封闭子集上学习,并泛化到开放集合中去:实质也就是将图片的子区域计数划分至先前观察的封闭集合范围内,只学习一个封闭集合,将其推广至开放几何。
通过调整数据集合对计数的限制,使人群计数更加精准。
3.3.2 调整损失函数
1. Learning Spatial Awareness to Improve Crowd Counting[15](2019)
文章采取调整损失函数:计算Lr,通过模型预测一个新的密度图,然后计算新的密度图和旧的密度图之间的差值获得Sk并更新密度图的公式,然后再运行前向模型,获得一个新的密度图,S1的值接近于1,是误差比较大的点,用1-S1乘新的密度图来过滤,以此类推求出Sk,将求出的S1~Sk组合得到S。
3.3.3 其他方式
1. Iterative Crowd Counting[16](2018)
文章采取的思路是首先生成低分辨率的密度图,然后进一步的细化来生成高分辨率的密度图。该网络结构由两个CNN分支组成,一个分支用来生成低分辨率的密度图,另一个使用生成的低分辨率的密度图以及提取的特征图的基础上,生成高分辨率的密度图。
2. Crowd Counting with Deep Structured Scale Integration Network[17](DSSINet)(2019)
骨干网络采用VGG16,网络由三个子网络组成,每个子网络输入图片的大小分别为原图的2倍,原大小和0.5倍大小。不同大小的图片通过不同数量的下采样子模块,在输入SFEM结构时,特征具有相同大小的尺寸。
网络中创新的部分主要在SFEM模块中,它将两个子网络的特征作为输入,融合后的特征作为输出。融合的过程借鉴了CRF的思想。
5.3D Crowd Counting via Multi-View Fusion with 3D Gaussian Kernels[18] (2020)
大多数现有的人群计数工作集中在单视图计数,而很少有工作研究使用多个相机的大型和宽场景多视图计数。该文章提出通过三维特征融合三维场景级密度图来解决多维人群计数任务,而不是二维平面图。
提取单视图特征,然后投影到多个高度平面上的三维世界。投影的三维特征被连接和融合,以输出三维密度图预测。每个摄像机视图预测分支对二维特征进行解码,以获得二维摄像机视图预测。最后,将三维预测向后投影到每个摄像机视图上,并测量了摄像机视图的地面真相与后投影预测之间的投影一致性。
三维的研究势思路较少,但是极具实用性,是未来一个重要且有创新空间的研究方向。
4.数据集和评价
4.1 数据集
我们识别并汇集了一些在研究领域中常见的数据集,这些数据中有不同的透视角度、光线变化、场景变化等充满挑战的图像和标注。详细阐述如下:
l Shanghai Tech [19]:Shanghai Tech数据集包含1198张标注图像,共330165人。该数据集由两部分组成:A部分有482张图像,B部分有716张图像。
l WorldExpo’10 [20] :包括1132个视频序列,由108个监控摄像头捕捉。五个不同的视频序列,从一个不同的场景,每一个为测试。每个测试场景序列120帧。
l UCF_CC_50 [21]:该数据集包含从互联网上抓取的50幅不同分辨率和纵横比的黑白人群图像和63974张标注,对象数量从94到4543不等,平均1280。
l UCF-QNRF [22]:最近由Idrees etal介绍。,是一个包含1535张图片和125万条注释的大规模人群数据集。这些图像是高分辨率的,并在不同的背景下收集。
4.2 评估效果和衡量标准
计数的准确性会受到尺度变化和独立的物体集群的影响。尺度变化是指同一物体在图像中由于其视角和与相机的距离而表现为不同的大小。
MAE,平均绝对值误差,是预测值和观测值之间绝对误差的平均值,能更好地反映预测值误差的实际情况。
MSE,均方误差,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。
而对于计数中生成密度图的质量,通常使用峰值信噪比(PSNR)与结构相似性(SSIM)为评估标准。
4.3 实验结果比较
上述论文的代码部分进行复现,并统计实验结果如下:
(图3. 实验结果比较)
5.总结
目前,人群计数仍然存在很大的研究和发展空间,生成基于原图更精确的密度图是目前最具挑战性的问题,如何能够生成接近原图人头分布的高斯密度图是一个重要的研究方案,现有方法是不断进行校正,可以在此基础上简化校正模式。
参考文献:
[1]D. Onoro-Rubio and R. J. Lopez-Sastre, “Towards perspective-free ´ object counting with deep learning,” in ECCV. Springer, 2016, pp. 615–629.
[2]Zhikang Zou and Yifan Liu and Shuangjie Xu and Wei Wei and Shiping Wen and Pan Zhou, ” Crowd Counting via Hierarchical Scale.” arXiv:2003.03545 [cs.CV], (2020).
[3]Haipeng Xiong, Hao Lu, Chengxin Liu, Liang Liu, Zhiguo Cao, Chunhua Shen, “From Open Set to Closed Set: Counting Objects by Spatial Divide-and-Conquer.” In ICCV 2019
[4] Deepak Babu Sam, Neeraj N Sajjan, R. Venkatesh Babu, Mukundhan Srinivasan ”Divide and Grow: Capturing Huge Diversity in Crowd Images with Incrementally Growing CNN.” In CVPR 2018
[5] Vishwanath A. Sindagi Vishal M. Patel. Switching Convolutional Neural Network for Crowd Counting. In CVPR, 2017
[6]Jia Wan, Antoni Chan. Adaptive Density Map Generation for Crowd Counting. In ICCV2019
[7]Xinkun Cao, Zhipeng Wang, Yanyun Zhao, and Fei Su. Scale Aggregation Network for Accurate and Efficient Crowd Counting. In ECCV, 2018
[8]Chenfeng Xu1, Kai Qiu, Jianlong Fu, Song Bai, Yongchao Xu, Xiang Bai, “Learn to Scale: Generating Multipolar Normalized Density Maps for Crowd Counting.” In ICCV 2019
[9]Zhaoyi Yan, Yuchen Yuan, Wangmeng Zuo, Xiao Tan, Yezhen Wang, Shilei Wen, Errui Ding “Perspective-Guided Convolution Networks for Crowd Counting” In ICCV 2019
[10] Shuai Bai, Zhiqun He, Yu Qiao, Hanzhe Hu, Wei Wu, Junjie Yan “Adaptive Dilated Network with Self-Correction Supervision for Counting.” In CVPR 2020
[11]Weizhe Liu, Mathieu Salzmann, Pascal Fua ,“Context-Aware Crowd Counting.” In CVPR 2018
[12]Xiaoheng Jiang, Li Zhang, Mingliang Xu, Tianzhu Zhang, Pei Lv, Bing Zhou, Xin Yang,Yanwei Pang, “Attention Scaling For Crowd Counting.” In CVPR 2020
[13] Zenglin Shi, Pascal Mettes, and Cees G. M. Snoek. Counting with Focus for free. In ICCV, 2019
[14]Xialei Liu, Joost van de Weijer, Andrew D. Bagdanov, “Leveraging unlabeled data for crowd counting by learning to rank.” In CVPR 2018
[15] ZQ Cheng, JX Li, Q Dai,X Wu. Learning Spatial Awareness to Improve Crowd Counting. In ICCV, 2019
[16] V Ranjan,H Le,M Hoai. Iterative Crowd Counting. In ECCV, 2018
[17] Lingbo Liu, Zhilin Qiu, Guanbin Li, Shufan Liu, Wanli Ouyang. Crowd Counting with Deep Structured Scale Integration Network. In ICCV, 2019
[18] Qi Zhang and Antoni B. Chan,” 3D Crowd Counting via Multi-View Fusion with 3D Gaussian Kernels.” In AAAI 2020
[19] Y. Zhang, D. Zhou, S. Chen, S. Gao, and Y. Ma, “Single-image crowd counting via multi-column convolutional neural network,” in CVPR, 2016, pp. 589–597.
[20] K. Chen, S. Gong, T. Xiang, and C. Change Loy, “Cumulative attribute space for age and crowd density estimation,” in CVPR, 2013, pp. 2467– 2474.
[21] H. Idrees, I. Saleemi, C. Seibert, and M. Shah, “Multi-source multiscale counting in extremely dense crowd images,” in CVPR, 2013, pp. 2547–2554.
[22] H. Idrees, M. Tayyab, K. Athrey, D. Zhang, S. Al-Maadeed, N. Rajpoot, and M. Shah, “Composition loss for counting, density map estimation and localization in dense crowds,” in ECCV, 2018, pp. 532–546.