服务器环境配置

只有配置好服务器环境,才能顺利运行本项目,包括模型训练、推理,动物行为分析流程。论文图表复现🔗 不需要配置服务器环境,只需要配置本地环境即可。

服务器环境配置注意

深度学习环境是本项目的核心基础。我们理解环境搭建可能是一个复杂且具有挑战性的过程,这也是整个AI领域普遍面临的难题。 虽然我们在持续优化部署流程,但当前项目仍存在一些版本兼容性问题。我们建议您在配置环境时保持耐心,并具备一定的技术钻研精神,以应对可能出现的挑战。


硬件配置

服务器硬件配置包括:

  • CPU: Intel Xeon 4314
  • 内存: 256 GB
  • GPU: 4 块 NVIDIA GeForce RTX 3090
  • 存储: 1 TB 固态硬盘 + 8 TB 机械硬盘

软件环境

软件环境包括:

  • 操作系统: Ubuntu 18.04
  • 深度学习框架: CUDA 11.4、cuDNN 8.8、TensorRT 8.6
  • 开发工具: Python 3.7.16、OpenCV-Python 4.8.0、TensorFlow 2.7.0、PyTorch 1.11.0

用于深度学习模型训练和数据分析。

重要警告

目前仅支持 Ubuntu 系统和 NVIDIA 显卡,其他系统请自行查阅相关资料。

重要警告

由于软件是在2019年配置的,因此部分软件版本可能已经过时,建议根据实际需求选择最新版本。大部分 Python 库可以在 pip 和 conda 中找到,但是部分库可能难以兼容安装。本文档难以兼顾所有软件的最新版本,请自行查阅相关资料。

强烈建议安装软件列表

软件名称 本机测试版本号(2022年) 2025年版本,未测试 备注
Ubuntu 18.04 24.04 操作系统,推荐
Python 3.7.16 3.12 开发语言,必须
CUDA 11.4 12.9 深度学习框架,必须
cuDNN 8.8 8.9 深度学习框架,必须
TensorRT 8.6 10.13 推理加速,必须
OpenCV-Python 4.8.0 4.12.0 图像处理,必须
TensorFlow 2.7.0 2.16.0 DANNCE 模型,必须
PyTorch 1.11.0 2.7.1 深度学习框架,必须
Docker 24.0.6 28.3.0 容器化,用于 Mediamtx
FFmpeg 4.x 6.x 视频读写
Mediamtx - - 视频流服务器,用于闭环行为干预

测试安装环境

所有软件安装完成后,需要进行测试,以确保安装成功。测试方法如下:

测试 nvidia cuda driver

$ nvidia-smi

测试 Nvidia Cuda Compiler

$ nvcc --version

测试 TensorRT 命令行工具

$ trtexec --onnx=/path/to/model.onnx --saveEngine=/path/to/model.engine

测试 polygraphy (NVIDIA 官方工具) 命令行工具

$ polygraphy inspect model --onnx=/path/to/model.onnx

测试 FFmpeg 命令行工具

# ffmpeg generate a 640x480 video, 30 fps, 1 minute
$ ffmpeg -f lavfi -i testsrc=duration=60:size=640x480:rate=30 -c:v libx264 -pix_fmt yuv420p -f mp4 /path/to/test.mp4

# convert it to hevc by NVIDIA HEVC encoder
$ ffmpeg -i /path/to/test.mp4 -c:v hevc_nvenc -pix_fmt yuv420p -f mp4 /path/to/test_hevc.mp4

测试 Docker 命令行工具

$ docker run hello-world
$ docker run --rm -it -e MTX_PROTOCOLS=tcp -p 8554:8554 -p 1935:1935 bluenviron/mediamtx

三方深度学习工具包

1. OPEN-MMLAB/MMDETECTION 模型

这是一个提供了 MaskRCNN 的开源项目,用于目标检测和分割。我们进行了 fork (2022年),并添加了自定义的模型和配置文件,以实现多大鼠分割。

安装方法请参考 MMdetection 的官方文档

  • 代码地址: https://github.com/chenxinfeng4/mmdetection.git

重要警告

我们 fork 的是 MMDET 1.x 版本,目前支持 python3.7;官网最新的 MMDET 是 3.x 版本,可能存在严重的兼容性问题。请根据实际需求选择合适的版本。

2. OPEN-MMLAB/MMPOSE 模型

这是一个提供了 MaskRCNN 的开源项目,用于人体姿态关键点检测。我们进行了 fork(2022年),并添加了自定义的模型和配置文件,以实现小球检测。

安装方法请参考 MMpose 的官方文档

  • 代码地址: https://github.com/chenxinfeng4/mmpose.git

重要警告

我们 fork 的是 MMPOSE 0.x 版本。新版本和环境可能存在兼容性问题。请根据实际需求选择合适的版本。

3. YOLO-v8 模型

这是一个轻量级目标检测,实例分割的开源项目。我们进行了 fork(2024年),并添加了自定义的模型和配置文件,以实现实时多大鼠分割。

  • 代码地址: https://github.com/chenxinfeng4/ultralytics.git

重要警告

我们 fork 的版本,与最新版本可能存在兼容性问题。请根据实际需求选择合适的版本。

4. DANNCE 模型

这是一个多视角动物姿态估计的库。我们进行了 fork(2022年),并添加了自定义的模型和配置文件,以实现实时多大鼠3D关键点识别。

  • 代码地址: https://github.com/chenxinfeng4/dannce.git

重要警告

我们 fork 的版本,与最新版本可能存在兼容性问题。而且,该库的预测精度高,但速度慢。我们进行了速度优化,导致与原始代码存在一些差异,以及更多的兼容性问题。安装起来比较麻烦,我们正在优化安装文档。

5. SmoothNet 模型

这是一个姿态时间平滑的库。我们进行了 fork(2022年),并添加了自定义的模型和配置文件,以实现实时多大鼠3D关键点平滑。

  • 代码地址: https://github.com/chenxinfeng4/SmoothNet.git

重要警告

我们 fork 的版本,与最新版本可能存在兼容性问题。请根据实际需求选择合适的版本。

安装本项目创建和改造的 python 包

1. LILAB 分析工具包

包含了常见的分析工具,如相机标定流程,大鼠分割、姿态估计流程,行为识别流程,大数据挖掘相关工具等。

  • 代码地址: https://github.com/chenxinfeng4/LILAB-py.git

安装方法:

git clone https://github.com/chenxinfeng4/LILAB-py.git
cd LILAB-py
pip install -e .

重要警告

包含许多流程工具,依赖过于庞大,因此不进行自动依赖安装。如果 import 报错,则需要手动安装依赖。

2. FFMPEGCV 工具包

GPU 加速的视频处理工具包,方便多相机视频读写,某些场景下比 OpenCV 快 9 倍。我开源之后,年下载量 7 万次。查看对应文档

  • 代码地址: https://github.com/chenxinfeng4/ffmpegcv.git

安装方法:

pip install ffmpegcv

重要警告

使用 GPU 加速,需要有 NVIDIA-driver。

3. multiview_calib 工具包

相机外参标定(小球标定)的工具包。在三方库基础上,进行了优化,并添加了自定义的标定流程。查看对应文档

  • 代码地址: https://github.com/chenxinfeng4/multiview_calib.git

安装方法:

pip install git+https://github.com/chenxinfeng4/multiview_calib.git

# 小球标定简易教程
git clone https://github.com/chenxinfeng4/multiview_ball_calib

4. 其它改造工具包

torch2trt: torch2trt 改造,支持 engine 文件直接载入。

pip install git+https://github.com/chenxinfeng4/torch2trt

cocoapi: 将 cocoapi 进行多线程改造,提升速度。

pip install git+https://github.com/chenxinfeng4/cocoapi

mmdetection-to-tensorrt: Mask-RCNN 模型转换为 tensorrt 模型。

pip install git+https://github.com/chenxinfeng4/mmdetection-to-tensorrt