uestc_vhm
项目介绍
- 本项目的开发目标是为了快速部署目标检测、特征提取等算法模型,并将其通过流媒体的方式推流到前端页面进行显示。
- 本项目在开发过程中深入贯彻“高内聚、低耦合”的编码原则,力争很轻松地对目标检测、目标跟踪、流媒体等算法和技术进行扩展。
效果展示
技术路线
- 本项目主要使用了yolo系列模型完成目标检测,然后使用fast-reid提取目标框的特征向量,最后使用deepsort算法完成目标跟踪。
支持特性
- 流媒体:支持使用RTMP对摄像头或者视频进行推拉流,后续考虑添加RTSP以支持实时监控功能。
- 特征向量提取:支持Fast-Reid提取目标框的特征向量。
- 目标检测:支持Yolov8n模型实现目标检测。
- 目标跟踪:支持DeepSORT算法实现目标跟踪,后续考虑添加ByteTrack算法。
行人重识别服务
检测到行人之后
开发环境
- CPU: 13th Gen Intel(R) Core(TM) i5-13500HX 2.50 GHz
- GPU: NVIDIA GeForce RTX 4060 Laptop GPU
- RAM: 32GB
- OS platform: WSL 2.0(Ubuntu 22.04.3 LTS)
- Docker Development Environment: Ubuntu 20.04
- Architecture: x86_64
- Development editor: VSCode
- Compiler: Clang 18.1.8
- TensorRT: 8.6.1.6
- Ffmpeg: 4.2.7
Quick Start
前置安装
- 安装nvidia驱动,安装教程
- 安装WSL2.0,并在WSL2.0中安装Ubuntu 22.04.3 LTS,安装教程
- 安装docker-desktop
- 在powershell中使用如下命令检验WSL安装情况,下图中的Ubuntu-22.04-UESTC是我自己取的名字
环境检查
- 检验docker环境
- 本项目使用Dockerfile管理开发环境,环境中已自带所有可用的TensorRT、Cuda、Cudann、Opencv、Ffmpeg等依赖。按理来说,无需下载多余的包,仅需下载安装docker-desktop保证docker环境,并使用项目中的Dockerfile构建镜像即可。
- 由于WSL使用的是docker-desktop,所以无需在Ubuntu 22.04.3 LTS安装docker,只需要保证docker-desktop在后台运行即可
- 进入安装好的Ubuntu 22.04.3 LTS,使用以下命令在WSL中检验当前安装的docker-desktop是否可以调用GPU,,如果调用不了,尝试更新docker-desktop版本至v4.34.2及以上,或查看文档寻找解决方案,也可利用后记中的联系方式与我取得联系,我会尽力帮助解决问题。
# 检验nvidia驱动是否正常,这里右上角输出的CUDA Version必须大于等于11.3
nvidia-smi
# 检验docker是否可以调用GPU
docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
- 正常输出应该有你的显卡型号,如下图输出 RTX 4060 Laptop GPU
项目下载
# https
git clone https://github.com/dancing-ui/uestc_vhm.git
# or ssh
git clone [email protected]:dancing-ui/uestc_vhm.git
环境配置
- 构建镜像:使用以下命令构建docker镜像,该镜像占硬盘空间大约15GB,请确保硬盘空间足够。
# docker开发环境配置
cd /home/xy/work/uestc_vhm/docker/Dockerfile
docker build -t uestc_vhm:v0 .
docker run --gpus all -it --name uestc_vhm -v /home/xy/work/uestc_vhm:/workspace -d uestc_vhm:v0
cd /usr/local/TensorRT-8.6.1.6/samples/sampleOnnxMNIST
make -j20
cd ../../bin
./sample_onnx_mnist
- 正常截图如下图,有PASSED TensorRT.sample_onnx_mnist输出
模型配置
- 本项目所使用模型均通过官方仓库本地编译得来,且由于本项目使用了git lfs来管理模型文件、视频文件和第三方库文件,因此初期阶段(若更换TensorRT版本,需要重新生成模型,模型生成教程)无需在其他地方下载模型文件和测试视频,用仓库中现成的就行。
- 模型文件存放在model_file目录下,视频文件在test_video目录下。
- 可以通过修改src/etc/uestc_vhm_cfg.json配置文件的路径来自定义配置(流媒体配置、模型配置)。
第三方库编译
- 本项目使用了fast-reid、cnpy第三方库,如果仓库里的库文件无法使用,需要在容器中重新编译一下,替换仓库中的原始库文件。
项目编译
- 提供两种编译方式,一种是用VSCode的.vscode配置文件,一种是使用脚本文件。
# 脚本文件编译
cd /workspace
chmod +x ./local_build.sh
./local_build.sh
程序运行
cd /workspace/build/src
./uestc_vhm --config=/workspace/src/etc/uestc_vhm_cfg.json
程序退出
共有2种方式退出程序
- 使用ctrl+c退出uestc_vhm程序
- 使用 kill -2 uestc_vhm_pid 命令退出uestc_vhm程序,如下命令:
ps -e|grep uestc_vhm|awk '{print $1}'|xargs kill -2
程序资源占用
参考资料
后记
- 有任何问题都可以联系我,欢迎提issues和pr
- 联系方式:
- 如果该项目有帮助到您,请点一下右上角的小星星,感谢您的支持 :)