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

YOLOv5を使った独自データの学習と推論|ultralytics YOLOリポジトリ

Aru

ultralytics社のリポジトリでは、YOLOv3/YOLOv5/YOLOv6/YOLOv8/YOLOv9と多くのモデルをサポートしています。この記事では、YOLOv5モデルを使ってカスタムデータ(オリジナルデータ)でトレーニングさせる方法を解説します。

ultralytics社のYOLOモデル

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

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

モデルの切り替えを確認するために、今回はYOLOv8で作成した学習コードをYOLOv5に置き換えて学習させてみました

事情があってYOLOv5モデルが使いたい(YOLOv5の学習済みパラメータを持っている)理由がある場合、YOLOv5の独自学習パラメータを(おそらくそのまま)使うことが可能そうです。

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

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

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

ベースとするコードの記事
YOLOv8(YOLOv9)で独自データを使った学習と推論を実践(物体検出)
YOLOv8(YOLOv9)で独自データを使った学習と推論を実践(物体検出)

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

また、今回のコードは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に切り替える方法について説明しました。

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

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました