前 言
人群计数是计算机视觉中非常复杂的问题。标准物体探测器在人站得太近时很容易失效。在这篇文章中,我们将探讨三种不同的模型来解决这一挑战。
首先,我们用YOLO测试传统的边界框。其次,我们使用CNN(CSRNet)来创建密度热图。最后,我们使用视觉转换器(ViT)来准确观察人工智能的注意力集中在哪里。我们用完全相同的图片测试这三个模型。通过并排比较结果,我们将看到每个模型如何真正“理解”庞大的人群。
数据集
为了真正测试我们的模型,我们选择了上海科技(B部分)数据集。
https://www.kaggle.com/datasets/tthien/shanghaitech/data
它完美地反映了现实世界的城市监控,高角度监控录像中拥挤、重叠的人群。根据2016年CVPR的原始论文,作者设计它是为了处理任意相机视角和极端头部大小变化,这些是旧数据集无法捕捉的。
https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Zhang_Single-Image_Crowd_Counting_CVPR_2016_paper.pdf
然而,这也存在一个重大挑战。该数据集提供了ro(区域边界)框。 标准数据集使用矩形来教授模型。该数据集没有这些矩形。相反,每个人头只标有一个(x, y)点。我们只知道头部中心,不了解大小。所有这些原始点数都保存在.mat文件中。因此,我们必须将这些文件转换为每个模型所需的特定格式。
YOLO模型
首先,我们测试了YOLO模型。YOLO严格要求用边界框来检测物体。为了解决这个问题,我们会使用yolo_converter.py把文件转换成文件.mat.txt。
我们把每个点(x, y)都围成了一个16x16像素的方框。我们把这些盒子都保持得很小,以准确符合头部的尺寸。我们计算了这些方格的角落并保存成.txt。最后,我们手动创建了一个.yaml文件来设置数据集。
我们使用YOLOv8s模型进行物体检测测试。我们需要一个快速且轻量级的架构来快速处理数据集。我们用参数配置了模型。设置max_det=3000使YOLO能够在单幅图像中检测多达3000个物体。
模型仅用20分钟完成训练,但总是低估实际人数(GT)。mAP50-95(B)指标也极低,约为0.15。这是因为我们数百个小型16x16的边界盒在密集区域高度重叠。当它们重叠时,非最大抑制(NMS)过滤器会自动删除有效的盒子。该模型速度很快,但这些结果在视觉和数学上都证明了包围盒逻辑在拥塞场景中失效。
CNN模型
为了解决边界盒问题,我们使用了CSRNet。CSRNet是一种卷积神经网络(CNN),专为人群计数设计。它不是绘制方框,而是生成密度图,也称为热图。因此,我们不得不以不同的方式处理.mat文件。
首先,原始文件.mat会进入 。make_heatmaps.py脚本对点应用高斯滤波器,输出平滑密度热图,保存为.npy(NumPy)文件。接下来,我们用cnn_test.py构建实际的 CSRNet 架构。最后,我们会将.npy数据和模型架构都发送进train_cnn.py,开始训练过程。
通过训练100个epoch,该模型整体准确率达到了令人印象深刻的93.77%。它通过制造平滑的热源而非方框,完美解决了重叠问题。然而,这种高精度代价是大量时间。YOLO仅用20分钟完成培训,CSRNet则用了70分钟完成培训。卷积层的卷积层逐个处理图像,消耗计算资源并严重拖慢进程。
ViT模型
与传统的卷积不同,ViT一次查看整个图像。它采用“自我关注”机制,使模特能够同时理解人群中各部分之间的关系。它始终保持着场景的全球背景。
就像我们在CSRNet做的那样,我们首先将.mat文件中的原始点转化为密度地图。我们完全放弃了边界盒法。对于我们的主架构,我们构建了模型(ProViTCrowd)和vit_pro.py。我们没有从零开始,而是使用了一个强大且预先训练好的视觉变换器。我们修改了其核心结构,使其计算人类密度(回归),而不仅仅是对物体进行分类。然后,我们用train_vit_pro.py脚本训练了模型。因此,训练好的模型给出了两个结果:一个高度准确的预测计数和一个视觉化的注意力地图。 这张图证明模型成功学会了关注人群的整体流动。
我们的ProViTCrowd模型训练结果在速度和准确度上都远超预期。以往基于CNN的方法通常需要超过一小时才能完成一个完整的训练周期,而我们的ViT模型仅用18分钟完成了整个100个纪元的过程。更重要的是,该模型展现了令人难以置信的“快速收敛”。它在大约3分钟内(到第18epoch)准确率超过90%,证明其自我关注机制能快速理解人群的整体流动,无需记忆数据。
结 论
本研究通过将我们自身的建筑改造纳入三种模型,旨在对现实世界人群密度做出最准确的推断。我们提出了一种实用且整体的方法来应对这一复杂问题——这一方法在文献中已被广泛研究——为未来研究奠定坚实基础。
总结我们对每个模型的最终结论:YOLO在高度密集的场景中表现不佳,因为当人工重叠高度时,传统的边界框逻辑完全失效。CNN(CSRNet)通过密度图成功解决了这一重叠问题,并提供了极高的精度,但其繁重且缓慢的架构带来了大量时间成本。最后,我们的定制视觉变换器ProViTCrowd被证明是人群计数中最轻量、最强大的解决方案,凭借其全球注意力机制,几分钟内实现了最高准确度。
211