YOLO26を使って物体検出をやってみる

📢 この記事は gemini-3-flash-preview によって翻訳されました

インストールと環境構築

公式のインストール参考: Installing conda - conda documentation

ダウンロードリンク: Download anaconda

Miniconda をダウンロードして、必要に応じて自分で環境を作るのもいいと思う。

実行環境を作成する:

1
conda create -n env_name python=3.13 -y

環境をアクティベートする:

1
conda activate env_name

PyTorch のインストール

CPU 版を使うなら、このコマンドをそのまま実行すればOK。

1
pip install torch torchvision torchaudio

GPU 版が必要な場合は公式サイトからダウンロードしてね。 https://pytorch.org/get-started/locally/ でインストールコマンドが確認できるよ。

CUDA のバージョンは、このコマンドで確認できる。

1
nvidia-smi

インストールが終わったら、ちゃんと使えるかチェックしてみよう。

1
2
3
import torch
print(f"GPUが使えるか: {torch.cuda.is_available()}")
print(f"現在のGPU: {torch.cuda.get_device_name(0)}")

画像のアノテーション

ローカルでちょっとしたアノテーションをやるなら labelImg が手軽。pip でインストールできるよ。

1
pip install labelImg

そんで、このコマンドで GUI ウィンドウを開いて使う。

1
labelImg

画像のパスとアノテーションの保存先を選ぶのを忘れないで。あと、データ形式を YOLO に切り替えるのも大事。

W キー(大文字の W)を押すと、新しいアノテーションを作成できるよ。

モデルの学習

YOLO26 公式ドキュメント: Ultralytics YOLO26

YOLO をインストール:

1
pip install ultralytics

モデル学習用のコード:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from ultralytics import YOLO

def main():
    # COCOで学習済みの YOLO26n モデルをロード
    model = YOLO("yolo26n.pt")

    # 指定したデータセットで 50 エポック学習させる
    results = model.train(data="data.yaml", epochs=50, imgsz=640, device=0)

if __name__ == '__main__':
    main()

データの定義ファイル data.yaml

1
2
3
4
5
6
7
path: ../my_dataset  # データセットのルートディレクトリへの相対パス
train: images/train  # 訓練データの場所
val: images/val      # 検証データの場所

names:
  0: name1            # クラス0:name1
  1: name2            # クラス1:name2

学習結果(成果物)

学習が終わると、runs/detect の中にいろいろファイルが出来上がるよ。

weights/ フォルダの中にあるのがモデルファイル。

  • best.pt:精度が一番良かった重み
  • last.pt:最後の学習ステップの重み

グラフ類:

  • results.png:学習の損失 (Loss) と精度指標 (mAP) をまとめたもの
    • 曲線が右肩上がりならまだ学習中、平らになってきたら学習が十分に行き届いた(収束した)ってこと。
  • confusion_matrix.png:混同行列。モデルが物体を背景と間違えたり、別のものと誤認したりした確率がわかるよ。
    • 対角線が明るいほど、正しく識別できている証拠。
  • Box*_curve.png:それぞれ適合率 (Precision)、再現率 (Recall)、そしてそのバランス曲線。
  • labels.jpg:全アノテーションの統計グラフ。ボックスのサイズの分布やクラスの比率が見れる。

画像アノテーションの結果:

  • train_batch*.jpg:学習時に実際に使われた画像。
  • val_batch*_labels.jpg:検証用のアノテーション画像。
  • val_batch*_pred.jpg:モデルによる予測結果。

その他のファイル:

  • args.yaml:今回の学習で使った全パラメータ設定。次回の再現に便利。
  • results.csvresults.png の元データ。

モデルを使ってみる

1
2
3
4
5
# モデルをロード
model = YOLO('runs/detect/train/weights/best.pt')

# 予測を実行
results = model.predict(source='new_chicken_video.mp4', save=True)
This post is licensed under CC BY-NC-SA 4.0 by the author.

Visits Since 2025-02-28

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。