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カスタムデータでの学習#
カスタム object detection モデルの開発は、反復的なプロセスです:
- 画像を収集・整理する: 特定のタスクに関連する画像を集めます。高品質で多様なデータが不可欠です。Data Collection and Annotation に関するガイドを参照してください。
- オブジェクトにラベルを付ける: 画像内の対象オブジェクトに正確にアノテーションを施します。
- モデルを学習する: ラベル付けされたデータを使用して、YOLOv5 モデルを train します。事前学習済みの重みから開始することで transfer learning を活用します。
- デプロイと予測: 学習済みモデルを使用して、新しい未見のデータに対する inference を行います。
- エッジケースを収集する: モデルのパフォーマンスが低いシナリオ(edge cases)を特定し、同様のデータをデータセットに追加して堅牢性を向上させます。このサイクルを繰り返します。
Ultralytics Platform は、データセット管理、モデル学習、デプロイメントを含む、この machine learning operations (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枚の画像からなる小さなサンプルデータセットです。これは、学習パイプラインを迅速にテストし、overfitting などの潜在的な問題を診断するのに役立ちます。
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: 入力 image size を定義します(例:--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 Integration Guide をご覧ください。Comet の機能の詳細については、公式 documentation を参照してください。ライブデモについては、Comet Colab ノートブックをお試しください:
Link to this sectionClearML のログ記録と自動化#
ClearML 統合により、詳細な実験追跡、データセットのバージョン管理、さらには学習実行のリモート実行が可能になります。以下の簡単な手順で ClearML を有効にします:
- パッケージをインストールします:
pip install clearml - ClearML の初期化:
clearml-initを一度実行して、ClearML サーバー(セルフホストまたは free tier)に接続します。
ClearML は、実験の詳細、モデルのアップロード、比較、コミットされていないコードの変更、インストールされているパッケージを自動的にキャプチャし、完全な再現性を確保します。ClearML Data を使用して、リモートエージェントでの学習タスクのスケジュールやデータセットバージョンの管理を簡単に行うことができます。詳細については、ClearML Integration Guide を参照してください。
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.
- validation を実行して、さまざまなデータ分割(例:ホールドアウトテストセット)に対するモデルの accuracy と一般化能力を評価します。
- Export モードを使用して、ONNX、TensorFlow SavedModel、または TensorRT などのさまざまなデプロイメント形式にモデルを変換し、多様なプラットフォームで最適化された推論を行います。
- hyperparameter tuning 技術を採用して、パフォーマンスをさらに引き出す可能性があります。
- Tips for Best Training Results に従い、パフォーマンス分析に基づいて多様で困難なデータを反復的に追加することで、モデルの改善を続けます。
Link to this sectionサポートされている環境#
Ultralytics は、CUDA、cuDNN、Python、PyTorch などの主要な依存関係を備えたすぐに使用できる環境を提供し、スムーズな開始をサポートします。
- 無料の GPU ノートブック:
- クラウドプラットフォーム:
- Google Cloud: GCPクイックスタートガイド
- Amazon AWS: AWS クイックスタートガイド
- Microsoft Azure: AzureML Quickstart Guide
- ローカルセットアップ:
- Docker: Docker Quickstart Guide
- Docker: Docker Quickstart Guide
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形式への直接エクスポートを提供しています。自動モデルを使用する場合は、出力(例:BBox座標、セグメンテーションマスク)をこの特定の正規化テキスト形式に変換するためのスクリプトやプロセスが必要です。最終的なデータセット構造がガイドで提供されている例に従っていることを確認してください。詳細については、データ収集とアノテーションのガイドを参照してください。
Link to this section商用アプリケーションでYOLOv5を使用するためのライセンスオプションは何ですか?#
Ultralyticsは、異なるニーズに合わせて柔軟なライセンスを提供しています:
- AGPL-3.0ライセンス:このオープンソースライセンスは、学術研究、個人プロジェクト、およびオープンソースのコンプライアンスが許容される状況に適しています。修正および派生作品もAGPL-3.0の下でオープンソース化することを義務付けています。AGPL-3.0ライセンスの詳細を確認してください。
- エンタープライズライセンス:YOLOv5を独自製品やサービスに統合する企業向けに設計された商用ライセンスです。このライセンスはAGPL-3.0のオープンソース義務を解除し、クローズドソースとしての配布を可能にします。詳細については、ライセンスページをご覧いただくか、エンタープライズライセンスをリクエストしてください。
プロジェクトの要件と配布モデルに最も適したライセンスを選択してください。
