精确的结果,[paper-CSRNet-CVPR2018]是一个更深入的人群计数模型。它使用扩展卷积来避免频繁的池化和上采样。我们提供了一个容易的全面实现[CSRNet-pytorch]。
Datasets
- GCC Dataset [Link] (a large-scale, synthetic and diverse dataset)
- UCF-QNRF Dataset [Link / GoogleDrive]
- ShanghaiTech Dataset [Link: Dropbox / BaiduNetdisk]
- WorldExpo’10 Dataset [Link]
- UCF CC 50 Dataset [Link]
- Mall Dataset [Link]
- UCSD Dataset [Link]
- SmartCity Dataset [Link: GoogleDrive / BaiduNetdisk]
- AHU-Crowd Dataset [Link]
Leaderboard
The section is being continually updated. Note that some values have superscript, which indicates their source.
ShanghaiTech Part A
Year-Conference/Journal | Methods | MAE | MSE | PSNR | SSIM | Params | Pre-trained Model |
---|---|---|---|---|---|---|---|
2016–CVPR | MCNN | 110.2 | 173.2 | 21.4CSR | 0.52CSR | 0.13MSANet | None |
2017–ICIP | MSCNN | 83.8 | 127.4 | - | - | - | - |
2017–AVSS | CMTL | 101.3 | 152.4 | - | - | - | None |
2017–CVPR | Switching CNN | 90.4 | 135.0 | - | - | - | VGG-16 |
2017–ICCV | CP-CNN | 73.6 | 106.4 | - | - | - | - |
2018–WACV | SaCNN | 86.8 | 139.2 | - | - | - | - |
2018–CVPR | ACSCP | 75.7 | 102.7 | - | - | 5.1M | None |
2018–CVPR | CSRNet | 68.2 | 115.0 | 23.79 | 0.76 | 16.26MSANet | VGG-16 |
2018–CVPR | IG-CNN | 72.5 | 118.2 | - | - | - | - |
2018–CVPR | D-ConvNet-v1 | 73.5 | 112.3 | - | - | - | - |
2018–CVPR | L2R (Multi-task, Query-by-example) | 72.0 | 106.6 | - | - | - | VGG-16 |
2018–CVPR | L2R (Multi-task, Keyword) | 73.6 | 112.0 | - | - | - | VGG-16 |
2018–IJCAI | DRSAN | 69.3 | 96.4 | - | - | - | - |
2018–ECCV | ic-CNN (one stage) | 69.8 | 117.3 | - | - | - | - |
2018–ECCV | ic-CNN (two stages) | 68.5 | 116.2 | - | - | - | - |
2018–ECCV | SANet | 67.0 | 104.5 | - | - | 0.91M | None |
2018–AAAI | TDF-CNN | 97.5 | 145.1 | - | - | - | - |
2019–AAAI | GWTA-CCNN | 154.7 | 229.4 | - | - | - | - |
2019–ICASSP | ASD | 65.6 | 98.0 | - | - | - | - |
2019–CVPR | SFCN | 64.8 | 107.5 | - | - | - | - |
ShanghaiTech Part B
Year-Conference/Journal | Methods | MAE | MSE |
---|---|---|---|
2016–CVPR | MCNN | 26.4 | 41.3 |
2017–ICIP | MSCNN | 17.7 | 30.2 |
2017–AVSS | CMTL | 20.0 | 31.1 |
2017–CVPR | Switching CNN | 21.6 | 33.4 |
2017–ICCV | CP-CNN | 20.1 | 30.1 |
2018–TIP | BSAD | 20.2 | 35.6 |
2018–WACV | SaCNN | 16.2 | 25.8 |
2018–CVPR | ACSCP | 17.2 | 27.4 |
2018–CVPR | CSRNet | 10.6 | 16.0 |
2018–CVPR | IG-CNN | 13.6 | 21.1 |
2018–CVPR | D-ConvNet-v1 | 18.7 | 26.0 |
2018–CVPR | DecideNet | 21.53 | 31.98 |
2018–CVPR | DecideNet + R3 | 20.75 | 29.42 |
2018–CVPR | L2R (Multi-task, Query-by-example) | 14.4 | 23.8 |
2018–CVPR | L2R (Multi-task, Keyword) | 13.7 | 21.4 |
2018–IJCAI | DRSAN | 11.1 | 18.2 |
2018–AAAI | TDF-CNN | 20.7 | 32.8 |
2018–ECCV | ic-CNN (one stage) | 10.4 | 16.7 |
2018–ECCV | ic-CNN (two stages) | 10.7 | 16.0 |
2018–ECCV | SANet | 8.4 | 13.6 |
2019–ICASSP | ASD | 8.5 | 13.7 |
2019–CVPR | SFCN | 7.6 | 13.0 |
2019.05.07 纪念北漂生活的第二站:
拥挤人群计数目前主要有两种实现路径:
1.使用回归的算法思路,直接根据图像回归出拥挤人群密度热图,它的缺点是只能得到场景整体的一个拥挤指数,不能获知人群个体的具体位置,而且这种方法对图像分辨率很敏感。
2.使用目标检测的方法,比如直接使用Faster RCNN检测人,检测后数目标为“人”的个数。这种方法的缺点是在人物相互遮挡的情况下往往性能较差,而人群越拥挤相互遮挡的可能性越大,导致算法使用受限。
深度学习方法
Step1、给定一张图像,用CNNs来估计人数,一般有两种方案:
Step2、一是输入图像,输出区域内估计的人头数目;
Step3、二是输出人群密度图(每平方米多少人),然后再通过积分求总人数。
人群计数与人群密度分析为其中重要的组成内容。人群计数与人群密度分析算法通常的方法大致可以分为三种:
1 、行人检测 :这种方法比较直接,在人群较稀疏的场景中,通过检测视频中的每一个行人,进而得到人群计数的结果,一般是用基于外观和运动特征的boosting,贝叶斯模型为基础的分割,或集成的自顶向下和自底向上的处理,这种方法在人群拥挤情况下不大奏效,需要运用到基于部件模型(如DPM)的检测器来克服人群拥挤遮挡的问题。
2、视觉特征轨迹聚类:对于视频监控,一般用KLT跟踪器和聚类的方法,通过轨迹聚类得到的数目来估计人数。
3、基于特征的回归:建立图像特征和图像人数的回归模型, 通过测量图像特征从而估计场景中的人数。由于拥挤情况下采用直接法容易受到遮挡等难点问题的影响,而间接法从人群的整体特征出发,具有大规模人群计数的能力。
对于之前所做的人群密度、人群计数,进行简单的总结:(2018–CVPR CSRNet为例)
论文:CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes
CVPR 2018 Paper : https://arxiv.org/abs/1802.10062
Keras实现:https://github.com/DiaoXY/CSRnet
官方Pytorch实现:https://github.com/leeyeehoo/CSRNet-pytorch
回归法对人群计数:根据图像回归人群密度图,直接计算人群数量
通过论文中的对比数据发现,相较于Crowdnet、MCNN、SCNN等方法,CSRnet是目前计算拥挤人群密度的最好的回归方法模型。
CSRnet网络模型主要分为前端和后端网络,采用剔除了全连接层的VGG-16作为CSRnet的前端网络,输出图像的大小为原始输入图像的1/8。卷积层的数量增加会导致输出的图像变小,从而增加生成密度图的难度。所以本文采用空洞卷积神经网络作为后端网络,在保持分辨率的同时扩大感知域, 生成高质量的人群分布密度图。
生成密度图
CSRnet模型生成密度图的方法参考的MCNN(CVPR2016)中的方法。采用脉冲函数卷积高斯核的方式来定义密度图。假设标注点的位置为xi,那么具有N个头的标签可以被表示为。
这里把它与高斯函数做卷积变成一个连续的函数。但是这种密度函数假设每个xi在图像空间中是独立的。然而事实上,每个xi是在3D场景中一个人群密度的样本,并且由于透视失真,不同样本xi相关的像素与场景中区域的不同尺度一致。于是为了精确估计群体密度,需要考虑透视变换。如果假设在一个人头区域的周围,人群的密度是均匀的,它的最近邻给出了一个对于几何形变的合理的估计。 为了使得密度图能够更好地与不同视角(不同人头大小)且人群很密的图像对应起来,作者对传统的基于高斯核的密度图做了改进,提出了基于几何适应高斯核的密度图,由下式表示:
通俗理解就是:密度图是由delta脉冲函数与一个高斯函数卷积得来,这里先卷积再求和
对于每一个人头的xi点,给出了k个近邻距离的的平均值di,于是,与xi相关的像素对应于场景中地面上的一个区域,这个区域的半径与di成正比。于是,为了估计像素xi周围的人群密度,为我们需要把H(x)卷积一个自适应的高斯核的,这个高斯核的的方差σi是可变的并且和di成比例。
总结就是把标签H和一个自适应核的高斯核函数进行卷积,这个高斯核函数的方差为β与xi的K个最近邻平均距离的乘积。