機械学習
記事内に商品プロモーションを含む場合があります

YOLOv5を使った独自データの学習と推論を実践|ultralyticsの新リポジトリを利用

tadanori

ultralytics社の新しいリポジトリ(2023年)は、YOLOv3/YOLOv5/YOLOv6/YOLOv8をサポートしています。この記事では、ultralyticsのリポジトリで、YOLOv5モデルを使ってカスタムデータ(オリジナルデータ)の学習・推論させる方法を解説します。

ultralytics社のYOLOモデル

YOLOv5はultralytics社の作成したYOLOモデルです。2023年にYOLOv8が登場して、そちらのリポジトリでもYOLOv5がサポートされる形になっています。

ultralytics社のモデルは、YOLOv8モデルからYOLOv5モデルに簡単にモデルを切り替えられるように設計されています。

これを確認するために、今回はYOLOv8で作成した学習コードをYOLOv5に置き換えて学習させてみました

YOLOv5モデルの独自の学習済みデータを活用したい場合などは、YOLOv5の学習済みモデルを(おそらくそのままま)使うことが可能です。

ベースとするYOLOv8の学習コードについて

ベースとするコードは、以下の記事のものになります。この記事では、car object detectionのデータセットを使ってカスタムデータへの学習を行っています。

ここでは、このコードをYOLOv5向けに修正します

ベースとするコードの記事
YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践
YOLO v8で物体検出|独自(カスタム)データの学習と推論を実践

コードは上の記事を参考にしてください。

また、今回のコードはkaggle notebookで公開していますのでそちらも合わせて確認ください。

YOLOv8→YOLOv5の変更

ここでは、YOLOv8からYOLOv5へモデルを変更するのに、ultralytics社の公式のリポジトリを利用します。公式リポジトリは以下のURLです。

公式Githubリポジトリ:https://github.com/ultralytics/ultralytics/

書き換えは1行だけ

書き換えるのは以下の1行だけです。

具体的な書き換えはYOLO('yolov8n.pt')YOLO('yolov5n.pt')に変更するだけです。

これでモデルがYOLOv8からYOLOv5になります

学習済みモデルとしては、yolov5n, yolov5s, yolov5m, yolov5l, yolov5x, yolov5n6, yolov5s6, yolov5m6, yolov5l6, yolov5x6を選択することができます。

model = YOLO('yolov5n.pt')
model.train(data="dataset.yaml", epochs=100, batch=8)

事前学習モデルを利用しない場合は、YOLO('yolov5n.yaml')のようにyamlファイルを指定して生成します。独自モデルの場合は、YOLO(独自モデルファイルへのパス)という形式で呼び出します。

実行結果

YOLOv8

Model summary (fused): 168 layers, 3005843 parameters, 0 gradients
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 
                   all         71        100       0.98      0.979       0.99      0.711
Speed: 2.2ms preprocess, 2.9ms inference, 0.0ms loss, 1.9ms postprocess per image
YOLOv8

YOLOv5

YOLOv5n summary (fused): 193 layers, 2503139 parameters, 0 gradients, 7.1 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 
                   all         71        117      0.966      0.969       0.99      0.704
Speed: 0.8ms preprocess, 1.2ms inference, 0.0ms loss, 1.4ms postprocess per image
YOLOv5

比較

mAP50-95で比較すると、YOLOv8が0.711, YOLOv5が0.704と、精度面では新しいモデルのYOLOv8の方が上のようです。

ただ、速度面(Speed)で見ると、YOLOv5の方が軽そうです。YOLOv5もそれなりの性能があるので、速度面からYOLOv5を選択することもあるかもしれません。

少し気になるのは、上のグラフのmetrics/precision(B)とval/dfl_lossの動きで、YOLOv8に比べて安定していない感じがします。

特別な理由がなければ、YOLOv8を使った方がよいと思います

YOLOv5以外への変更について

公式のGithubのultralytics/cfg/modelsに、利用できるモデルの設定ファイルが格納されています。これを見るとYOLOv3/YOLOv5/YOLOv6/YOLOv8のモデルが利用できるようです。

YOLOの設定ファイル
引用元:https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models

まとめ

以上、ultralyticsのモデルをつかってYOLOv8からYOLOv5に切り替える方法について説明しました。

おすすめ書籍

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました