コンテンツへスキップ

カスタムデータで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 アクティブラーニング

オブジェクトを検出するカスタムモデルの作成は、画像の収集と整理、関心のあるオブジェクトのラベル付け、モデルのトレーニング、予測を行うための実環境への展開、そしてその展開されたモデルを使用してエッジケースの例を収集し、繰り返しと改善を行うという反復的なプロセスです。

ライセンス

Ultralytics は2つのライセンス・オプションを提供している:

詳しくはUltralytics ライセンスをご覧ください。

YOLOv5 モデルは、そのデータ内のオブジェクトのクラスを学習するために、ラベル付きデータで学習する必要があります。トレーニングを開始する前にデータセットを作成するには、2つのオプションがあります:

オプション1 Roboflowデータセット

1.1 画像の収集

あなたのモデルは、お手本を見て学びます。実際の撮影に近い画像でトレーニングすることが最も重要です。理想的には、最終的にプロジェクトを展開するのと同じ構成(カメラ、アングル、照明など)から、さまざまな画像を収集することです。

これが不可能な場合は、公開データセットから始めて初期モデルを訓練し、推論中に野生の画像をサンプリングしてデータセットとモデルを反復的に改善することができます。

1.2 ラベルの作成

画像を収集したら、モデルが学習するためのグランドトゥルースを作成するために、関心のあるオブジェクトに注釈を付ける必要があります。

YOLOv5 精度

Roboflow Annotateはシンプルなウェブベースのツールで、チームで画像を管理し、ラベルを付けて、YOLOv5'注釈フォーマットでエクスポートします。

1.3 データセットの準備YOLOv5

画像にRoboflow ラベルを付けるかどうかに関わらず、データセットをYOLO フォーマットに変換し、YOLOv5 YAML 設定ファイルを作成し、トレーニングスクリプトにインポートするためにホストするために使用することができます。

Roboflow 無料アカウントを作成する にアップロードします。 Public ワークスペースで、注釈のない画像にラベルを付け、データセットを生成して YOLOv5 Pytorch という形式をとっている。

注:YOLOv5 はトレーニング中にオンラインでオーグメンテーションを行うため、YOLOv5 でのトレーニングにRoboflow のオーグメンテーション・ステップを適用することは推奨しない。しかし、以下の前処理ステップを適用することを推奨する:

推奨される前処理ステップ

  • オートオリエント- 画像からEXIFオリエンテーションを取り除きます。
  • リサイズ(ストレッチ)- モデルの正方形の入力サイズに合わせます(YOLOv5 のデフォルトは 640x640)。

バージョンを生成することで、データセットのスナップショットが得られるので、後で画像を追加したり、設定を変更したりしても、いつでもそのデータセットにさかのぼって、今後のモデルのトレーニング実行を比較することができます。

YOLOv5 形式でエクスポート

輸出 YOLOv5 Pytorch 形式のスニペットをトレーニングスクリプトまたはノートブックにコピーして、データセットをダウンロードします。

Roboflow データセットダウンロードスニペット

オプション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から始まる)。

Roboflow コンメンタール

上の画像に対応するラベルファイルには、2人の人物(クラス 0と引き分け(クラス 27):

Roboflow データセットの前処理

2.3 ディレクトリの整理

YOLOv5 以下の例に従って、列車とバルの画像とラベルを整理してください。 /coco128 の中にある。 /datasets ディレクトリ その /yolov5 ディレクトリにある。 YOLOv5 各画像のラベルを自動的に検索 の最後のインスタンスを /images/ を使用して各画像パスに /labels/.例えば:

../datasets/coco128/images/im0.jpg # image
../datasets/coco128/labels/im0.txt # label

YOLOv5 データセット構造

3.モデルの選択

学習を開始する事前学習済みモデルを選択します。ここでは、利用可能なモデルの中で2番目に小さく、最も高速なYOLOv5sを選択します。すべてのモデルの完全な比較はREADMEの表を参照してください。

YOLOv5 モデル

4.電車

COCO128のYOLOv5sモデルを、データセット、バッチサイズ、画像サイズを指定し、事前学習された --weights yolov5s.pt (推奨)、またはランダムに初期化される --weights '' --cfg yolov5s.yaml (推奨しない)。事前訓練された重みは 最新YOLOv5 リリース.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

チップ

💡 追加 --cache ram または --cache disk トレーニングのスピードアップのため(かなりのRAM/ディスクリソースが必要)。

チップ

💡 常にローカルデータセットからトレーニングしてください。Google ドライブのようなマウントされたドライブやネットワークドライブは非常に遅い。

すべてのトレーニング結果は runs/train/ ラン・ディレクトリがインクリメントされる。 runs/train/exp2, runs/train/exp3 など。詳細はチュートリアルノートのトレーニングセクションをご覧ください。 オープン・イン・コラボ Kaggleで開く

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 コラボ・ノートブックをお試しください: オープン・イン・コラボ

YOLO UI

ClearML ロギングと自動化 🌟 NEW

ClearMLはYOLOv5 に完全に統合されており、実験の追跡、データセットのバージョン管理、さらにはリモートでのトレーニング実行が可能です。ClearML を有効にするには、以下のリンクをクリックしてください:

  • pip install clearml
  • 走る clearml-init ClearML サーバーに接続する

ライブアップデート、モデルのアップロード、実験の比較など、実験マネージャーから期待される素晴らしい機能はすべて得られますが、ClearML 、例えばコミットされていない変更やインストールされたパッケージも追跡します。そのおかげで、ClearML タスク(私たちはこれを実験と呼んでいる)は異なるマシンでも再現可能である!たった1行追加するだけで、YOLOv5 トレーニングタスクをキューにスケジュールし、任意の数のClearML エージェント(ワーカー)が実行できる。

ClearML Dataを使ってデータセットをバージョン管理し、一意のIDを使ってYOLOv5 。こうすることで、余計な手間を増やすことなくデータを追跡することができる。詳しくはClearML チュートリアルをご覧ください!

ClearML 実験管理UI

ローカル・ロギング

トレーニング結果は テンソルボード そして シーエスブイ ロガーを 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'

結果.png

次のステップ

モデルがトレーニングされたら、最適なチェックポイントを使うことができる。 best.pt に:

  • 実行する CLIまたは Python新しい画像やビデオに対する推論
  • トレイン、バルブ、テストの分割で精度を 検証する
  • エクスポートTensorFlowKeras、ONNX 、TFlite、TF.js、CoreML およびTensorRT フォーマット
  • ハイパーパラメータを進化させてパフォーマンスを向上させる
  • 実世界の画像をサンプリングしてデータセットに追加することで、モデルを改善します。

対応環境

Ultralytics をはじめとする必要不可欠な依存関係がプリインストールされた、さまざまなすぐに使える環境を提供する。 CUDACUDNNPythonそして PyTorchなどがプリインストールされています。

プロジェクト状況

YOLOv5 CI

このバッジは、YOLOv5 GitHub ActionsContinuous Integration (CI) テストがすべて正常にパスしていることを示します。これらのCIテストは、トレーニング検証推論エクスポートベンチマークといったさまざまな重要な側面にわたって、YOLOv5 の機能とパフォーマンスを厳密にチェックします。これらのテストは、macOS、Windows、Ubuntu上で、24時間ごとおよび新しいコミットごとに実施され、一貫した信頼性の高い動作を保証します。

よくあるご質問

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

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

  1. データセットを準備する画像を収集し、ラベルを付ける。のようなツールを使って Roboflowなどのツールを使ってデータを整理し、YOLOv5 形式でエクスポートする。
  2. セットアップ環境:YOLOv5 リポジトリをクローンし、依存関係をインストールする:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. データセット構成の作成:を書く dataset.yaml ファイルでtrain/valのパスとクラス名を定義する。
  4. モデルを訓練する:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

YOLOv5 データセットに注釈を付けるには、どのようなツールを使えばよいですか?

Roboflow Annotateは、画像にラベルを付けるための直感的なウェブベースのツールです。チームコラボレーションをサポートし、YOLOv5 形式でエクスポートします。画像を収集したら、Roboflow を使用して、注釈を効率的に作成および管理します。その他のオプションとして、LabelImgやCVATのようなローカルアノテーション用のツールもあります。

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

Ultralytics HUBは、YOLO モデルのトレーニング、デプロイ、管理のためのエンドツーエンドのプラットフォームを提供します。以下のような利点があります:

  • 簡単なモデルトレーニング:事前に設定された環境でトレーニングプロセスを簡素化します。
  • データ管理:データセットとバージョン管理を容易にします。
  • リアルタイムモニタリング:以下のようなツールを統合し Cometなどのツールを統合し、リアルタイムのメトリクス追跡と可視化を実現します。
  • コラボレーション:リソースを共有し、簡単に管理できるチームプロジェクトに最適です。

詳細なウォークスルーは、 Ultralytics HUBでカスタムモデルをトレーニングする方法をご覧ください。

注釈付きデータをYOLOv5 形式に変換するには?

注釈付きデータをRoboflow を使ってYOLOv5 形式に変換する:

  1. データセットを Roboflow ワークスペースにアップロードします。
  2. まだラベルが貼られていない場合は、画像にラベルを貼る
  3. 生成とエクスポート のデータセット YOLOv5 Pytorch フォーマットを使用する。正方形の入力サイズ(例:640x640)に自動オリエントやリサイズ(ストレッチ)などの前処理ステップが適用されていることを確認する。
  4. データセットをダウンロードして、YOLOv5 トレーニングスクリプトに統合します。

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

Ultralytics は2つのライセンス・オプションを提供している:

  • AGPL-3.0 ライセンス非商用に適したオープンソースライセンスで、学生や愛好家に最適です。
  • エンタープライズ・ライセンス:YOLOv5 を商用製品やサービスに統合しようとする企業向けです。詳細については、ライセンスのページをご覧ください。

詳しくは、Ultralytics ライセンスに関するガイドをご覧ください。

📅作成:1年前 ✏️更新 5日前

コメント