西工大PAMI论文:发布大规模人群计数/定位基准平台
近年来,安防监控在智慧城市中扮演的角色越来越重要,监控视角下的人群分析对于构建智慧城市的重要性日渐显现。
人群计数与定位作为其中的基础任务,服务于人流预测、城市规划、空间设计等高阶任务。
然而,该领域依然缺乏大规模的数据集以及公平的测试基准平台,尤其是人群定位依然没有一个有效的衡量标准。
为此,主要做了以下几项工作(对应论文已经被T-PAMI接收):
论文题目:
NWPU-Crowd: A Large-Scale Benchmark for Crowd Counting and Localization
论文地址: https://ieeexplore.ieee.org/document/9153156
项目地址:
https://gjy3035.github.io/NWPU-Crowd-Sample-Code/
构建了包含5,000余幅图像的人群计数/定位数据集NWPU-Crowd,并对其以人头点和人头框的方式进行标注; 搭建了线上测试平台,能够让研究者公平地参与测试集的评估; 更新了C3F人群计数框架,完美支持Python3并将密度图处理改为在线生成,节省存储; 公开了针对人群计数专门设计的标注工具,能够有效应对尺度变化、多标漏标的现象。
更多公开的内容参见项目主页,包含了论文的历史版本、公开的数据集、样例代码、标注工具、实验结果等。本文将从上述四个方面介绍该工作。
01
NWPU-Crowd数据集
数据获取
数据集特色
NWPU-Crowd有以下几个特色:
负样本。数据集中引入了351幅负样本图像,即无人场景。一些在纹理上与拥挤人群纹理相似的图像被收集进来,例如动物迁徙、花海、密集排列的图像,期望能够帮助模型提高泛化性能。
高分辨率图像。对于极端拥挤的超大人群场景,数据集搜集了高质量的、高分辨率的图像,其中最大尺寸达到了4028×19044。数据图像的平均分辨率为2191×3209。
更加明显的表观差异。整个数据集单幅图像人数范围在0到20,033。数据内部人头目标的面积范围(人头最小4个像素,最大超过一千万像素)造成了目标的表观特征差异明显。
下表展示了NWPU-Crowd与主流数据集的基本信息对比:
数据集对比
下图展示了一些NWPU-Crowd数据集中典型的场景。第一行为正常光照,第二行和第三行为极端光照与低亮度场景,最后一行为负样本图像。
数据集样例图像
数据和预训练模型下载方式:【我爱计算机视觉】公众号后台回复『NWPU』
注:目前数据集的扩展工作正在进行中,作者称争取在1年内将规模提升至1万张图像、500万个实例目标。
02
CrowdBenchmark评测平台
与检测、分割、跟踪等领域相比,人群计数、定位领域缺乏一个公开的算法性能评测平台,这也导致了一些性能对比上的不准确现象的发生。
此外,部分数据集自身也没有提供详细的评测标准和方案,导致一些性能对比有一定的不公平性。
因此,类似于COCO、CityScapes和MOT等Benchmark,构建人群计数/定位领域的评测平台是非常重要的。
评测准则
在评测网站中,允许.edu邮箱自主注册账户进行评估,同时对非.edu账户,使用注册邮箱发送个人信息(姓名、单位及用途)到crowdbenchmark.com@gmail.com 也可完成注册。
为确保公平性,对于每一项任务,每一个账户在每个自然月有6次提交机会。
目前平台已经吸引了50余位来自世界各地的科研工作者,评估了超过20位用户的150余次提交结果。特别地,人群定位任务目前依然在内测中,预计将于本月末开放评估。
下图为评测平台截图:
评测网站截图
评估标准
►人群计数
在人群定位中,由于传统数据集对人头尺寸没有标注,因此还没有一个统一的、广泛被大家认可或使用的评估标准。
得益于NWPU-Crowd对人头框进行了标注,人头尺寸很容易被计算,因此人群定位任务的评测可以被视为一个点集匹配任务。
这样,就可以用Precision,Recall以及F1-measure来衡量定位的结果。
对于一个实例目标,设定了两个尺寸阈值,一个是矩形框的外接圆的半径,一个是矩形框长和宽最小值的1/2(即内切圆的半径)。
公式表示为:
如果预测点能够落入到某一实例的外接圆或内切圆内,则认为该点成功定位了该实例。很明显,就定位标准而言,后者比前者更加严格。那么,问题就转换成了两个点集(预测点集和GT点集)的匹配。
考虑到效率问题,评测系统只需计算出TP,FP和FN的值,即可得到Precision、Recall以及F1-measure,因此采用匈牙利(Hungarian)算法求得两个点集的最大匹配即可。
同样地,为了全方位评估算法性能,以人头框的像素数为标准,将实例分为六个类别,分别是:
分别记为:A0, A1, ..., A5。
03
样例代码(C3F更新版)
为了方便大家使用NWPU-Crowd开展计数和定位工作,提供了样例代码供大家快速实验和复现。相比于C3F框架,主要区别在于:
代码完美遵循Python3.X标准;
数据与处理过程中,直接生成点图,节省存储,在线生成密度图和定位图;
更直观的可视化结果,相比于之前的灰度显示,现已经改为彩色密度图。
►人群计数
样例代码包含了对6个主流算法(MCNN, C3F-VGG, CSRNet, CANNet, SCAR, SFCN+)的复现参数和实验。
此外在文章中,还执行了SANet, PCC Net, Reg+Det Net和BL等经典方案。
在测试集的结果如下表:
人群计数性能指标排行榜
从表格可以看出,高密度场景(S4,人数大于5000人)低亮度(L0,YUV空间亮度低于0.25)的场景,估计误差较大。下图密度图预测的可视化结果一定程度上反映了该现象。
人群计数可视化结果
代码地址:
https://github.com/gjy3035/NWPU-Crowd-Sample-Code
预训练模型:
http://share.crowdbenchmark.com:2443/home/Pre-trained_Models_NWPU-Crowd
可视化结果:
http://share.crowdbenchmark.com:2443/home/predicted_density_map_on_NWPU-Crowd_val
►人群定位
样例代码中,文章复现了经典的RAZNet的Localization branch,简称为RAZ_loc。此外,在文章中,一些经典的目标检测算法和人群定位方案也参与了评比,例如:Faster RCNN, Finding TinyFaces, 高斯先验重建等。
在测试集的结果如下:
人群定位性能指标排行榜
从Box level(A0~A5代表根据人头大小划分的六个类别)的分类结果来看,没有一个算法可以同时处理好小目标与大目标的定位问题。
下图定位结果的可视化结果也反映了上述结论(其中绿框代表实例目标的外接圆;绿点代表预测结果匹配正确,即TP;红点表示漏检即FN;紫色表示虚检,即FP)。
人群定位可视化结果
代码地址:
https://github.com/gjy3035/NWPU-Crowd-Sample-Code-for-Localization
预训练模型:
http://share.crowdbenchmark.com:2443/home/Pre-trained_Models_NWPU-Crowd
可视化结果:
http://share.crowdbenchmark.com:2443/home/Predicted_Localization_Results_on_NWPU-Crowd_val
04
标注工具
工欲善其事,必先利其器。一个简单好用的标注工具是非常重要的。针对于人群计数/定位任务,文章作者开发了一个基于Web端的人群标注工具。
主要特色有以下几个:
为应对不同场景,在标注过程中,标注工具自动将整张图片分割成 16×16 的小区块。使得标注者可以在原图的5个尺度下(1x,2x,4x,8x,16x)标注目标。
为防止漏标多标情况,右侧内容显示框包含两部分:全透明区域代指左侧每个小方格的真实区域,四周浅蓝色透明区域为邻近区域。
每一个区块均可设置为是否标注完成。该功能在标注超大场景时特别有效,一张图可能会持续一个小时。每一个区块的划分使得每张图也可随时随地中断标注以及快速定位标注位置。
标注工具截图
下载链接:
https://github.com/Elin24/cclabeler
05
总结与展望
通过构建数据集以及大量的实验,发现目前存在着以下一些值得关注的问题。
如何提高模型的鲁棒性?目前的计数模型在应对高密度人群区域时,趋向于学习局部特征,模型在负样本和背景目标上的表现较差。
如何设计算法以缓解不同场景属性之间的影响?由于高密度与低密度场景间表观特征的巨大差异,场景间的性能影响非常明显。现实中,对于一个监控场景,人群的密度是不断在变化中的,如何设计算法减弱不同密度场景对性能的影响至关重要。
如何降低模型在极端拥挤场景下的估计误差?由于目标之间的相互遮挡、目标较小等原因,现有的模型在应对该类场景时,往往误差较大。
如何同时精准地定位微小目标和大尺寸目标?由于视角变化的存在,人头目标的尺寸变化较大,现有的算法难以同时处理该种情况。因此,亟待一种针对人群场景的特定算法的出现。
在未来的工作中,文中称也将致力于缓解和应对上述问题,推动人群计数/定位在实际中的落地和应用。
END