人工知能

YOLOv8 を解説:Ultralytics の革命的なコンピュータビジョンマスター

mm
Blog featured image for YOLOv8

これまで、コンピュータビジョンモデルを使用した画像内のオブジェクト検出には、数秒の遅延が発生し、実用的な採用が妨げられていました。しかし、Ultralytics がリリースした YOLOv8 コンピュータビジョンモデルは、この遅延を解消しました。新しいモデルは、前代未聞の精度と速度でリアルタイムにオブジェクトを検出できるため、コンピュータビジョンの分野で人気を博しています。

この記事では、YOLOv8、其の能力、そしてオープンソースの Github リポジトリを介してモデルを微調整し、独自のモデルを作成する方法について 探ります。

YOLOv8 の解説

YOLOv8-Ultralytics

YOLO (You Only Live Once) は、画像内のオブジェクトを検出およびセグメント化できる人気のコンピュータビジョンモデルです。モデルは過去に数回のアップデートがあり、YOLOv8 は 8 番目のバージョンです。

現在、YOLOv8 は以前のバージョンの能力を基にして、新しい強力な機能と改善を導入しています。これにより、画像およびビデオデータでリアルタイムのオブジェクト検出が可能になり、精度と精密さが向上しました。

バージョン 1 から 8 まで:歴史

YOLOv1 2015 年にリリースされた最初のバージョンは、シングルステージのオブジェクト検出モデルでした。モデルは画像全体を読み込んで、1 回の評価で各バウンディングボックスを予測しました。

YOLOv2 2016 年にリリースされた次のバージョンは、PASCAL VOC および COCO などのベンチマークで最高のパフォーマンスを示し、高速性 (67-40 FPS) を実現しました。また、9000 を超えるオブジェクトカテゴリを検出でき、特定の検出データが限られている場合でも正確に検出できました。

YOLOv3 2018 年にリリースされた YOLOv3 は、新しい機能を導入しました。より効果的なバックボーン ネットワーク、複数のアンカー、空間ピラミッド プーリングによるマルチスケール フィーチャー抽出などです。

YOLOv4 2020 年にリリースされた YOLOv4 では、新しいモザイク データ拡張技術が導入され、トレーニング能力が向上しました。

YOLOv5 2021 年にリリースされた YOLOv5 では、ハイパーパラメータ最適化や実験トラッキングの統合などの強力な新機能が追加されました。

YOLOv6 2022 年にリリースされた YOLOv6 では、コミュニティ主導の開発を促進するためにオープンソース化され、新しいセルフディスティレーション戦略やアンカー支援トレーニング (AAT) 戦略などの新機能が導入されました。

YOLOv7 同じ年にリリースされた YOLOv7 は、速度と精度が向上し、リリース当時最速のオブジェクト検出モデルでした。

YOLOv8 の特徴

Image showing vehicle detection

YOLOv8 の前代未聞の精度と高速性が、以前のバージョンと比較して際立つ特徴です。オブジェクトをリアルタイムで検出できるため、以前のバージョンとは異なり、遅延が発生しません。

しかし、それ以外にも、YOLOv8 には以下の強力な機能が含まれています:

  1. カスタマイズ可能なアーキテクチャ: YOLOv8 では、開発者が特定の要件に合わせてアーキテクチャをカスタマイズできます。
  2. 適応型トレーニング: YOLOv8 の新しい適応型トレーニング機能、たとえばトレーニング中の損失関数のバランスやテクニックの改善により、学習率が向上します。Adam などの手法により、精度、収束性、全体的なモデル性能が向上します。
  3. 高度な画像分析: 新しいセマンティックセグメンテーションとクラス予測機能により、モデルはオブジェクト検出以外に、活動、色、テクスチャ、オブジェクト間の関係などを検出できます。
  4. データ拡張: 新しいデータ拡張技術により、低解像度、オクルージョンなどの画像の変化に対処できます。
  5. バックボーンサポート: YOLOv8 では、CSPDarknet (デフォルトのバックボーン)、EfficientNet (軽量バックボーン)、ResNet (クラシックバックボーン) などの複数のバックボーンをサポートしています。

ユーザーは、CSPDarknet53 を他の YOLOv8 にとっての入力および出力次元と互換性のある CNN アーキテクチャに置き換えることで、バックボーンをカスタマイズできます。

YOLOv8 のトレーニングと微調整

YOLOv8 モデルは、特定のユースケースに合わせて微調整することも、完全にスクラッチからトレーニングすることもできます。トレーニング手順の詳細については、公式ドキュメントを参照してください。

以下に、両方の操作方法を説明します。

カスタムデータセットを使用した YOLOv8 の微調整

微調整操作では、既存のモデルをロードし、そのデフォルトの重みをトレーニングの開始点として使用します。直感的に言えば、モデルはすべての以前の知識を保持し、微調整操作では新しい情報を追加するために重みを調整します。

YOLOv8 モデルは、Python コードまたはコマンドライン インターフェイス (CLI) を使用して微調整できます。

1. Python を使用した YOLOv8 モデルの微調整

まず、Ultralytics パッケージをコードにインポートします。次に、トレーニングするカスタム モデルを以下のコードでロードします:

# Ultralytics パッケージを PyPI からインストール
pip install ultralytics

次に、Python ファイル内で以下のコードを実行します:

from ultralytics import YOLO

# モデルをロード
model = YOLO(‘yolov8n.pt’) # トレーニングに推奨される事前トレーニング済みモデル

# MS COCO データセットでモデルをトレーニング
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

デフォルトでは、コードは COCO データセットを使用して 100 エポックでモデルをトレーニングします。ただし、サイズ、エポックなどを YAML ファイルで設定することもできます。

モデルを設定とデータ パスでトレーニングした後、進捗状況を監視し、モデルをテストして調整し、目的の結果が得られるまで再トレーニングします。

2. CLI を使用した YOLOv8 モデルの微調整

CLI を使用してモデルをトレーニングするには、コマンドラインで以下のスクリプトを実行します:

yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640

CLI コマンドは、事前トレーニング済みの `yolov8n.pt` モデルをロードし、`coco8.yaml` ファイルで定義されたデータセットでトレーニングします。

YOLOv8 を使用した独自モデルの作成

YOLO フレームワークを使用して独自のモデルを作成する方法は、基本的に 2 つあります:

  • スクラッチからのトレーニング: このアプローチでは、YOLOv8 の事前定義されたアーキテクチャを使用しますが、事前トレーニング済みの重みは使用しません。トレーニングはスクラッチから行われます。
  • カスタム アーキテクチャ: YOLO のデフォルト アーキテクチャを調整し、トレーニングします。

両方の方法の実装は同じです。スクラッチから YOLO モデルをトレーニングするには、以下の Python コードを実行します:

from ultralytics import YOLO

# モデルをロード
model = YOLO(‘yolov8n.yaml’) # YAML から新しいモデルを構築

# モデルをトレーニング
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

この場合、`.yaml` ファイルを代わりにロードし、重みはロードされません。トレーニングコマンドは、このモデルをスクラッチからトレーニングを開始します。

カスタム アーキテクチャをトレーニングするには、`.yaml` ファイルでカスタム構造を定義し、同じコードを使用してモデルをトレーニングします。

AI を使用したオブジェクト検出についてさらに学び、最新の AI トレンドを把握するには、unite.ai を訪問してください。

Haziqaは、AIおよびSaaS企業向けの技術コンテンツの作成における豊富な経験を持つデータサイエンティストです。