C-3-Framework
C-3-Framework 是一个基于 PyTorch 开发的开源人群计数代码框架,旨在为监督式人群计数任务提供高效、灵活的开发环境。它主要解决了研究人员在复现经典算法和对比新模型时,面临的数据集预处理繁琐、基准模型缺失以及实验参数难以追溯等痛点。
该框架非常适合从事计算机视觉研究的学者、算法工程师以及相关领域的开发者使用。其核心亮点在于“开箱即用”的便捷性:内置了包括 ShanghaiTech、UCF-QNRF 在内的六个主流数据集的预处理脚本,并提供了 AlexNet、VGG、ResNet 等多种经典骨干网络的预训练基准,方便用户快速验证新提出的模型效果。此外,C-3-Framework 拥有强大的实验日志功能,不仅能通过 TensorBoard 可视化损失与结果,还会自动保存包含完整参数设置的代码包,确保任何实验都能随时被精确复现,有效避免了因参数混淆导致的重复工作。
需要注意的是,该项目目前已停止官方维护,作者建议新用户可参考其推荐的 NWPU-Crowd-Sample-Code 或其他优秀开源项目,但 C-3-Framework 依然是一份极具参考价值的人群计数入门与基线对比资源。
使用场景
某智慧城市研发团队正在为大型交通枢纽开发实时人流监控系统,需要基于深度学习算法准确估算高密度人群数量以预防拥堵。
没有 C-3-Framework 时
- 数据预处理繁琐:面对 ShanghaiTech、UCF-QNRF 等主流数据集,工程师需手动编写大量脚本进行格式转换和密度图生成,耗时且易出错。
- 基线复现困难:缺乏统一的基准代码,想要对比 ResNet 或 VGG 等经典模型在人群计数任务上的表现,需从零搭建网络结构,难以保证实验公平性。
- 实验管理混乱:训练过程中参数组合繁多,缺乏自动记录机制,常因忘记具体的超参数设置而导致实验无法复现,排查问题效率极低。
使用 C-3-Framework 后
- 开箱即用数据处理:直接调用框架内置的数据处理模块,一键完成六大主流数据集的加载与预处理,将数据准备时间从数天缩短至几小时。
- 坚实基线快速对比:利用框架预置的 AlexNet、ResNet 等经典模型基线,团队能立即运行测试并获得标准性能指标,快速验证新提出算法的优越性。
- 全流程实验追溯:借助强大的日志功能,系统自动记录损失曲线、TensorBoard 可视化结果及当前代码包,任何历史实验均可通过保存的参数包随时精确复现。
C-3-Framework 通过提供标准化的开发套件和可复现的实验环境,让人群计数算法的研发从繁琐的工程搭建回归到核心的模型创新。
运行环境要求
- Linux
需要 NVIDIA GPU(文中提到受限于 GPU 数量),具体型号和显存未说明,需支持 PyTorch 1.0/0.4 的 CUDA 版本
未说明

快速开始
Crowd Counting Code Framework (C^3-Framework)
Python 3 开发版!
一个开源的基于 PyTorch 的人群计数代码库
注:由于个人原因,该代码将不再继续维护。建议您使用 NWPU-Crowd-Sample-Code 或者参考 Awesome-Crowd-Counting 中的其他优秀代码。
技术博客
- [2019.05] [中文博客] C^3 Framework系列之一:一个基于PyTorch的开源人群计数框架 [链接]
目标
本代码旨在提供一个高效、灵活的监督式人群计数框架。同时,我们还提供了若干基础网络及经典算法在主流数据集上的性能表现。
特性
- 便捷的开发工具包。它支持六个主流数据集,是一个非常方便的开发工具包。
- 坚实的基线模型。提供了包括 AlexNet、VGG、ResNet 等在内的经典预训练模型作为基准。基于这些基准,您可以轻松地将自己的模型效果与其进行对比。
- 强大的日志记录功能。不仅会记录损失值和 TensorBoard 可视化结果,还会保存当前的代码包(包括参数设置)。保存下来的代码包可以随时直接运行以复现实验,无需担心忘记复杂的参数配置。
性能表现
由于时间和 GPU 资源有限,部分实验暂未完成(标记为“TBD”)。如果您对该项目感兴趣,欢迎提交您自己的实验参数和结果。GCC(rd,cc,cl) 分别代表 GCC 数据集采用 random/cross-camera/cross-location 划分方式。
| 方法 | GCC(rd,cc,cl) | UCF-QNRF | SHT A | SHT B |
|---|---|---|---|---|
| MCNN (RGB 图像) | 102.2/238.3, 140.3/285.7, 176.1/373.9 | 243.5/364.7 | 110.6/171.1 | 21.5/38.1 |
| AlexNet (conv5) | 46.3/110.9, 83.7/180.3, 101.2/233.6 | TBD | TBD | 13.6/21.7 |
| VGG-16 (conv4_3) | 36.6/88.9, 57.6/133.9, 91.4/222.0 | 119.3/207.7 | 71.4/115.7 | 10.3/16.5 |
| VGG-16 (conv4_3)+decoder | 37.2/91.2, 56.9/138.3, 88.9/220.9 | 115.2/189.6 | 71.5/117.6 | 10.5/17.4 |
| ResNet-50 (layer3) | 32.4/76.1, 54.5/129.7,78.3/201.6 | 114.7/205.7 | TBD | 7.7/12.6 |
| ResNet-101 (layer3) | 31.9/81.4, 56.8/139.5, 86.9/214.2 | TBD | TBD | 7.6/12.2 |
| CSRNet | 32.6/74.3, 54.6/135.2, 87.3/217.2 | TBD | 69.3/111.9 | 10.6/16.6 |
| SANet | 42.4/85.4, 79.3/179.9, 110.0/246.0 | TBD | TBD | 12.1/19.2 |
| CMTL | - | TBD | TBD | 14.0/22.3 |
| ResSFCN-101 (SFCN+) | 26.8/66.1, 56.5/139.0, 83.5/211.5 | 112.67/198.27 | TBD | 7.8/12.6 |
| 方法 | WE | UCF50 |
|---|---|---|
| MCNN (RGB Image) | TBD | TBD |
| AlexNet (conv5) | TBD | TBD |
| VGG-16 (conv4_3) | TBD | TBD |
| VGG-16 (conv4_3)+decoder | TBD | TBD |
| ResNet-50 (layer3) | TBD | TBD |
| ResNet-101 (layer3) | TBD | TBD |
| CSRNet | TBD | TBD |
| SANet | TBD | TBD |
| CMTL | TBD | TBD |
| ResSFCN-101 (SFCN+) | TBD | TBD |
数据处理代码
- GCC
- UCF-QNRF
- ShanghaiTech Part_A
- ShanghaiTech Part_B
- WorldExpo'10
- UCF_CC_50
- UCSD
- Mall
快速入门
准备工作
前置条件
- Python 3.x
- Pytorch 1.0(部分网络仅支持 0.4):http://pytorch.org 。
requirements.txt中列出的其他依赖库,请运行pip install -r requirements.txt安装。
安装
- 克隆本仓库:
git clone https://github.com/gjy3035/C-3-Framework.git
- 克隆本仓库:
数据准备
- 在
./datasets/XXX/readme.md中下载我们处理好的数据集,或者运行prepare_XXX.m/.py生成密度图。如果您想直接下载所有已处理的数据(包括 Shanghai Tech、UCF-QNRF、UCF_CC_50 和 WorldExpo'10),请访问 链接。 - 将处理好的数据放入
../ProcessedData目录中。
- 在
预训练模型
- 一些计数网络(如 VGG、CSRNet 等)采用了 ImageNet 上的预训练模型。您可以从 TorchVision 下载这些模型。
- 将下载的模型放置于
~/.cache/torch/checkpoints/目录下(仅适用于 Linux 系统)。
文件夹结构
+-- C-3-Framework | +-- datasets | +-- misc | +-- ...... +-- ProcessedData | +-- shanghaitech_part_A | +-- ......
训练
- 在
config.py和./datasets/XXX/setting.py中设置参数(若想复现我们的结果,建议使用./results_reports中的参数)。 - 运行
python train.py。 - 启动 TensorBoard:
tensorboard --logdir=exp --port=6006。
测试
我们仅提供了一个在测试集上测试模型的示例。您可能需要根据自己的模型对其进行修改。
GCC 数据集上的预训练模型
考虑到 GCC 数据集规模庞大,我们提供了采用随机划分方式的 GCC 预训练模型,以节省研究人员的训练时间。您可以从这个 链接 下载。遗憾的是,我们在 GCC 上训练的 MCNN 模型已经丢失,我们将尽快重新训练并发布。
小贴士
在本代码中,验证集直接使用了测试集。严格来说,应该在验证集上进行评估(即从训练集中随机选取的部分,这也是论文中采用的方式)。然而,为了便于复现结果(即固定划分的训练集和测试集),本代码直接使用测试集作为验证集,这导致代码中的结果略优于论文中的结果。如果您将此仓库用于学术研究,请务必从训练集中抽取 10% 的数据作为验证集。
引用
如果您认为本项目对您的研究有帮助,请引用以下文献:
@inproceedings{wang2019learning,
title={从合成数据中学习以实现野外人群计数},
author={Wang, Qi 和 Gao, Junyu 和 Lin, Wei 和 Yuan, Yuan},
booktitle={IEEE 计算机视觉与模式识别会议(CVPR)论文集},
pages={8198--8207},
year={2019}
}
@article{gao2019c,
title={C$^3$ 框架:用于人群计数的开源 PyTorch 代码},
author={Gao, Junyu 和 Lin, Wei 和 Zhao, Bin 和 Wang, Dong 和 Gao, Chenyu 和 Wen, Jun},
journal={arXiv 预印本 arXiv:1907.02724},
year={2019}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。