Link to this sectionYOLOv5をカスタムデータで学習する#
📚 This guide explains how to train your own custom dataset using the YOLOv5 model 🚀. Training custom models is a fundamental step in tailoring computer vision solutions to specific real-world applications beyond generic object detection.
Link to this section始める前に#
まず、必要な環境がセットアップされていることを確認してください。YOLOv5 リポジトリをクローンし、requirements.txt から必要な依存関係をインストールします。Python>=3.8.0 環境と PyTorch>=1.8 が不可欠です。モデルとデータセットは、ローカルで見つからない場合、最新の YOLOv5 release から自動的にダウンロードされます。
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependenciesLink to this sectionカスタムデータでの学習#
カスタム オブジェクト検出 モデルの開発は、反復的なプロセスです。
- 画像の収集と整理: 特定のタスクに関連する画像を収集します。高品質で多様なデータが非常に重要です。データ収集とアノテーション に関するガイドを参照してください。
- オブジェクトにラベルを付ける: 画像内の対象オブジェクトに正確にアノテーションを施します。
- モデルのトレーニング: ラベル付けされたデータを使用して YOLOv5 モデルを トレーニング します。事前トレーニング済み重みから開始することで、転移学習 を活用します。
- デプロイと予測: トレーニング済みのモデルを使用して、新しい未知のデータに対する 推論 を行います。
- エッジケースを収集する: モデルのパフォーマンスが低いシナリオ(edge cases)を特定し、同様のデータをデータセットに追加して堅牢性を向上させます。このサイクルを繰り返します。
Ultralytics Platform は、データセット管理、モデルのトレーニング、デプロイを含む、この一連の 機械学習運用 (MLOps) サイクルに対して、コードを必要としない効率的なソリューションを提供します。
Ultralytics は、多様な使用シナリオに対応するため、2つのライセンスオプションを提供しています:
- AGPL-3.0 License: この OSI-approved オープンソースライセンスは、オープンなコラボレーションと知識共有に情熱を持つ学生、研究者、愛好家に最適です。派生作品は同じライセンスの下で共有する必要があります。詳細については、LICENSE ファイルを参照してください。
- Enterprise License: 開発および商用利用向けに、このライセンスでは Ultralytics ソフトウェアと AI モデルをビジネス製品やサービスにシームレスに統合できます(社内ツール、自動ワークフロー、本番環境へのデプロイを含みます)。AGPL-3.0 のオープンソース要件を回避できます。開始するには、Ultralytics Licensing からお問い合わせください。
Ultralytics Licensing ページで、ライセンスオプションの詳細をご覧ください。
学習を開始する前に、データセットの準備が不可欠です。
Link to this section1. データセットを作成する#
YOLOv5 モデルがオブジェクトクラスの視覚的特徴を学習するには、ラベル付けされたデータが必要です。データセットを適切に整理することが鍵となります。
Link to this section1.1 dataset.yaml を作成する#
データセット構成ファイル(例: coco128.yaml)は、データセットの構造、クラス名、画像ディレクトリへのパスを定義します。COCO128 は、大規模な COCO データセットの最初の128画像で構成される小さなサンプルデータセットです。これは、トレーニングパイプラインを迅速にテストしたり、過学習 などの潜在的な問題を診断したりするのに役立ちます。
dataset.yaml ファイルの構造には以下が含まれます:
path: データセットを含むルートディレクトリ。train,val,test:pathからの相対パスで、画像または学習、検証、テストセットの画像パスをリストしたテキストファイルが保存されているディレクトリ。names: クラスインデックス(0から開始)とそれに対応するクラス名をマッピングする辞書。
path は絶対ディレクトリ(例:/home/user/datasets/coco128)に設定するか、YOLOv5 リポジトリのルートから学習を開始する場合は ../datasets/coco128 のような相対パスに設定できます。
以下は coco128.yaml の構造です(view on GitHub):
# Dataset root directory relative to the yolov5 directory
path: 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: toothbrushLink to this section1.2 自動ラベル付けのためのモデルを活用する#
手動ラベル付けは一般的ですが、時間がかかります。ファウンデーションモデルは、アノテーションを自動化または半自動化し、データセット作成を高速化できます。ラベル生成に役立つモデルの例:
- Google Gemini: Gemini のような大規模マルチモーダルモデルは、強力な画像理解能力を持っています。プロンプトを使用して画像内のオブジェクトを特定・配置し、YOLO 形式のラベルに変換できる境界ボックスや説明を生成できます。付属のチュートリアルノートブックでその可能性を探ってください。
- SAM2 (Segment Anything Model 2): SAM2 のようなセグメンテーションに特化した基盤モデルは、高精度でオブジェクトを識別し、輪郭を描くことができます。主にセグメンテーション用ですが、生成されたマスクは、多くの場合、オブジェクト検出タスクに適した境界ボックスアノテーションに変換できます。
- YOLOWorld: このモデルは、オープンボキャブラリー検出機能を提供します。関心のあるオブジェクトのテキスト説明を提供すると、YOLOWorld はそれらの特定のクラスについて事前のトレーニングを行うことなく、画像内でそれらを見つけることができます。これは初期ラベルの生成の開始点として使用でき、その後、精緻化することが可能です。
これらのモデルを使用することで「事前ラベル付け」ステップを提供し、手作業を減らすことができます。ただし、自動生成されたラベルは、その品質が学習した YOLOv5 モデルのパフォーマンスに直接影響するため、正確性と一貫性を確保するために確認および修正することが不可欠です。ラベルを生成(および場合によっては精緻化)した後、それらが YOLO format に準拠していることを確認してください:画像ごとに *.txt ファイルを1つ作成し、各行は class_index x_center y_center width height(正規化された座標、0から始まるクラスインデックス)としてオブジェクトを表します。画像に対象のオブジェクトがない場合、対応する *.txt ファイルは不要です。
YOLO 形式の *.txt ファイルの仕様は以下の通りです:
- オブジェクト bounding box ごとに1行。
- 各行には以下を含める必要があります:
class_index x_center y_center width height。 - 座標は 0 から 1 の範囲に normalized されている必要があります。これを行うには、
x_centerとwidthのピクセル値を画像の合計幅で割り、y_centerとheightを画像の合計高さで割ります。 - クラスインデックスは 0 から始まります(つまり、最初のクラスは
0、2番目は1など)。

上記の画像に対応するラベルファイル('person' オブジェクト2つ(クラスインデックス 0)と 'tie' オブジェクト1つ(クラスインデックス 27)を含む)は、次のようになります:

Link to this section1.3 ディレクトリを整理する#
Structure your datasets directory as illustrated below. By default, YOLOv5 anticipates the dataset directory (e.g., /coco128) to reside within a /datasets folder located adjacent to the /yolov5 repository directory.
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)
└── ...
Link to this section2. モデルを選択する#
Choose a pretrained model to initiate the training process. Starting with pretrained weights significantly accelerates learning and improves performance compared to training from scratch. YOLOv5 offers various model sizes, each balancing speed and accuracy differently. For example, YOLOv5s is the second-smallest and fastest model, suitable for resource-constrained environments. Consult the README table for a detailed comparison of all available models.

Link to this section3. 学習#
Begin the model training using the train.py script. Essential arguments include:
--img: 入力 画像サイズ を定義します(例:--img 640)。サイズが大きいほど一般的に精度は向上しますが、より多くの GPU メモリが必要になります。--batch: batch size を決定します(例:--batch 16)。GPU が処理できる最大サイズを選択してください。--epochs: 学習 epochs の合計数を指定します(例:--epochs 100)。1エポックは、学習データセット全体に対する1回の完全なパスを表します。--data:dataset.yamlファイルへのパス(例:--data coco128.yaml)。--weights: 初期重みファイルへのパス。高速な収束と優れた結果のために、事前学習済みの重み(例:--weights yolov5s.pt)の使用を強く推奨します。ゼロから学習する場合(非常に大規模なデータセットがあり、特定のニーズがある場合を除き非推奨)、--weights '' --cfg yolov5s.yamlを使用します。
事前学習済みの重みは、ローカルで見つからない場合、latest YOLOv5 release から自動的にダウンロードされます。
# 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 (入出力) 操作がボトルネックになっている場合、学習が劇的に高速化されます。これにはかなりの RAM またはディスク容量が必要であることに注意してください。
💡 常にローカルに保存されたデータセットを使用して学習してください。ネットワークドライブ(Google Driveなど)やリモートストレージからのデータアクセスは、大幅に遅くなる可能性があり、学習パフォーマンスを妨げる可能性があります。データセットをローカル SSD にコピーするのがベストプラクティスです。
重みやログを含むすべての学習出力は、runs/train/ ディレクトリに保存されます。各学習セッションは新しいサブディレクトリを作成します(例:runs/train/exp, runs/train/exp2 など)。インタラクティブで実践的な体験については、公式チュートリアルノートブックの学習セクションをご覧ください:
Link to this section4. 可視化#
YOLOv5 は、学習の進捗状況を可視化し、結果を評価し、パフォーマンスをリアルタイムで監視するためのさまざまなツールとシームレスに統合されています。
Link to this sectionComet のログ記録と可視化#
Comet は、包括的な実験追跡のために完全に統合されています。メトリクスをライブで視覚化し、ハイパーパラメータを保存し、データセットとモデルのチェックポイントを管理し、インタラクティブな Comet Custom Panels を使用してモデルの予測を分析します。
開始は簡単です:
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 Colab ノートブックをお試しください:
Link to this sectionClearML のログ記録と自動化#
ClearML 統合により、詳細な実験追跡、データセットバージョン管理、さらにはトレーニング実行のリモート実行が可能になります。以下の簡単な手順で ClearML を有効にしてください。
- パッケージをインストールします:
pip install clearml - ClearML を初期化します:
clearml-initを1回実行して、ClearML サーバー(セルフホストまたは free tier)に接続します。
ClearML は実験の詳細、モデルのアップロード、比較、コミットされていないコードの変更、およびインストールされたパッケージを自動的にキャプチャし、完全な再現性を保証します。ClearML Data を使用して、リモートエージェントでのトレーニングタスクのスケジュール設定やデータセットのバージョン管理を簡単に行うことができます。詳細については、ClearML 統合ガイド を探索してください。
Link to this sectionローカルでのログ記録#
Training results are automatically logged using TensorBoard and saved as CSV files within the specific experiment directory (e.g., runs/train/exp). Logged data includes:
- 学習と検証の損失、およびパフォーマンス指標。
- 適用された拡張(モザイクなど)を示すサンプル画像。
- 視覚的検査のための、モデル予測と並んだ正解ラベル。
- Precision-Recall (PR) 曲線などの重要な評価指標。
- 詳細なクラスごとのパフォーマンス分析のための Confusion matrices。
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
Link to this section5. 次のステップ#
学習が正常に完了すると、最もパフォーマンスの高いモデルチェックポイント(best.pt)が保存され、デプロイやさらなる調整の準備が整います。考えられる次のステップは以下の通りです:
- Run inference on new images or videos using the trained model via the CLI or Python.
- Perform validation to evaluate the model's accuracy and generalization capabilities on different data splits (e.g., a held-out test set).
- Export the model to various deployment formats like ONNX, TensorFlow SavedModel, or TensorRT for optimized inference on diverse platforms.
- 追加のパフォーマンス向上を引き出すために、ハイパーパラメータチューニング 技術を採用します。
- 「トレーニング結果を最高にするためのヒント」に従い、パフォーマンス分析に基づいて、より多様で困難なデータを反復的に追加することで、モデルの改善を継続します。
Link to this sectionサポートされている環境#
Ultralytics は、CUDA、cuDNN、Python、PyTorch などの主要な依存関係を備えたすぐに使用できる環境を提供し、スムーズな開始をサポートします。
- 無料の GPU ノートブック:
- クラウドプラットフォーム:
- Google Cloud: GCP クイックスタートガイド
- Amazon AWS: AWS クイックスタートガイド
- Microsoft Azure: AzureML クイックスタートガイド
- ローカルセットアップ:
- Docker: Docker クイックスタートガイド
- Docker: Docker クイックスタートガイド
Link to this sectionプロジェクトの状態#
このバッジは、すべての YOLOv5 GitHub Actions 継続的インテグレーション (CI) テストが正常に通過していることを示します。これらの厳格な CI テストは、macOS、Windows、Ubuntu オペレーティングシステム全体にわたり、トレーニング、検証、推論、エクスポート、ベンチマーク を含むコア機能をカバーしています。テストは24時間ごと、および各コードコミットごとに自動的に実行され、一貫した安定性と最適なパフォーマンスを確保しています。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionYOLOv5をカスタムデータセットでトレーニングするにはどうすればよいですか?#
カスタムデータセットでのYOLOv5のトレーニングには、いくつかの重要なステップが含まれます:
- データセットの準備: 画像を収集し、アノテーションを付けます。アノテーションが必要な YOLO 形式 になっていることを確認してください。画像とラベルを
train/およびval/(およびオプションでtest/)ディレクトリに整理します。Google Gemini、SAM2、または YOLOWorld のようなモデルを使用して、ラベル付けプロセスを支援または自動化することを検討してください(セクション1.2を参照)。 - 環境のセットアップ:YOLOv5リポジトリをクローンし、
pip install -r requirements.txtを使用して依存関係をインストールします。git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt - データセット設定の作成:
dataset.yamlファイルでデータセットのパス、クラス数、およびクラス名を定義します。 - トレーニング開始:
train.pyスクリプトを実行し、dataset.yamlへのパス、希望する事前学習済みウェイト(例:yolov5s.pt)、画像サイズ、バッチサイズ、エポック数を指定します。python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
Link to this sectionYOLOモデルのトレーニングにUltralytics Platformを使用すべき理由は何ですか?#
Ultralytics Platform は、コードを記述することなく、YOLO モデル開発のライフサイクル全体を効率化するように設計された包括的なプラットフォームです。主な利点は次のとおりです。
- トレーニングの簡素化:事前構成済みの環境と直感的なユーザーインターフェースを使用して、モデルを簡単にトレーニングできます。
- 統合されたデータ管理:データセットのアップロード、バージョン管理、管理をプラットフォーム内で効率的に行えます。
- リアルタイム監視: Comet や TensorBoard などの統合ツールを使用して、トレーニングの進行状況を追跡し、パフォーマンス指標を視覚化します。
- コラボレーション機能:共有リソース、プロジェクト管理ツール、容易なモデル共有を通じてチームワークを促進します。
- ノーコードデプロイメント:トレーニング済みのモデルを様々なターゲットに直接デプロイします。
実践的なチュートリアルについては、ブログ記事「How to Train Your Custom Models with Ultralytics Platform」をご覧ください。
Link to this sectionアノテーション済みのデータをYOLOv5形式に変換するにはどうすればよいですか?#
手動でアノテーションを行う場合でも、自動ツール(セクション1.2で言及したもの)を使用する場合でも、最終的なラベルはYOLOv5が必要とする特定のYOLO形式である必要があります:
- Create one
.txtfile for each image. The filename should match the image filename (e.g.,image1.jpgcorresponds toimage1.txt). Place these files in alabels/directory parallel to yourimages/directory (e.g.,../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から始まる値です(最初のクラスは
0、2番目は1など)。
多くの手動アノテーションツールは、YOLO 形式への直接エクスポートを提供しています。自動化されたモデルを使用する場合、その出力(例: 境界ボックス座標、セグメンテーションマスク)をこの特定の正規化されたテキスト形式に変換するためのスクリプトまたはプロセスが必要になります。最終的なデータセット構造がガイドで提供されている例に従っていることを確認してください。詳細については、「データ収集とアノテーションガイド」を参照してください。
Link to this section商用アプリケーションでYOLOv5を使用するためのライセンスオプションは何ですか?#
Ultralyticsは、異なるニーズに合わせて柔軟なライセンスを提供しています:
- AGPL-3.0ライセンス:このオープンソースライセンスは、学術研究、個人プロジェクト、およびオープンソースのコンプライアンスが許容される状況に適しています。修正および派生作品もAGPL-3.0の下でオープンソース化することを義務付けています。AGPL-3.0ライセンスの詳細を確認してください。
- エンタープライズライセンス:YOLOv5を独自製品やサービスに統合する企業向けに設計された商用ライセンスです。このライセンスはAGPL-3.0のオープンソース義務を解除し、クローズドソースとしての配布を可能にします。詳細については、ライセンスページをご覧いただくか、エンタープライズライセンスをリクエストしてください。
プロジェクトの要件と配布モデルに最も適したライセンスを選択してください。
