公開日: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.comgithub.com
その他
GitHubに非常に簡単な手順を載せています。「動いた」「エラーがでた」などコメント頂ければ幸いです。
また、修正点、改善点などあれば教えて頂けたらうれしいです。