YOLOv10で鳥を見つけよう!Ultralyticsを使用した物体検出

はるか
はるか
今日はYOLOv10について動かしてみよう。
ふゅか
ふゅか
YOLOv10は最新の物体検出モデルで、リアルタイムでの精度がすごく高いんだよ!

1. モデルの概要

YOLOv10は、物体検出モデルで、NMS(非最大抑制)を排除し、効率と精度を高める新しいアーキテクチャを採用しています。このモデルは、画像内の物体をリアルタイムで正確に検出することを目指しており、従来のYOLOシリーズの欠点を克服しています。特徴抽出ではCSPNetを採用。

1.1. モデルの種類

YOLOv10-N, S, M, B, L, Xの各バージョンが存在し、様々な用途に対応。YOLOv10-Xが最も性能が良く、YOLOv10-Nはリソースが限られたときに使用することを想定している。

はるか
はるか
YOLOv10-Xは高性能で、YOLOv10-Nはリソースが限られている環境向け。

ふゅか
ふゅか
性能と環境を考慮して適切なモデルを選ぶ必要があるわね!

2. 物体検知

ふゅか
ふゅか
image.pngという画像を用意して物体検知を行ってみよう!

2.1. 環境

  • 画像生成AIで「かわせみ」っぽい鳥の画像を生成して使用
  • Windows11
  • RTX 4070Ti SUPER
  • Python 3.11.9

2.2. ライブラリ

次のコマンドでライブラリをインストールします。

pip install ultralytics

2.3. pythonコード

from ultralytics import YOLO

# モデルのロード
model = YOLO("yolov10x.pt")

# 画像の物体検出
results = model("image.jpg")
results[0].show()
  • ライブラリのインポート:
    • ultralyticsライブラリからYOLOクラスをインポート。
  • モデルのロード:
    • YOLOv10モデルをロード。
    • モデルの重みファイルを指定。モデルの重みは次のように選択可能。
モデル名 重み
YOLOv10-N yolov10n.pt
YOLOv10-S yolov10s.pt
YOLOv10-M yolov10m.pt
YOLOv10-B yolov10b.pt
YOLOv10-L yolov10l.pt
YOLOv10-X yolov10x.pt
  • 画像の物体検出:
    • 指定した画像ファイルに対して物体検出を実行。
    • 検出結果を変数に格納。
  • 結果の表示:
    • 検出結果のうち最初の結果を表示。

2.4. 実行結果

  • すべての結果でbirdであると判定
  • YOLOv10-Nだけ体全体をバウンディングボックスで囲むことができなかった。(しっぽの部分)
  • YOLOv10-Nが最も確率が低く判定(89%)された。
  • YOLOv10-X,Bが最も確率が高く判定(96%)された。

YOLOv10-N

YOLOv10-S

YOLOv10-M

YOLOv10-B

YOLOv10-L

YOLOv10-X

はるか
はるか
今回使用した画像の場合はYOLOv10-XとBが最も高い精度。

2.5. ほかのプログラム

results[0].speed

で実行にかっかたそれぞれの処理の時間を確認することができます。

{'preprocess': 1.1472702026367188,
 'inference': 73.80056381225586,
 'postprocess': 14.999866485595703}

3. 物体検出に関連する書籍

PR