YOLOの理解: 仕組みとサンプルコード

YOLOの概要

YOLO (You Only Look Once) は、速度と精度のバランスに優れた最先端の物体検出アルゴリズムです。Faster R-CNNのような従来の手法とは異なり、YOLOは物体検出を単一の回帰問題として処理し、一度の前方伝播でバウンディングボックスとクラス確率を予測します。

このブログでは、YOLOの仕組みを解説し、YOLOv8を使ったサンプルコードを紹介します。


YOLOの仕組み

1. グリッドベースの予測

YOLOは画像をS x Sのグリッドに分割し、それぞれのグリッドセルが以下を予測します:

  • バウンディングボックス (x, y, 幅, 高さ)
  • 信頼度スコア
  • クラス確率

各セルは、中心がそのセル内にある物体の検出を担当します。

2. 単一のニューラルネットワークによる処理

  • YOLOはR-CNNのような領域提案ネットワークとは異なり、一度の処理で画像全体を解析します。
  • これにより、高速な処理を実現しつつ、十分な精度を維持します。

3. バウンディングボックスのフィルタリング

YOLOはNon-Maximum Suppression (NMS) を適用し、重複するバウンディングボックスを削除し、最も信頼度の高い予測結果のみを保持します。


YOLOv8のインストール

YOLOを使用するには、Ultralytics YOLOライブラリをインストールします:

pip install ultralytics

サンプルコード: 画像でYOLOを実行する

1. ライブラリのインポート

from ultralytics import YOLO
import cv2
import matplotlib.pyplot as plt

2. YOLOモデルの読み込み

# 事前学習済みのYOLOv8モデルをロード
model = YOLO("yolov8n.pt")  # 'n' (nano) は最小モデル; 他に's', 'm', 'l', 'x'が利用可能

3. 画像でYOLOを実行

# 画像を用いたYOLOの実行
image_path = "test.jpg"  # 画像パスを指定
results = model(image_path)

# 検出結果の表示
results.show()

4. Matplotlibを使った結果の表示

# OpenCV形式に変換して表示
for result in results:
    img = result.plot()  # バウンディングボックスの描画
    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.axis("off")
    plt.show()

5. 検出オブジェクトの情報取得

# 検出されたオブジェクトの情報を取得
for result in results:
    for box in result.boxes:
        print(f"クラス: {model.names[int(box.cls)]}, 信頼度: {box.conf.item()}, バウンディングボックス: {box.xyxy.tolist()}")

動画でYOLOを実行 (Webカメラまたは動画ファイル)

# 動画を開く (0はWebカメラ、または動画ファイルパスを指定)
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # YOLOの適用
    results = model(frame)

    # フレームに結果を描画
    frame = results[0].plot()

    # フレームを表示
    cv2.imshow("YOLOv8 Detection", frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

YOLOの応用例

  • 監視・セキュリティ (武器検出、顔認識)
  • 自動運転 (リアルタイム物体検出)
  • 小売・倉庫管理 (自動チェックアウト、在庫監視)
  • 医療分野 (がん検出、診断支援)
  • ドローン・ロボティクス (物体追跡、監視)
  • 野生動物保護 (絶滅危惧種の監視、密猟防止)
  • 農業 (作物の病気検出、家畜のカウント、植物の健康管理)
  • 製造業・品質管理 (生産ラインの欠陥検出)
  • スポーツ分析 (プレイヤーの動きやボールの軌道追跡)

まとめ

YOLOは、高速かつ高精度なリアルタイム物体検出モデルであり、様々な分野で活用されています。物体を一度の処理で検出できるため、セキュリティ、自動運転、医療、産業、農業など、幅広い分野での利用が可能です。

カスタムデータセットでYOLOをトレーニングしたいですか?次回のガイドをお楽しみに! 🚀

Related Posts

Articles

Our Products


Related Posts

Articles

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand