Deep Sortを使ったObject Tracking


Object Tracking をするためにDeep Sort を使ってみた。

Yolo などのObject Detection は物体が特定の画像のどの位置(Boundary Box)に存在しているかを識別するもので、
Object Trackingは、それらの物体が、複数の連続する画像で同一のものであるかどうかを識別するものである。

まずは、Yolo などで物体検出した後に、それらの位置情報をDeep Sort に渡して、同一のobject であるか識別させ、各物体に対してそれぞれTrack IDが割り振られる。

Deep Sort コード取得する。

こちらにあるコードを使って、YoloV4でobject Detection し、それをDeep Sort でObject Trackingする。
https://github.com/LeonLok/Deep-SORT-YOLOv4

git clone https://github.com/LeonLok/Deep-SORT-YOLOv4.git

今回は、TF2.0 を使うので、以下のフォルダに移動

cd Deep-SORT-YOLOv4/tensorflow2.0/deep-sort-yolov4

requirement.txtを使って、必要なツールをinstallする。

自分の環境では、githubにおいてあるrequirement.txtでは動かなったので、以下のように修正した。

requirement.txt
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
imutils==0.5.3
keras==2.3.1
matplotlib==3.2.1
numpy==1.18.4
opencv-python==4.2.0.34
pillow==7.1.2
scikit-learn==0.23.1
scipy==1.4.1
tensorboard==2.2.1
tensorflow==2.0.0
tensorflow-estimator==2.1.0
tensorflow-gpu==2.2.0

pip installする。

pip install -r requirement.txt

Yolov4用の重みファイルを以下からDownloadする。

Downloadした、yolov4.weightsをmodel_dataフォルダにコピーし、conver.py を使って、.weightファイルから.h5フォーマットに変換

python convert.py

で、mode_data フォルダ以下にyolo4.h5は作成される。

demo.py を実行する。

python demo.py

各物体に対して、IDが割り振られていて、特定の物体をtracking しているのが分かる。