ByteTrack环境搭建指南:从源码编译到Docker部署全流程

【免费下载链接】ByteTrack [ECCV 2022] ByteTrack: Multi-Object Tracking by Associating Every Detection Box 【免费下载链接】ByteTrack 项目地址: https://gitcode.com/gh_mirrors/by/ByteTrack

引言

在计算机视觉领域,多目标跟踪(Multi-Object Tracking, MOT)是一项关键技术,广泛应用于智能监控、自动驾驶、人机交互等场景。ByteTrack作为ECCV 2022收录的先进MOT算法,通过关联每个检测框实现了高精度跟踪。本文将提供一份详尽的ByteTrack环境搭建指南,从源码编译到Docker部署,帮助开发者快速上手这一强大的跟踪工具。

读完本文,您将能够:

  • 在本地环境中编译和配置ByteTrack
  • 使用Docker容器化部署ByteTrack
  • 解决常见的环境依赖问题
  • 验证ByteTrack的安装正确性

环境准备

系统要求

ByteTrack的成功运行需要满足以下系统要求:

组件最低要求推荐配置
操作系统Ubuntu 18.04Ubuntu 20.04 LTS
Python3.6+3.8
CUDA10.211.3+
GPUNVIDIA GPU with 4GB VRAMNVIDIA GPU with 8GB+ VRAM
内存8GB16GB+
磁盘空间20GB50GB+

依赖项列表

ByteTrack依赖于以下关键库和工具:

numpy
torch>=1.7
opencv_python
loguru
scikit-image
tqdm
torchvision>=0.10.0
Pillow
thop
ninja
tabulate
tensorboard
lap
motmetrics
filterpy
h5py

# 已验证版本
onnx==1.8.1
onnxruntime==1.8.0
onnx-simplifier==0.3.5

从源码编译安装

1. 克隆代码仓库

首先,克隆ByteTrack的代码仓库:

git clone https://gitcode.com/gh_mirrors/by/ByteTrack
cd ByteTrack

2. 创建虚拟环境

为避免依赖冲突,建议使用Python虚拟环境:

# 使用conda创建虚拟环境
conda create -n bytetrack python=3.8 -y
conda activate bytetrack

# 或者使用venv
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate  # Windows

3. 安装依赖项

安装Python依赖:

pip install -r requirements.txt

对于PyTorch,建议根据您的CUDA版本安装特定版本:

# 例如,对于CUDA 11.3
pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 -f https://download.pytorch.org/whl/torch_stable.html

4. 编译安装ByteTrack

python setup.py develop

5. 安装额外工具

安装COCO API:

pip install cython
pip install 'git+https://gitcode.com/gh_mirrors/cocodataset/cocoapi.git#subdirectory=PythonAPI'

安装cython_bbox:

pip install cython_bbox

Docker容器化部署

1. Dockerfile解析

ByteTrack提供了一个Dockerfile,基于NVIDIA TensorRT镜像构建:

FROM nvcr.io/nvidia/tensorrt:21.09-py3

ENV DEBIAN_FRONTEND=noninteractive
ARG USERNAME=user
ARG WORKDIR=/workspace/ByteTrack

RUN apt-get update && apt-get install -y \
        automake autoconf libpng-dev nano python3-pip \
        curl zip unzip libtool swig zlib1g-dev pkg-config \
        python3-mock libpython3-dev libpython3-all-dev \
        g++ gcc cmake make pciutils cpio gosu wget \
        libgtk-3-dev libxtst-dev sudo apt-transport-https \
        build-essential gnupg git xz-utils vim \
        libva-drm2 libva-x11-2 vainfo libva-wayland2 libva-glx2 \
        libva-dev libdrm-dev xorg xorg-dev protobuf-compiler \
        openbox libx11-dev libgl1-mesa-glx libgl1-mesa-dev \
        libtbb2 libtbb-dev libopenblas-dev libopenmpi-dev \
    && sed -i 's/# set linenumbers/set linenumbers/g' /etc/nanorc \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

RUN git clone https://gitcode.com/gh_mirrors/by/ByteTrack \
    && cd ByteTrack \
    && mkdir -p YOLOX_outputs/yolox_x_mix_det/track_vis \
    && sed -i 's/torch>=1.7/torch==1.9.1+cu111/g' requirements.txt \
    && sed -i 's/torchvision==0.10.0/torchvision==0.10.1+cu111/g' requirements.txt \
    && sed -i "s/'cuda'/0/g" tools/demo_track.py \
    && pip3 install pip --upgrade \
    && pip3 install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html \
    && python3 setup.py develop \
    && pip3 install cython \
    && pip3 install 'git+https://gitcode.com/gh_mirrors/cocodataset/cocoapi.git#subdirectory=PythonAPI' \
    && pip3 install cython_bbox gdown \
    && ldconfig \
    && pip cache purge

# 安装torch2trt
RUN git clone https://gitcode.com/gh_mirrors/NVIDIA-AI-IOT/torch2trt \
    && cd torch2trt \
    && git checkout 0400b38123d01cc845364870bdf0a0044ea2b3b2 \
    && wget https://gitcode.com/gh_mirrors/NVIDIA-AI-IOT/torch2trt/commit/8b9fb46ddbe99c2ddf3f1ed148c97435cbeb8fd3.patch \
    && git apply 8b9fb46ddbe99c2ddf3f1ed148c97435cbeb8fd3.patch \
    && python3 setup.py install

# 创建用户
RUN echo "root:root" | chpasswd \
    && adduser --disabled-password --gecos "" "${USERNAME}" \
    && echo "${USERNAME}:${USERNAME}" | chpasswd \
    && echo "%${USERNAME}    ALL=(ALL)   NOPASSWD:    ALL" >> /etc/sudoers.d/${USERNAME} \
    && chmod 0440 /etc/sudoers.d/${USERNAME}
USER ${USERNAME}
RUN sudo chown -R ${USERNAME}:${USERNAME} ${WORKDIR}
WORKDIR ${WORKDIR}

2. 构建Docker镜像

docker build -t bytetrack:latest .

3. 运行Docker容器

docker run --gpus all -it --rm -v $(pwd):/workspace/ByteTrack bytetrack:latest

验证安装

下载示例模型和数据

# 下载YOLOX模型权重
wget https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_x.pth -P weights/

# 下载示例视频
wget https://gitcode.com/gh_mirrors/by/ByteTrack/raw/master/videos/palace.mp4 -P videos/

运行演示程序

python tools/demo_track.py video -f exps/default/yolox_x.py -c weights/yolox_x.pth --fp16 --fuse --save_result --video videos/palace.mp4

如果一切正常,您将在YOLOX_outputs/yolox_x/track_vis目录下找到生成的跟踪结果视频。

常见问题解决

1. CUDA版本不匹配

问题:运行时出现CUDA版本不匹配错误。

解决方法

  • 确认已安装与PyTorch兼容的CUDA版本
  • 重新安装对应版本的PyTorch和torchvision

2. 编译错误

问题:编译过程中出现错误。

解决方法

  • 确保已安装所有系统依赖:
    sudo apt-get install build-essential libglib2.0-0 libsm6 libxext6 libxrender-dev
    
  • 更新gcc版本:
    sudo apt install gcc-8 g++-8
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100
    

3. ONNX相关错误

问题:导出ONNX模型时出现错误。

解决方法

  • 确保安装了指定版本的ONNX相关库:
    pip install onnx==1.8.1 onnxruntime==1.8.0 onnx-simplifier==0.3.5
    

部署选项

ByteTrack提供了多种部署选项,以满足不同场景的需求:

1. ONNXRuntime部署

cd deploy/ONNXRuntime
python onnx_inference.py

2. TensorRT部署

C++版本
cd deploy/TensorRT/cpp
mkdir build && cd build
cmake ..
make -j
./bytetrack
Python版本
cd deploy/TensorRT/python
# 按照README.md中的说明进行操作

3. ncnn部署

cd deploy/ncnn/cpp
mkdir build && cd build
cmake ..
make -j
./bytetrack

4. DeepStream部署

cd deploy/DeepStream
mkdir build && cd build
cmake ..
make -j
# 按照README.md中的说明运行

总结与展望

本文详细介绍了ByteTrack的环境搭建过程,包括从源码编译和Docker容器化部署两种方式。我们还讨论了常见问题的解决方法和不同的部署选项。

通过本文的指南,您应该已经成功搭建了ByteTrack的运行环境。接下来,您可以:

  1. 探索ByteTrack的高级特性和参数调优
  2. 在自定义数据集上训练模型
  3. 尝试不同的部署方案,优化性能
  4. 参与ByteTrack社区,贡献代码或报告问题

ByteTrack作为一种高效的多目标跟踪算法,在实际应用中还有很大的优化空间。希望本文能够帮助您更好地使用和扩展ByteTrack,为您的计算机视觉项目增添强大的跟踪能力。

如果您觉得本指南对您有帮助,请点赞、收藏并关注,以便获取更多关于ByteTrack和计算机视觉的技术文章。

附录:环境配置检查清单

  •  已安装正确版本的Python
  •  已创建并激活虚拟环境
  •  已安装所有依赖项
  •  已成功编译ByteTrack
  •  已下载示例模型和数据
  •  已成功运行演示程序
  •  已了解基本的部署选项

祝您使用ByteTrack愉快!

【免费下载链接】ByteTrack [ECCV 2022] ByteTrack: Multi-Object Tracking by Associating Every Detection Box 【免费下载链接】ByteTrack 项目地址: https://gitcode.com/gh_mirrors/by/ByteTrack

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐