はじめに
日本語のサイトが2つしかなく、以下のサイトを読みながら実装しましたが、エラーが頻発しサイト通りに進まなかったです。
この記事を読めば、エラーなく実装までいけると思います。
同じようにつまづく人もいるかと思い、備忘録として投稿します。初投稿なのでお手柔らかに...
参考文献
この記事は以下の情報を参考にして執筆しました。1番目のサイトは学習済みモデル(yolov7-d6.pt)のダウンロードのコードが抜けているので、2番目のサイトが良いです。
環境構築
Google Colabで実装します。
ランタイムのタイプはGPUにしてください。(最初TPUに設定してエラー出たので)
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive
公式よりcloneしてきます。
!git clone https://github.com/NirAharon/BoT-SORT.git
%cd BoT-SORT
次に必要なライブラリをインポートします。
!pip install -r requirements.txt
!python setup.py develop
!pip install cython
!pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
# Cython-bbox
!pip install cython_bbox
# faiss cpu / gpu
!pip install faiss-cpu
!pip install faiss-gpu
以上で導入は完了です。
学習済みモデルをダウンロードする
次に今回使用する学習済みモデルをダウンロードします。
!wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-d6.pt
モデルを格納する「pretrained」フォルダを作成します。
!mkdir pretrained
「pretrained」フォルダにモデルを移動します。
mv yolov7-d6.pt ./pretrained
MOT17のモデルをダウンロードします。
!gdown 'https://drive.google.com/uc?id=1QZFWpoa80rqo7O-HXmlss8J8CnS7IUsN'
「pretrained」フォルダにモデルを移動します。
mv mot17_sbs_S50.pth ./pretrained
以上で必要なモデルが揃いました。
今回はYOLOv7をベースとしています。
動画は自分で好きなものをBoT-SORTフォルダの直下に配置してください。名前はTraffic.mp4に変更しておいてください。
「–source Traffic.mp4」とすることで、Traffic.mp4動画に対して物体追跡を実装することができます。
!python tools/mc_demo_yolov7.py --weights pretrained/yolov7-d6.pt --source Traffic.mp4 --fuse-score --agnostic-nms --with-reid
実行したが、エラー発生!!!
発生したエラーと解決方法を記します。合計4つ+番外編1つ
1. 追加で必要なライブラリをインポート
!pip install lap yacs tabulate
2. Mapping関数の修正
再度実行すると新しいエラーが発生。
fast_reid/fastreid/evaluation/testing.py ファイルの 5 行目を以下のように修正。
from collections import OrderedDict
from collections.abc import Mapping
3. torch._six モジュールの修正
fast_reid/fastreid/data/build.py ファイルの 12 行目を以下のように修正。
from collections.abc import Mapping
4. Numpyのnp.floatをfloatに修正
再度実行すると新しいエラーが発生。
NumPy 1.20以降、np.floatは非推奨となり、代わりに組み込みのfloatまたはnp.float64を使用することが推奨されているそう。
そのため、np.floatをfloatまたはnp.float64に置き換えれば良い。
いちいち探すのは大変なので、VScodeで検索したところ、以下の3つのPythonファイルを書き換えれば良さそう!
🚀無事、実行できた!🚀
再度、以下のコマンドを実行すると、
!python tools/mc_demo_yolov7.py --weights pretrained/yolov7-d6.pt --source Traffic_4.mp4 --fuse-score --agnostic-nms --with-reid
こんな感じで物体検知が進みます。私の場合、1分30秒(89MB)の動画が8分ほどで完了しました。そもそもColabに動画をアップロードするのにも時間がかかった...
番外編(そもそもYOLOが動かない場合)
最初に実行した時、このようなエラーが発生した。
まずは以下のコマンドで確認したが、ディレクトリは問題なく、本来ならモジュールをインポートできるはずだった。
pwd
cd /content/drive/MyDrive/BoT-SORT
解決法
Google Colabで新しくファイルを作成し、もう一度最初から同じ手順で実行するとこのようなエラーは消えた。なんだったんだ。。