sabbas-ctrl/VisionIndex-Backend
GitHub: sabbas-ctrl/VisionIndex-Backend
基于人脸识别和CCTV视频分析的事后区域感知人员追踪系统后端,用于考勤记录、移动审计和校园安全洞察。
Stars: 0 | Forks: 0
# 🎯 VisionIndex 后端
**VisionIndex** 是一个事后、区域感知的存在追踪系统,它利用人脸识别和高级视频分析技术,从录制的 CCTV 视频中提取有价值的见解。该项目作为 **伊斯兰堡航空大学** 的学术毕业设计项目,本后端为系统提供了智能层支持——实现了在校园环境中对人体存在的检测、追踪、记录和查询功能。
本仓库仅包含**后端服务**。它也是持续进行 CI/CD、文档编写和部署工作流的基础。
## 🧠 项目成员
**小组成员:**
- Sabbas Ahmad
- Syed Wasif Ali Shah
- Abdul Mueed
**指导教师:**
Dr. Mehdi Hassan
*伊斯兰堡航空大学,计算机科学系系主任*
## 🚦 项目状态与进度
### 当前进展
- **后端 API:** 核心 Express.js 服务器已启动并运行。
- **数据库:** 本地 MongoDB 集成已完成;用户和视频元数据的模型已实现。
- **身份验证:** 基于 JWT 的身份验证和基于角色的访问控制已正常运行。
- **日志记录:** 用户活动和错误日志记录功能已实现。
- **测试:** 核心模块的初始单元测试已就位。
### 后续计划
- 完成检测和 embedding 流水线。
- 集成向量数据库以进行特征存储。
- 实现高级搜索和分析 endpoint。
- 扩大测试覆盖率并完善错误处理。
- 定型仪表盘和报告模块。
## ⚙️ CI/CD 设置
我们的 CI/CD 流水线旨在实现可靠性和快速迭代:
1. **GitHub Actions**
- **代码检查:** 在每次推送和 pull request 时运行 ESLint 和 Prettier。
- **测试:** 执行所有单元和集成测试。
- **构建:** 构建后端并检查依赖项问题。
- **部署:** (计划中)在主分支成功合并后自动部署到预发布/生产环境。
2. **环境变量**
- 所有密钥和特定环境的配置均通过 `.env` 文件进行管理(已从 git 中排除)。
## 🛠 开发者命令
| 命令 | 描述 |
|------------------------|-----------------------------------------------------|
| `npm run dev` | 启动带有热重载的开发服务器 |
| `npm run linter` | 使用 `app` 文件夹中的 `eslint.mjs` 配置运行 ESLint |
| `npm test` | 运行 `app/tests` 中的所有单元和集成测试 |
| `npm install` | 安装项目依赖 |
🌐 实时部署
后端已上线,可通过以下地址访问:
🔗 https://visionindex-backend-production.up.railway.app/
此部署完全由 CI/CD 驱动——任何成功合并到 main 分支的操作都会自动触发构建和部署。
## 🚀 VisionIndex 模块(计划中与开发中)
### 1. 🔐 用户身份验证与访问控制
- 基于角色的访问权限(Admin、Analyst、Viewer)
- 安全的基于 JWT 的会话管理
- 记录所有登录/注销和权限操作
### 2. 📥 视频上传与接收
- 用于上传录制好的 CCTV 视频的接口
- 验证视频格式、大小和完整性
- 提取并记录元数据:时长、分辨率、上传者等
### 3. 🧹 视频预处理
- 通过 OpenCV 进行帧提取和标准化
- 检测损坏或无法读取的帧
- 记录片段结构:时间戳、帧数
### 4. 🧍♂️ 检测与 Embedding 流水线
- YOLOv8 用于物体和人物检测
- DeepSort 用于带有临时 ID 的实时追踪
- DeepFace/ReID 用于提取面部/身体 embedding
- 为检测结果打上时间戳和摄像机来源标签
### 5. 🧠 特征向量化与知识库
- Embedding 向量在向量数据库中建立索引
- 将向量映射到元数据(帧、区域、时间、检测类型)
- 通过相似性检查防止重复
### 6. 🔍 基于图像与文本的搜索
- 使用图像裁剪或标签(如衣物、时间)进行多模态搜索
- 按区域、物体类型等进行筛选。
- 通过余弦相似度对结果进行排名
- 记录所有查询以供审计
### 7. 📊 可视化时间线与回放
- 匹配检测结果的按时间索引视图
- 可点击导航以回放准确的帧位置
- 清晰的边界框显示
- 跨会话的频率可视化
### 8. 📈 分析仪表盘
- 使用统计、标签趋势、上传成功率
- 可导出的图表(PDF、CSV)
- 在不暴露个人数据的情况下提供可视化洞察
### 9. 📝 日志记录与系统审计
- 记录用户活动:上传、查询、导出
- 记录警告、失败和系统异常
- 生成审计追踪,以供评估和追溯
## 🧰 技术栈(计划中)
- **后端框架:** Node.js (Express)
- **前端框架:** React.js
- **数据库:** MongoDB(主要),PostgreSQL(归档)
- **目标检测:** YOLOv8
- **人脸识别:** DeepFace,FaceNet
- **追踪:** DeepSort
- **向量数据库:** FAISS / Pinecone / Qdrant
- **异步任务:** Celery + Redis
- **视频处理:** OpenCV
- **身份验证:** JWT
- **CI/CD:** GitHub Actions
## 📂 仓库结构(进行中)
```
visionindex-backend/
├── .github/
│ └── workflows/
├── app/
│ ├── controllers/
│ ├── jobs/
│ ├── logs/
│ ├── middlewares/
│ ├── models/
│ ├── routes/
│ ├── tests/
│ ├── .env
│ ├── eslint.config.mjs
│ ├── packages.json
│ └── server.js
├── .gitignore
├── LICENSE
└── README.md
```
## 📌 项目状态
此后端正在积极开发中。CI/CD、模块连接和生产逻辑正在迭代集成。
初始目标是实现模块化、可扩展和可测试的服务组件,从而支持独立开发和快速迭代。
## 🔒 贡献政策
这是一个私有的学术项目。
仅限原始项目团队和经授权的伊斯兰堡航空大学教职员工参与贡献。
目前不接受外部的 pull request、fork 和 issue。
## 📝 许可证
本项目采用修改版的 MIT 许可证。
详情请参阅 LICENSE 文件。
## 📢 致评审者的说明
开发 VisionIndex 时充分考虑了现实世界中的可扩展性和事后监控的实用性。如果您有任何建议、提议的功能或批评意见,请在评估阶段提出或联系
标签:CCTV, Express.js, GitHub Actions, GNU通用公共许可证, HTTP/HTTPS抓包, JWT认证, MITM代理, MongoDB, Node.js, RBAC权限控制, RESTful API, 事后审计, 人员追踪, 人脸识别, 区域感知, 后端开发, 向量数据库, 安防监控, 态势感知, 提示词优化, 校园安全, 毕业设计, 测试用例, 特征嵌入, 目标检测, 移动轨迹分析, 考勤系统, 自动笔记, 视频分析, 计算机视觉, 身份识别, 闭路电视监控