YOLOv5をカスタムデータで学習する
📚 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.
始める前に
まず、必要な環境が設定されていることを確認してください。YOLOv5リポジトリをクローンし、requirements.txtから必要な依存関係をインストールします。Python>=3.8.0環境とPyTorch>=1.8が必須です。モデルやデータセットがローカルに見つからない場合、最新のYOLOv5 リリースから自動的にダウンロードされます。
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependenciesカスタムデータで学習する
カスタム物体検出モデルの開発は、反復的なプロセスです:
- 画像の収集と整理: 特定のタスクに関連する画像を集めます。高品質で多様なデータが重要です。データ収集とアノテーションに関するガイドを参照してください。
- オブジェクトのラベル付け: 画像内の関心対象のオブジェクトを正確にアノテーションします。
- モデルの学習: ラベル付けされたデータを使用して、YOLOv5モデルを学習させます。学習済み重みから始めることで、転移学習を活用します。
- デプロイと予測: 学習済みモデルを使用して、新しい未知のデータに対する推論を行います。
- エッジケースの収集: モデルのパフォーマンスが低いシナリオ(エッジケース)を特定し、同様のデータをデータセットに追加して堅牢性を向上させます。このサイクルを繰り返します。
Ultralytics Platformは、データセット管理、モデル学習、デプロイを含む、このMLOpsサイクル全体のための効率的なノーコードソリューションを提供します。
Ultralyticsは、多様な利用シナリオに対応するために2つのライセンスオプションを提供しています:
- AGPL-3.0ライセンス: このOSI承認済みオープンソースライセンスは、オープンなコラボレーションと知識共有に情熱を注ぐ学生、研究者、愛好家に最適です。派生作品を同じライセンスの下で共有することが義務付けられています。詳細については、LICENSEファイルを参照してください。
- エンタープライズライセンス: 商用アプリケーション向けに設計されたこのライセンスにより、AGPL-3.0のオープンソース規定なしで、UltralyticsソフトウェアやAIモデルを商用製品やサービスにシームレスに統合できます。プロジェクトに商用デプロイが必要な場合は、エンタープライズライセンスをリクエストしてください。
Ultralyticsライセンスページで、ライセンスオプションの詳細をご覧ください。
学習を開始する前に、データセットの準備が不可欠です。
データセットを作成する
YOLOv5モデルは、オブジェクトクラスの視覚的特徴を学習するためにラベル付けされたデータを必要とします。データセットを正しく整理することが鍵です。
1.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の構造です(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: toothbrush1.2 自動ラベル付けのためのモデルの活用
手動ラベル付けは一般的なアプローチですが、時間がかかります。基盤モデルを活用することで、アノテーションを自動化または半自動化し、データセット作成を高速化できます。ラベル生成に役立つモデルの例:
- Google Gemini: Geminiのような大規模マルチモーダルモデルは、強力な画像理解能力を備えています。プロンプトを与えることで画像内のオブジェクトを特定・位置特定し、YOLO形式のラベルに変換可能なバウンディングボックスや説明を生成できます。提供されているチュートリアルノートブックでその可能性を探ってください。
- SAM2 (Segment Anything Model 2): SAM2のようなセグメンテーションに特化した基盤モデルは、高精度でオブジェクトを識別・輪郭抽出できます。主にセグメンテーション用ですが、生成されたマスクは多くの場合、物体検出タスクに適したバウンディングボックスアノテーションに変換可能です。
- YOLOWorld: このモデルはオープンボキャブラリー検出機能を提供します。興味のあるオブジェクトのテキスト説明を提供するだけで、YOLOWorldはそれらの特定のクラスについて事前の学習をしていなくても画像内でそれらを見つけることができます。これは初期ラベルを生成するための出発点として使用でき、その後修正可能です。
これらのモデルを使用することで「事前ラベル付け」ステップを提供し、必要な手作業を減らすことができます。ただし、生成されたラベルは品質が直接YOLOv5モデルのパフォーマンスに影響するため、正確性と一貫性を確保するために確認・修正することが重要です。ラベルを生成(および修正)した後、それらがYOLO形式に準拠していることを確認してください:画像ごとに1つの*.txtファイルとし、各行がオブジェクトをclass_index x_center y_center width height(正規化された座標、0インデックスのクラス)として表現します。画像に関心対象がない場合、対応する*.txtファイルは不要です。
YOLO形式の*.txtファイルの仕様は正確です:
- オブジェクトバウンディングボックスごとに1行。
- 各行には以下を含める必要があります:
class_index x_center y_center width height。 - 座標は0から1の範囲に正規化されている必要があります。これを実現するには、
x_centerとwidthのピクセル値を画像の全幅で割り、y_centerとheightのピクセル値を画像の全高で割ります。 - クラスインデックスは0インデックス(つまり、最初のクラスは
0、2番目は1で表現されるなど)です。

上の画像に対応するラベルファイルは、2つの「人」オブジェクト(クラスインデックス0)と1つの「ネクタイ」オブジェクト(クラスインデックス27)を含み、以下のようになります:

1.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)
└── ...
モデルを選択する
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.

学習する
Begin the model training using the train.py script. Essential arguments include:
--img: 入力画像サイズを定義します(例:--img 640)。サイズが大きいほど精度は高くなりますが、より多くのGPUメモリが必要です。--batch: バッチサイズを決定します(例:--batch 16)。GPUが処理できる最大サイズを選択してください。--epochs: 合計の学習エポック数を指定します(例:--epochs 100)。1エポックは、学習データセット全体に対する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(入出力)操作がボトルネックになっている場合に、学習を劇的に高速化します。これにはかなりのRAMまたはディスク容量が必要になることに注意してください。
💡 常にローカルに保存されたデータセットを使用して学習してください。ネットワークドライブ(Google Driveなど)やリモートストレージからのデータアクセスは、大幅に遅くなり、学習パフォーマンスを妨げる可能性があります。データセットをローカルSSDにコピーするのがベストプラクティスであることが多いです。
重みやログを含むすべての学習出力は、runs/train/ディレクトリに保存されます。各学習セッションは新しいサブディレクトリを作成します(例: runs/train/exp, runs/train/exp-2など)。インタラクティブなハンズオン体験については、公式チュートリアルノートブックの学習セクションをご覧ください:
可視化する
YOLOv5は、学習の進捗状況を可視化し、結果を評価し、パフォーマンスをリアルタイムで監視するためのさまざまなツールとシームレスに統合します。
Cometによるログ記録と可視化
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 Colabノートブックをお試しください:
ClearMLによるログ記録と自動化
ClearML統合により、詳細な実験追跡、データセットバージョン管理、さらには学習実行のリモート実行が可能になります。以下の簡単な手順でClearMLを有効にします:
- パッケージをインストールします:
pip install clearml - ClearMLを初期化します:
clearml-initを1回実行して、ClearMLサーバー(セルフホストまたは無料ティア)に接続します。
ClearMLは、実験の詳細、モデルのアップロード、比較、コミットされていないコードの変更、インストールされたパッケージを自動的にキャプチャし、完全な再現性を保証します。ClearML Dataを使用して、リモートエージェントでの学習タスクのスケジュールやデータセットバージョンの管理を簡単に行うことができます。包括的な詳細については、ClearML統合ガイドを参照してください。
ローカルログ記録
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)曲線などの主要な評価メトリクス。
- 詳細なクラスごとのパフォーマンス分析のための混同行列。
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
次のステップ
学習が無事完了すると、最高のパフォーマンスを発揮したモデルのチェックポイント(best.pt)が保存され、デプロイやさらなる調整の準備が整います。考えられる次のステップは以下の通りです:
- Run inference on new images or videos using the trained model via the CLI or Python.
- 検証を実行して、さまざまなデータ分割(ホールドアウトテストセットなど)におけるモデルの精度と汎化性能を評価します。
- Export the model to various deployment formats like ONNX, TensorFlow SavedModel, or TensorRT for optimized inference on diverse platforms.
- ハイパーパラメータ調整技術を採用して、パフォーマンスのさらなる向上を引き出す可能性があります。
- 学習結果を最大化するためのヒントに従い、パフォーマンス分析に基づいて多様で困難なデータを反復的に追加することで、モデルの改善を続けます。
サポートされている環境
Ultralyticsは、CUDA、cuDNN、Python、PyTorchなどの主要な依存関係を備えたすぐに使える環境を提供し、スムーズな開始を促進します。
- 無料のGPUノートブック:
- クラウドプラットフォーム:
- Google Cloud: GCPクイックスタートガイド
- Amazon AWS: AWSクイックスタートガイド
- Microsoft Azure: AzureMLクイックスタートガイド
- ローカルセットアップ:
- Docker: Dockerクイックスタートガイド
- Docker: Dockerクイックスタートガイド
プロジェクトステータス
このバッジは、すべてのYOLOv5 GitHub Actions継続的インテグレーション(CI)テストが正常に通過していることを示しています。これらの厳格なCIテストは、macOS、Windows、Ubuntuオペレーティングシステム全体で、学習、検証、推論、エクスポート、ベンチマークを含むコア機能をカバーしています。テストは24時間ごと、およびコードがコミットされるたびに自動的に実行され、一貫した安定性と最適なパフォーマンスを保証します。
FAQ
YOLOv5をカスタムデータセットで学習するにはどうすればよいですか?
カスタムデータセットでのYOLOv5の学習には、いくつかの重要なステップが含まれます:
- データセットの準備: 画像を収集してアノテーションを行います。アノテーションが必須のYOLO formatに従っていることを確認してください。画像とラベルを
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ファイルで、データセットのパス、クラス数、クラス名を定義します。 - Start Training: Execute the
train.pyscript, providing paths to yourdataset.yaml, desired pretrained weights (e.g.,yolov5s.pt), image size, batch size, and the number of epochs.python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
YOLOモデルのトレーニングにUltralytics Platformを使用すべき理由は何ですか?
Ultralytics Platformは、コードを記述することなく、YOLOモデル開発のライフサイクル全体を効率化するように設計された包括的なプラットフォームです。主な利点は以下の通りです。
- トレーニングの簡素化: 事前に構成された環境と直感的なユーザーインターフェースを使用して、モデルを簡単にトレーニングできます。
- 統合されたデータ管理: プラットフォーム内でデータセットを効率的にアップロード、バージョン管理、管理できます。
- リアルタイム監視: CometやTensorBoardなどの統合ツールを使用して、トレーニングの進行状況を追跡し、パフォーマンス指標を視覚化できます。
- コラボレーション機能: リソースの共有、プロジェクト管理ツール、容易なモデル共有を通じて、チームワークを促進します。
- ノーコードデプロイメント: トレーニング済みのモデルを直接さまざまなターゲットにデプロイできます。
実践的なウォークスルーについては、ブログ記事「How to Train Your Custom Models with Ultralytics Platform」をご覧ください。
アノテーション済みのデータをYOLOv5形式に変換するにはどうすればよいですか?
手動でアノテーションする場合でも、自動ツール(セクション1.2で言及したものなど)を使用する場合でも、最終的なラベルはYOLOv5で要求される特定のYOLO formatである必要があります。
- 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、2番目は1など)。
多くの手動アノテーションツールは、YOLO形式への直接エクスポートを提供しています。自動モデルを使用する場合は、その出力(バウンディングボックスの座標、セグメンテーションマスクなど)をこの特定の正規化されたテキスト形式に変換するためのスクリプトやプロセスが必要です。最終的なデータセット構造がガイドで提供されている例に準拠していることを確認してください。詳細については、Data Collection and Annotation Guideを参照してください。
商業用途でYOLOv5を使用する場合のライセンスオプションは何ですか?
Ultralyticsは、さまざまなニーズに合わせて調整された柔軟なライセンスを提供しています。
- AGPL-3.0 License: このオープンソースライセンスは、学術研究、個人プロジェクト、およびオープンソースコンプライアンスが許容される状況に適しています。修正および派生作品もAGPL-3.0の下でオープンソース化されることが義務付けられています。AGPL-3.0 License detailsを確認してください。
- Enterprise License: A commercial license designed for businesses integrating YOLOv5 into proprietary products or services. This license removes the open-source obligations of AGPL-3.0, allowing for closed-source distribution. Visit our Licensing page for further details or to request an Enterprise License.
プロジェクトの要件と配布モデルに最も適したライセンスを選択してください。
