【超簡単】MMTrackingとYOLOv8を使って物体検出モデルの学習を教師データ作成含めてサクッと行う

公開日:2023年1月14日
最終更新日:2023年2月17日

はじめに

YOLOv8が公開されました。開発元はYOLOv5と同じUltralyticsです。

YOLOv6、YOLOv7もありますが開発元が異なります。

以前YOLOv5の学習スクリプトを書きました。
touch-sp.hatenablog.com
今回YOLOv8用に書き換えました。

方法の概略

OpenMMLabの「MMTracking」で物体検出モデルの学習用データを作成しました。

学習データとして準備するのは複数枚の画像?いや違います。
必要なのは目的の物体を撮影した動画ファイルです。

今回は各物体に対して20秒程度の動画を撮っただけです。あとでサンプルをダウンロードするのでどういった動画を撮ったかはそこで確認して下さい。

根気よく目的の物体を囲んでいく作業が必要?いや必要ありません。
準備した動画の数だけで良いです。サンプル動画(3クラス、4動画)を使うなら4回のみです。

実行

環境構築はこの記事の後半に載せておきます。

Clone

まずはリポジトリをクローンします。

git clone https://github.com/dai-ichiro/detection2.git
cd detection2

Gitが使えなければZIPでダウンロードして解凍しても問題ありません。
GitHubはこちらになります。

サンプル動画のダウンロード

python tools/download_sample_videos.py

これだけで「videos」フォルダが作成され中に動画がダウンロードされます。
どういった動画を撮ったかはここで確認して下さい。

3クラス、4動画になっています。
動画名がそのままクラス名になります。
1つのクラスに複数の動画を撮った場合にはフォルダにまとめます。フォルダ名がクラス名になります。

MOV動画になっていますがmp4でも問題ありません。

学習データ作成、学習

python detection.py

この1行で学習データ作成と学習が順に行われます。

ビデオの数だけ物体を囲む作業が必要です。
マウスで囲ってスペースキーを押して下さい。






引数は最低限のみ用意しました。

optional arguments:
  -h, --help            show this help message and exit
  --videos_dir VIDEOS_DIR
                        video folder name
  --epochs EPOCHS       total training epochs
  --batch BATCH         total batch size
  --weights WEIGHTS     initial weights path

videos_dirは動画ファイルの保存先です。デフォルトは「videos」になっています。
batchのデフォルトは8にしています。VRAMが不足するようなら減らす必要があります。
epochsのデフォルトは4と低めにしています。
weightsのデフォルトは「yolov8n.pt」にしています。

推論

画像

python inference.py --image sample_images/sample01.jpg --weights runs/detect/train/weights/best.pt

画像と学習済みweightsを指定して実行します。

学習済みweightsの保存先は異なる可能性があります。「train」がすでに存在していれば「train2」、「train3」などになります。

これで記事の最初の写真が表示されました。なかなか精度は良さそうです。

Webカメラ

python webcam_inference.py --weights runs/detect/train/weights/best.pt



(注意)「yolov8n.pt」というファイルがダウンロードされていますがそれは転移学習に使用したweightsです。今回の学習済みのweightsではないので注意して下さい。

環境構築

Windows 11
CUDA 11.6.2
Python 3.9.13



確実な動作を担保するためにそれぞれのバージョンを指定しています。
必ずしもこのバージョンでないと動かないというわけではありません。

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install mmcv-full==1.7.1 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
pip install mmdet==2.28.1
pip install mmtrack==0.14.0
pip install openmim==0.3.6
pip install mmengine==0.5.0
pip install ultralytics==8.0.39
pip install gdown==4.6.3



「requirements.txt」を公開しているのでそちらを使うと以下のように簡単になります。

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install mmcv-full==1.7.1 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
pip install -r https://raw.githubusercontent.com/dai-ichiro/detection2/main/requirements.txt



Python3.10ではなぜか以下の警告が出てうまくいきませんでした。

RuntimeError: Numpy is not available

使用させて頂いたツール

github.com
github.com

その他

GitHubに非常に簡単な手順を載せています。
「動いた」「エラーがでた」などコメント頂ければ幸いです。
また、修正点、改善点などあれば教えて頂けたらうれしいです。