コンテンツへスキップ

カスタムデータでYOLOv5 トレーニングする

📚 このガイドでは、YOLOv5を使用して独自のカスタムデータセットをトレーニングする方法を説明します。 YOLOv5モデル 🚀 を使って独自のカスタムデータセットをトレーニングする方法を説明します。カスタムモデルのトレーニングは、一般的な物体検出だけでなく、特定の実世界のアプリケーションに合わせてコンピュータビジョンソリューションを調整するための基本的なステップです。

始める前に

まず、必要な環境が整っていることを確認する。YOLOv5 リポジトリをクローンし、必要な依存関係を以下からインストールする。 requirements.txt.A Python.8.0 環境 PyTorch.8 が不可欠です。モデルとデータセットは、最新のYOLOv5自動的にダウンロードされます。 リリース ローカルにない場合

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

カスタムデータでトレーニング

データ収集、ラベリング、トレーニング、デプロイメント、エッジケース収集を示すUltralytics アクティブラーニングループ図

カスタムオブジェクト検出モデルの開発は、反復プロセスである:

  1. 画像の収集と整理特定のタスクに関連する画像を集める。高品質で多様なデータが重要です。データ収集と注釈に関するガイドをご覧ください。
  2. オブジェクトにラベルを付ける:画像内の対象物に正確に注釈を付けます。
  3. モデルをトレーニングするラベル付きデータを使ってYOLOv5 モデルをトレーニングする。事前に学習した重みから始めることで、転移学習を活用します。
  4. 展開と予測:新しい未知のデータに対する推論に学習済みモデルを活用する。
  5. エッジケースを収集する:モデルのパフォーマンスが低いシナリオ(エッジケース)を特定し、ロバスト性を向上させるために類似のデータをデータセットに追加する。このサイクルを繰り返す。

Ultralytics HUBは、データセット管理、モデルトレーニング、デプロイメントを含む、機械学習オペレーション(MLOps)サイクル全体に対して、合理化されたコード不要のソリューションを提供します。

ライセンス

Ultralytics 、多様な使用シナリオに対応するため、2つのライセンスオプションを提供しています:

  • AGPL-3.0 ライセンス:このOSI認可のオープンソースライセンスは、オープンなコラボレーションと知識の共有に情熱的な学生、研究者、そして熱狂的なファンにとって理想的です。派生作品が同じライセンスのもとで共有されることを要求します。詳細はLICENSEファイルをご覧ください。
  • エンタープライズライセンス:商用向けに設計されたこのライセンスは、AGPL-3.00のオープンソースの規定なしに、Ultralytics ソフトウェアとAIモデルを商用製品やサービスにシームレスに統合することを許可します。商用展開が必要なプロジェクトの場合は、エンタープライズライセンスをお申し込みください。

ライセンスオプションについては、Ultralytics ライセンスページをご覧ください。

トレーニングを開始する前に、データセットの準備が不可欠である。

1.データセットを作成する

YOLOv5 モデルは、オブジェクトクラスの視覚的特徴を学習するためにラベル付きデータを必要とします。データセットを正しく整理することが重要です。

1.1 作成 dataset.yaml

データセット設定ファイル(例. coco128.yaml)は、データセットの構造、クラス名、画像ディレクトリへのパスの概要を示している。 COCO128 の最初の128枚の画像で構成される。 COCO データセットを使用します。トレーニングパイプラインを素早くテストし、以下のような潜在的な問題を診断するのに便利です。 オーバーフィッティング.

について dataset.yaml ファイル構造には以下が含まれる:

  • path:データセットを含むルートディレクトリ。
  • train, val, test:からの相対パス path には、画像を含むディレクトリ、またはトレーニング、検証、テストセットの画像パスをリストしたテキストファイルを指定します。
  • names:クラスのインデックス(0から始まる)と対応するクラス名をマッピングした辞書。

以下はその構成である。 coco128.yaml (GitHubで見る):

# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 自動ラベリングのためのモデルの活用

ツールを使った手作業によるラベリングは一般的なアプローチだが、そのプロセスには時間がかかる。最近の基礎モデルの進歩は、アノテーションプロセスを自動化または半自動化する可能性を提供し、データセット作成を大幅にスピードアップできる可能性がある。ここでは、ラベル生成を支援するモデルの例をいくつか紹介する:

  • Google :Geminiのような大規模なマルチモーダルモデルは、強力な画像理解能力を持っている。Geminiは、画像内のオブジェクトを識別し、位置を特定し、バウンディングボックスやYOLO フォーマットのラベルに変換可能な説明を生成するよう促すことができる。提供されているチュートリアルノートブックで、その可能性を探ってみてください。
  • SAM2 (セグメント何でもモデル2):SAM2ようなセグメンテーションに特化した基礎モデルは、高精度でオブジェクトを識別し、線を引くことができる。主にセグメンテーションのために使用されますが、結果として得られるマスクは、オブジェクト検出タスクに適したバウンディングボックスアノテーションに変換できることがよくあります。
  • YOLOWorld:このモデルはオープン語彙検出機能を提供します。YOLOWorldは、事前に特定のクラスについて学習することなく、画像内のオブジェクトを見つけることができます。これは初期ラベルを生成するための出発点として使用でき、その後ラベルを改良することができます。

これらのモデルを使用することで、「事前ラベリング」ステップを提供し、必要な手作業を減らすことができます。しかし、自動生成されたラベルの正確さと一貫性を確保するために、自動生成されたラベルを見直し、改良することは非常に重要です。ラベルを生成した後(そして場合によっては改良した後)、そのラベルが次のラベルに準拠していることを確認します。 YOLO フォーマット: one *.txt 各行がオブジェクトを表します。 class_index x_center y_center width height (正規化座標、ゼロインデックスクラス)。画像に注目すべきオブジェクトがない場合、対応する *.txt ファイルが必要である。

YOLO フォーマット *.txt ファイルの仕様は正確である:

  • オブジェクトのバウンディングボックスごとに1行。
  • 各行には、以下の内容が含まれていなければならない: class_index x_center y_center width height.
  • 座標は ノーマライズド のピクセル値を0から1の間の範囲に分割する。 x_center そして width を画像の全幅で割る。 y_center そして height を画像の全高で割る。
  • クラス・インデックスはゼロ・インデックスである(つまり、最初のクラスは 02番目は 1など)。

2人の人物とネクタイの注釈付き画像例

上の画像に対応するラベルファイルで、2つの'person'オブジェクト(クラスインデックス 0)と1つの「タイ」オブジェクト(クラスインデックス 27)、次のようになる:

アノテーション画像のYOLO 形式ラベルファイルの内容例

1.3 ディレクトリの整理

あなたの行動を構造化する データセット ディレクトリを指定する。デフォルトでは、YOLOv5 5はデータセット・ディレクトリ(例. /coco128)内に存在する。 /datasets フォルダ 隣接する その /yolov5 リポジトリディレクトリにあります。

YOLOv5 、各画像のラベルの位置を自動的に特定するために、最後のインスタンス /images/ を画像パスに /labels/.例えば:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

推奨されるディレクトリ構造は以下の通り:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

推奨されるYOLOv5 データセットのディレクトリ構造を示す図

2.モデルの選択

事前学習済みのモデルを選択して、学習プロセスを開始します。事前に訓練された重みで開始することで、ゼロからトレーニングするよりも学習が大幅に加速し、パフォーマンスが向上します。YOLOv5 様々なサイズのモデルがあり、それぞれスピードと精度のバランスが異なります。例えば、YOLOv5sは2番目に小さく、最も高速なモデルで、リソースに制約のある環境に適している。利用可能なすべてのモデルの詳細な比較については、READMEの表を参照してください。

サイズ、スピード、精度を示すYOLOv5 モデルの比較表

3.電車

開始 モデルトレーニング を使用している。 train.py スクリプト。必須引数は以下の通り:

  • --img:入力を定義する 画像サイズ (例 --img 640).一般に、サイズが大きいほど精度は高くなるが、GPU メモリがより多く必要になる。
  • --batch:を決定する。 バッチサイズ (例 --batch 16).GPU 処理できる最大のサイズを選んでください。
  • --epochs:トレーニングの合計回数を指定する。 時代 (例 --epochs 100).1エポックは、全トレーニングデータセットに対するフルパスを表す。
  • --data:あなたへの道 dataset.yaml ファイル(例. --data coco128.yaml).
  • --weights:初期重みファイルへのパス。事前に学習された重み(例. --weights yolov5s.ptを使うことを強く推奨する。ゼロから学習するには(非常に大きなデータセットと特定のニーズがない限り、お勧めしません)、以下を使用します。 --weights '' --cfg yolov5s.yaml.

事前に訓練された重みは、ローカルに見つからない場合は、最新のYOLOv5 リリースから自動的にダウンロードされます。

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt

トレーニングスピードの最適化

💡 採用する --cache ram または --cache disk にデータセット画像をキャッシュする。 RAM またはローカルディスクにそれぞれ保存される。これにより、特にデータセットのI/O(Input/Output)操作がボトルネックになっている場合、トレーニングが劇的に高速化される。ただし、これにはかなりのRAMまたはディスク容量が必要である。

ローカル・データ・ストレージ

💡 常にローカルに保存されたデータセットを使用してトレーニングしてください。ネットワークドライブ(Google Driveなど)やリモートストレージからデータにアクセスすると、著しく遅くなり、トレーニングのパフォーマンスに支障をきたす可能性があります。データセットをローカルのSSDにコピーすることがベストプラクティスです。

重みとログを含むすべてのトレーニング出力は runs/train/ ディレクトリを作成する。トレーニングセッションごとに、新しいサブディレクトリが作成される(例. runs/train/exp, runs/train/exp2など)。インタラクティブで実践的な体験については、公式チュートリアルノートブックのトレーニングセクションをご覧ください: オープン・イン・コラボ Kaggleで開く

4.視覚化する

YOLOv5 、トレーニングの進捗状況を可視化し、結果を評価し、リアルタイムでパフォーマンスを監視するための様々なツールとシームレスに統合されています。

Comet ロギングとビジュアライゼーション 🌟 NEW

Cometは、包括的な実験追跡のために完全に統合されています。メトリクスをライブで可視化し、ハイパーパラメータを保存し、データセットとモデルのチェックポイントを管理し、インタラクティブなComet カスタムパネルを使ってモデルの予測を分析します。

始めるのは簡単だ:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

サポートされている機能については Comet 統合ガイド.Comet能力については、オフィシャルサイトをご覧ください。 ドキュメンテーション.Comet ライブデモをお試しください: オープン・イン・コラボ

YOLOv5 トレーニングメトリクスとビジュアライゼーションを表示するComet UI

ClearML ロギングと自動化 🌟 NEW

ClearMLの統合により、詳細な実験の追跡、データセットのバージョン管理、さらにはトレーニング実行のリモート実行が可能になります。以下の簡単なステップでClearML 有効にします:

  • パッケージをインストールする: pip install clearml
  • ClearML初期化します:実行 clearml-init ClearML 接続します。 フリー・ティア).

ClearML 、実験の詳細、モデルのアップロード、比較、コミットされていないコードの変更、インストールされたパッケージを自動的に取得し、完全な再現性を保証します。ClearML Data を使用して、リモートエージェントのトレーニングタスクのスケジュールやデータセットのバージョン管理を簡単に行うことができます。包括的な詳細については、ClearML 統合ガイドを参照してください。

YOLOv5 トレーニング実行のチャートとログを表示するClearML 実験管理UI

ローカル・ロギング

トレーニング結果は テンソルボード として保存される。 シーエスブイ 特定の実験ディレクトリ内のファイル(例、 runs/train/exp).記録されたデータは以下の通り:

  • 訓練と検証の損失とパフォーマンス指標。
  • モザイクのような)オーグメンテーションを適用したサンプル画像。
  • グランドトゥルースのラベルとモデルの予測値を並べて視覚的に確認できる。
  • 精度- 再現率(PR)曲線などの主要な評価指標。
  • クラスごとの詳細なパフォーマンス分析のためのコンフュージョン・マトリックス

YOLOv5 トレーニングによるチャートと画像モザイクを含むローカルロギングの結果例

について results.csv ファイルはエポックごとに更新され、次のようにプロットされる。 results.png トレーニングが終了したらまた results.csv ファイルを、提供されているユーティリティ機能を使って手動で作成する:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

results.pngプロットの例:エポックにわたるmAP、precision、recall、lossのようなトレーニングメトリクスを示す。

5.次のステップ

トレーニングが正常に終了すると、最も成績の良いモデルのチェックポイント(best.pt)が保存され、配備やさらなる改良の準備が整った。次のステップとしては

対応環境

Ultralytics 、以下のような必要不可欠な依存関係を備えた、すぐに使える環境を提供します。 CUDAcuDNNPythonおよび PyTorchを搭載しており、スムーズなスタートが可能です。

プロジェクト状況

YOLOv5 継続的インテグレーション・ステータス・バッジ

このバッジは、すべてのYOLOv5 GitHub Actions 継続的インテグレーション(CI)テストが正常にパスしていることを示します。これらの厳格なCIテストは、macOS、Windows、Ubuntuの各OSにおいて、トレーニング検証推論エクスポートベンチマークなどのコア機能をカバーしています。テストは24時間ごと、および各コードのコミット時に自動的に実行され、一貫した安定性と最適なパフォーマンスを保証します。

よくあるご質問

よくある質問

カスタムデータセットでYOLOv5 をトレーニングするには?

カスタムデータセットでYOLOv5 トレーニングするには、いくつかの重要なステップがある:

  1. データセットを準備する:画像を収集し、注釈をつける。注釈が必要な範囲にあることを確認する。 YOLO フォーマット.画像とラベルを train/ そして val/ (オプションで test/)ディレクトリを使用する。のようなモデルの使用を検討してください。 Google 双子座, SAM2あるいは YOLOWorld を使用して、ラベリング作業を支援または自動化することができる(セクション1.2参照)。
  2. 環境を整える:YOLOv5 リポジトリをクローンし、以下の方法で依存関係をインストールする。 pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. データセット構成の作成:データセットのパス、クラス数、クラス名を定義する。 dataset.yaml ファイル。
  4. トレーニング開始:を実行する。 train.py スクリプトへのパスを指定します。 dataset.yamlまた、事前に訓練された重み(例. yolov5s.pt)、画像サイズ、バッチサイズ、エポック数。
    python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
    

YOLO モデルのトレーニングにUltralytics HUB を使うべき理由は?

Ultralytics HUBは、YOLO モデルの開発ライフサイクル全体を合理化するために設計された包括的なプラットフォームで、多くの場合、コードを書く必要はありません。主な利点は以下の通りです:

  • 簡素化されたトレーニング:設定済みの環境と直感的なユーザーインターフェイスを使用して、簡単にモデルをトレーニングできます。
  • 統合されたデータ管理:データセットのアップロード、バージョン管理、管理をプラットフォーム内で効率的に行えます。
  • リアルタイムのモニタリング:以下のような統合ツールを使用して、トレーニングの進捗状況を追跡し、パフォーマンス指標を視覚化します。 CometやTensorBoardなどの統合ツールを使用して、トレーニングの進捗状況を追跡し、パフォーマンス指標を可視化します。
  • コラボレーション機能:共有リソース、プロジェクト管理ツール、簡単なモデル共有により、チームワークを促進します。
  • ノーコード・デプロイメント:学習済みモデルを様々なターゲットに直接デプロイします。

実践的なウォークスルーについては、当社のブログ記事をご覧ください: Ultralytics HUBでカスタムモデルをトレーニングする方法

注釈付きデータをYOLOv5 フォーマットに変換するには?

手動で注釈をつけるにせよ、(セクション1.2で述べたような)自動化ツールを使うにせよ、最終的なラベルは、YOLOv5要求する特定のYOLO フォーマットでなければならない:

  • ひとつ作る .txt ファイルを各画像に追加します。ファイル名は画像のファイル名と一致する必要があります(例. image1.jpg に相当する。 image1.txt).これらのファイルを labels/ ディレクトリに平行して images/ ディレクトリ(例. ../datasets/mydataset/labels/train/).
  • 各行は .txt ファイルは1つのオブジェクト注釈を表し、その形式に従っている: class_index center_x center_y width height.
  • 座標center_x, center_y, width, heightでなければならない。 ノーマライズド (0.0から1.0の間の値) 画像の寸法に対する相対値。
  • クラス・インデックス ゼロベース (最初のクラスは 0もうひとつは 1など)。

多くの手動アノテーションツールは、YOLO フォーマットへの直接エクスポートが可能です。自動化されたモデルを使用する場合は、その出力(バウンディングボックス座標、セグメンテーションマスクなど)をこの特定の正規化テキストフォーマットに変換するスクリプトまたはプロセスが必要です。最終的なデータセットの構造が、ガイドに記載されている例に準拠していることを確認してください。詳細については、データ収集とアノテーションガイドを参照してください。

商用アプリケーションでYOLOv5 を使用する場合のライセンスオプションは?

Ultralytics 、様々なニーズに合わせた柔軟なライセンシングを提供します:

  • AGPL-3.0 ライセンス:このオープンソースライセンスは、学術研究、個人のプロジェクト、そしてオープンソースに従うことが容認される状況に適しています。改変や派生物もAGPL-3.0もとでオープンソースにすることを義務付けています。AGPL-3.0 ライセンスの詳細をご覧ください。
  • エンタープライズライセンス:YOLOv5 プロプライエタリな製品やサービスに統合するビジネスのために設計された商用ライセンス。このライセンスはAGPL-3.00のオープンソースの義務を取り除き、クローズドソースの配布を可能にします。詳細、またはエンタープライズライセンスのリクエストは、ライセンスページをご覧ください。

プロジェクトの要件と配布モデルに最適なライセンスを選択してください。



📅作成:1年前 ✏️更新:1ヶ月前

コメント