Skip to content

LayXRain/CrowdCounting

Repository files navigation

Crowd Counter — 人车检测与计数系统

基于 CSRNet + YOLOv8s 双模型融合的人群与车辆检测计数 Web 应用。

系统架构

图片/视频 → CSRNet (密度估计) + YOLOv8s (人车检测) → 融合计数
                                          │
                               Tracker (视频去重)
                                          │
                              Flask API → 前端可视化
                                          │
                              SQLite + CSV 导出

核心技术

模型 参数量 用途
CSRNet (CVPR 2018) 16.3M 密度图回归,适合密集人群计数
YOLOv8s 11.2M 人/车目标检测,输出边界框+类别+置信度
Centroid Tracker 视频多目标追踪,避免跨帧重复计数

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 下载模型权重

将以下文件放入 models/ 目录:

文件 大小 下载地址
csrnet_weights.pth 63MB HuggingFace
yolov8s.pt 22MB Ultralytics

或使用 Git LFS:

git lfs pull

3. 启动应用

python app.py

打开浏览器访问 http://127.0.0.1:5000

功能特性

  • 图片检测:上传图片 → 密度热力图 + 人/车检测框 + 计数
  • 视频检测:上传视频 → 逐帧采样 + 追踪去重 + 折线图 + 帧缩略图
  • 模型切换:Part A(密集人群)/ Part B(稀疏人群)
  • 历史记录:分页列表、详情查看、删除(SQLite)
  • 操作日志:自动记录每次检测/删除/切换操作
  • CSV 导出:按日期范围导出操作日志

API 接口

方法 路由 功能
POST /api/count-image 图片检测
POST /api/count-video 视频检测
GET /api/records 历史记录列表
GET /api/records/<id> 历史记录详情
DELETE /api/records/<id> 删除记录
GET /api/logs 操作日志
GET /api/logs/export CSV 导出
POST /api/model-switch 切换模型

文件结构

webapp/
├── app.py                  # Flask 主程序
├── inference.py             # CSRNet + YOLO 融合推理
├── csrnet.py                # CSRNet 模型定义
├── detector.py              # YOLO 人/车检测器
├── tracker.py               # 质心多目标追踪器
├── video_processor.py       # 视频采样处理
├── db.py                    # SQLite CRUD + CSV 导出
├── models/                  # 模型权重目录
├── static/
│   ├── index.html           # 前端页面
│   └── app.js               # 前端逻辑
└── requirements.txt         # Python 依赖

许可

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors