LoginSignup
2
3

More than 3 years have passed since last update.

2020年にアクセプトされた物体追跡(MOT)論文の実装を動かす

Last updated at Posted at 2020-09-08

複数の物体追跡(Multi Object Tracking)の実装を試そうと思い、『多人数トラッキング論文解説 Deep Affinity Network for Multiple Object Trackingを読む』を参考にしようと思ったのですが、Pytorch0.3を使用していて環境構築が難しそうだったので諦めました。代わりにこの論文を引用している論文を探して、Pytorch1.5.1でも動く実装を見つけたのでそのデモを動かしてみました。ここでは実行方法とその結果を紹介します。

環境

  • OS: Ubuntu 20.04
  • CUDA 10.2

論文情報

docker

CUDA10.2を利用しているので、Dockerfileを自分で用意しました。動作検証はしていませんが、CUDA10.1の場合のDockerfileはgithubに公開されています。

Dockerfile
FROM nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NOWARNINGS yes
WORKDIR /build/
COPY scripts/provisioning-*.bash scripts/
RUN chmod 775 scripts/*.bash \
    && scripts/provisioning-base.bash  \
    && scripts/provisioning-python.bash    
RUN rm -rf /build

RUN groupadd -g 1000 admin
RUN useradd -m --uid 1000 --gid 1000 admin
USER admin
RUN mkdir /home/admin/note
WORKDIR /home/admin/note/
RUN jupyter notebook --generate-config
COPY jupyter_notebook_config.py /home/admin/.jupyter/jupyter_notebook_config.py
CMD ["jupyter" , "notebook" , "--ip=0.0.0.0"]
scripts/provisioning-base.bash
#!/bin/bash

apt-get update && apt-get upgrade -y --no-install-recommends \
 && apt-get install -y --no-install-recommends python3.6 
apt-get install -y --no-install-recommends python3-pip \
                    python3-setuptools \
                    python3-dev
apt-get install -y --no-install-recommends ffmpeg libsm6 libxrender-dev
apt-get install -y --no-install-recommends libgtk2.0-dev
apt-get install -y llvm-9

scripts/provisioning-python.bash
#!/bin/bash

pip3 install wheel==0.35.1
pip3 install opencv-python==4.2.0.34
pip3 install pandas==1.1.1
pip3 install matplotlib==3.3.1
pip3 install motmetrics==1.2.0
pip3 install Cython==0.29.21
pip3 install cython-bbox==0.1.3
pip3 install lap==0.4.0
pip3 install torch==1.5.1 torchvision==0.6.1
pip3 install jupyterlab==2.2.6
LLVM_CONFIG=/usr/bin/llvm-config-9 pip3 install llvmlite==0.34.0
LLVM_CONFIG=/usr/bin/llvm-config-9 pip3 install numba==0.51.2

デモを動かす

docker run --gpus 0 --rm -it --shm-size=256m -v "$(pwd):/home/admin/note" nabeyang/mot bash

READMEの"Pretrained model and baseline models"にあるリンクから学習済みモデルをダウンロードします。1088x608ならここからダウンロードできます(日本ではBaiduのリンクからダウンロードは出来ないと思います)。ダウンロードしたptファイルをプロジェクトのトップから./weights/latest.ptと置きます(オプションで指定するのでどこでも大丈夫です)。

動画をここ(ライセンスCC0)からダウンロードしてtest.mp4という名前でプロジェクトトップに置きます。そして、次のようにするとデモを動かすことができます。

python3 demo.py  --input-video ./test.mp4  --weights ./weights/latest.pt --output-format video --output-root ./root/

すると./root以下に実行結果が出力されます。僕の環境では./root/result.mp4はエンコードがうまくいかなかったので、後から次のようにしてmp4ファイルを作成しました。

ffmpeg -r 20 -i ./root/frame/%05d.jpg -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4

demo.pyの中でも外部コマンドとしてffmpegを使ってmp4ファイルを生成しているだけなので、そこを直せば手間が省けそうです。最後に実行結果をgif形式にして載せておきます。

元動画
in.gif
変換後
out5.gif

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3