カスタムデータでYOLOv5 トレーニングする
このガイドでは、📚で独自のカスタムデータセットをトレーニングする方法を説明します。 YOLOv5🚀.
始める前に
レポをクローンし、requirements.txtをPython>=3.8.0環境にインストールする。 PyTorch>=1.8.モデルとデータセットは、最新のYOLOv5 リリースから自動的にダウンロードされます。
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
カスタムデータでトレーニング
オブジェクトを検出するカスタムモデルの作成は、画像の収集と整理、関心のあるオブジェクトのラベル付け、モデルのトレーニング、予測を行うための実環境への展開、そしてその展開されたモデルを使用してエッジケースの例を収集し、繰り返しと改善を行うという反復的なプロセスです。
ライセンス
Ultralytics は2つのライセンス・オプションを提供している:
- AGPL-3.0 ライセンスは、学生や愛好家に理想的なOSI承認のオープンソースライセンスです。
- エンタープライズ・ライセンスは、当社のAIモデルを製品やサービスに組み込もうとする企業向けのライセンスです。
YOLOv5 モデルは、そのデータ内のオブジェクトのクラスを学習するために、ラベル付きデータで学習する必要があります。トレーニングを開始する前にデータセットを作成するには、2つのオプションがあります:
オプション1 Roboflowデータセット
1.1 画像の収集
あなたのモデルは、お手本を見て学びます。実際の撮影に近い画像でトレーニングすることが最も重要です。理想的には、最終的にプロジェクトを展開するのと同じ構成(カメラ、アングル、照明など)から、さまざまな画像を収集することです。
これが不可能な場合は、公開データセットから始めて初期モデルを訓練し、推論中に野生の画像をサンプリングしてデータセットとモデルを反復的に改善することができます。
1.2 ラベルの作成
画像を収集したら、モデルが学習するためのグランドトゥルースを作成するために、関心のあるオブジェクトに注釈を付ける必要があります。
Roboflow Annotateはシンプルなウェブベースのツールで、チームで画像を管理し、ラベルを付けて、YOLOv5'注釈フォーマットでエクスポートします。
1.3 データセットの準備YOLOv5
画像にRoboflow ラベルを付けるかどうかに関わらず、データセットをYOLO フォーマットに変換し、YOLOv5 YAML 設定ファイルを作成し、トレーニングスクリプトにインポートするためにホストするために使用することができます。
Roboflow 無料アカウントを作成する にアップロードします。 Public
ワークスペースで、注釈のない画像にラベルを付け、データセットを生成して YOLOv5 Pytorch
という形式をとっている。
注:YOLOv5 はトレーニング中にオンラインでオーグメンテーションを行うため、YOLOv5 でのトレーニングにRoboflow のオーグメンテーション・ステップを適用することは推奨しない。しかし、以下の前処理ステップを適用することを推奨する:
- オートオリエント- 画像からEXIFオリエンテーションを取り除きます。
- リサイズ(ストレッチ)- モデルの正方形の入力サイズに合わせます(YOLOv5 のデフォルトは 640x640)。
バージョンを生成することで、データセットのスナップショットが得られるので、後で画像を追加したり、設定を変更したりしても、いつでもそのデータセットにさかのぼって、今後のモデルのトレーニング実行を比較することができます。
輸出 YOLOv5 Pytorch
形式のスニペットをトレーニングスクリプトまたはノートブックにコピーして、データセットをダウンロードします。
オプション2:手動データセットの作成
2.1 作成 dataset.yaml
COCO128 の最初の128枚の画像からなる小規模なチュートリアル・データセットの例である。 COCO train2017。これらの同じ128枚の画像を訓練と検証の両方に使用し、我々の訓練パイプラインが以下の能力を持つことを検証する。 オーバーフィッティング. data/coco128.yaml以下に示すのは,1) データセットのルート・ディレクトリを定義するデータセット設定ファイルである. path
への相対パスと train
/ val
/ test
イメージ・ディレクトリ *.txt
ファイルの画像パス) と、2) クラス names
という辞書がある:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 ラベルの作成
注釈ツールを使って画像にラベルを付けたら、ラベルを次のようにエクスポートします。 YOLO フォーマット一人 *.txt
ファイル(画像にオブジェクトがない場合は *.txt
ファイルが必要)。その *.txt
ファイルの仕様は以下の通り:
- オブジェクトごとに1行
- 各行は
class x_center y_center width height
という形式をとっている。 - ボックス座標は 正規化xywh フォーマット(0から1まで)。ボックスがピクセルの場合は
x_center
そしてwidth
画像の幅でy_center
そしてheight
画像の高さによる - クラス番号はゼロインデックス(0から始まる)。
上の画像に対応するラベルファイルには、2人の人物(クラス 0
と引き分け(クラス 27
):
2.3 ディレクトリの整理
YOLOv5 以下の例に従って、列車とバルの画像とラベルを整理してください。 /coco128
の中にある。 /datasets
ディレクトリ 横 その /yolov5
ディレクトリにある。 YOLOv5 各画像のラベルを自動的に検索 の最後のインスタンスを /images/
を使用して各画像パスに /labels/
.例えば:
3.モデルの選択
学習を開始する事前学習済みモデルを選択します。ここでは、利用可能なモデルの中で2番目に小さく、最も高速なYOLOv5sを選択します。すべてのモデルの完全な比較はREADMEの表を参照してください。
4.電車
COCO128のYOLOv5sモデルを、データセット、バッチサイズ、画像サイズを指定し、事前学習された --weights yolov5s.pt
(推奨)、またはランダムに初期化される --weights '' --cfg yolov5s.yaml
(推奨しない)。事前訓練された重みは 最新YOLOv5 リリース.
チップ
💡 追加 --cache ram
または --cache disk
トレーニングのスピードアップのため(かなりのRAM/ディスクリソースが必要)。
チップ
💡 常にローカルデータセットからトレーニングしてください。Google ドライブのようなマウントされたドライブやネットワークドライブは非常に遅い。
すべてのトレーニング結果は runs/train/
ラン・ディレクトリがインクリメントされる。 runs/train/exp2
, runs/train/exp3
など。詳細はチュートリアルノートのトレーニングセクションをご覧ください。
5.視覚化する
Comet ロギングとビジュアライゼーション 🌟 NEW
Cometは、YOLOv5 と完全に統合されました。モデルのメトリクスをリアルタイムで追跡および可視化し、ハイパーパラメータ、データセット、およびモデルのチェックポイントを保存し、Comet カスタムパネルでモデルの予測を可視化します。Comet は、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、コラボレーションすることを容易にします!
始めるのは簡単だ:
pip install comet_ml # 1. install
export COMET_API_KEY=YOUR_API_KEY # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
この統合でサポートされるすべてのComet 機能の詳細については、以下をご覧ください。 Comet チュートリアル.Comet についてもっとお知りになりたい方は、こちらへどうぞ。 ドキュメンテーション.まずは、Comet コラボ・ノートブックをお試しください:
ClearML ロギングと自動化 🌟 NEW
ClearMLはYOLOv5 に完全に統合されており、実験の追跡、データセットのバージョン管理、さらにはリモートでのトレーニング実行が可能です。ClearML を有効にするには、以下のリンクをクリックしてください:
pip install clearml
- 走る
clearml-init
ClearML サーバーに接続する
ライブアップデート、モデルのアップロード、実験の比較など、実験マネージャーから期待される素晴らしい機能はすべて得られますが、ClearML 、例えばコミットされていない変更やインストールされたパッケージも追跡します。そのおかげで、ClearML タスク(私たちはこれを実験と呼んでいる)は異なるマシンでも再現可能である!たった1行追加するだけで、YOLOv5 トレーニングタスクをキューにスケジュールし、任意の数のClearML エージェント(ワーカー)が実行できる。
ClearML Dataを使ってデータセットをバージョン管理し、一意のIDを使ってYOLOv5 。こうすることで、余計な手間を増やすことなくデータを追跡することができる。詳しくはClearML チュートリアルをご覧ください!
ローカル・ロギング
トレーニング結果は テンソルボード そして シーエスブイ ロガーを runs/train
として、新しいトレーニングごとに新しい実験ディレクトリが作成される。 runs/train/exp2
, runs/train/exp3
等々。
このディレクトリには、訓練とvalの統計、モザイク、ラベル、予測、拡張モザイクのほか、精度- 再現率(PR)曲線や混同行列などのメトリクスやグラフが含まれています。
結果ファイル results.csv
が更新されるたびに エポックとしてプロットした。 results.png
(下図)はトレーニング終了後に表示されます。また results.csv
ファイルを手動で作成する:
from utils.plots import plot_results
plot_results("path/to/results.csv") # plot 'results.csv' as 'results.png'
次のステップ
モデルがトレーニングされたら、最適なチェックポイントを使うことができる。 best.pt
に:
- 実行する CLIまたは Python新しい画像やビデオに対する推論
- トレイン、バルブ、テストの分割で精度を 検証する。
- エクスポート先 TensorFlowKeras、ONNX 、TFlite、TF.js、CoreML およびTensorRT フォーマット
- ハイパーパラメータを進化させてパフォーマンスを向上させる
- 実世界の画像をサンプリングしてデータセットに追加することで、モデルを改善します。
対応環境
Ultralytics をはじめとする必要不可欠な依存関係がプリインストールされた、さまざまなすぐに使える環境を提供する。 CUDAやCUDNN、 Pythonそして PyTorchなどがプリインストールされています。
- 無料GPU ノート:
- Google クラウド GCPクイックスタートガイド
- アマゾン AWSクイックスタートガイド
- Azure:AzureML クイックスタートガイド
- ドッカー: Dockerクイックスタートガイド
プロジェクト状況
このバッジは、YOLOv5 GitHub ActionsContinuous Integration (CI) テストがすべて正常にパスしていることを示します。これらのCIテストは、トレーニング、検証、推論、エクスポート、ベンチマークといったさまざまな重要な側面にわたって、YOLOv5 の機能とパフォーマンスを厳密にチェックします。これらのテストは、macOS、Windows、Ubuntu上で、24時間ごとおよび新しいコミットごとに実施され、一貫した信頼性の高い動作を保証します。
よくあるご質問
カスタムデータセットでYOLOv5 をトレーニングするには?
カスタムデータセットでYOLOv5 をトレーニングするには、いくつかのステップがある:
- データセットを準備する画像を収集し、ラベルを付ける。のようなツールを使って Roboflowなどのツールを使ってデータを整理し、YOLOv5 形式でエクスポートする。
- セットアップ環境:YOLOv5 リポジトリをクローンし、依存関係をインストールする:
- データセット構成の作成:を書く
dataset.yaml
ファイルでtrain/valのパスとクラス名を定義する。 - モデルを訓練する:
YOLOv5 データセットに注釈を付けるには、どのようなツールを使えばよいですか?
Roboflow Annotateは、画像にラベルを付けるための直感的なウェブベースのツールです。チームコラボレーションをサポートし、YOLOv5 形式でエクスポートします。画像を収集したら、Roboflow を使用して、注釈を効率的に作成および管理します。その他のオプションとして、LabelImgやCVATのようなローカルアノテーション用のツールもあります。
YOLO モデルのトレーニングにUltralytics HUB を使うべき理由は?
Ultralytics HUBは、YOLO モデルのトレーニング、デプロイ、管理のためのエンドツーエンドのプラットフォームを提供します。以下のような利点があります:
- 簡単なモデルトレーニング:事前に設定された環境でトレーニングプロセスを簡素化します。
- データ管理:データセットとバージョン管理を容易にします。
- リアルタイムモニタリング:以下のようなツールを統合し Cometなどのツールを統合し、リアルタイムのメトリクス追跡と可視化を実現します。
- コラボレーション:リソースを共有し、簡単に管理できるチームプロジェクトに最適です。
詳細なウォークスルーは、 Ultralytics HUBでカスタムモデルをトレーニングする方法をご覧ください。
注釈付きデータをYOLOv5 形式に変換するには?
注釈付きデータをRoboflow を使ってYOLOv5 形式に変換する:
- データセットを Roboflow ワークスペースにアップロードします。
- まだラベルが貼られていない場合は、画像にラベルを貼る。
- 生成とエクスポート のデータセット
YOLOv5 Pytorch
フォーマットを使用する。正方形の入力サイズ(例:640x640)に自動オリエントやリサイズ(ストレッチ)などの前処理ステップが適用されていることを確認する。 - データセットをダウンロードして、YOLOv5 トレーニングスクリプトに統合します。
商用アプリケーションでYOLOv5 を使用する場合のライセンスオプションは?
Ultralytics は2つのライセンス・オプションを提供している:
- AGPL-3.0 ライセンス非商用に適したオープンソースライセンスで、学生や愛好家に最適です。
- エンタープライズ・ライセンス:YOLOv5 を商用製品やサービスに統合しようとする企業向けです。詳細については、ライセンスのページをご覧ください。
詳しくは、Ultralytics ライセンスに関するガイドをご覧ください。