コンテンツへスキップ

カスタムデータを鍛える

このガイドでは、📚で独自のカスタムデータセットをトレーニングする方法を説明します。 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オリエンテーションを取り除きます。
  • Resize (Stretch)- モデルの正方形の入力サイズに変更します(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 Driveのようなマウントドライブやネットワークドライブは非常に遅い。

すべてのトレーニング結果は 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新しい画像やビデオに対する推論
  • トレイン、バルブ、テスト分割の精度を検証する。
  • TensorFlow 、Keras、ONNX 、TFlite、TF.js、CoreML およびTensorRT 形式にエクスポートします。
  • ハイパーパラメータを進化させてパフォーマンスを向上させる
  • 実世界の画像をサンプリングしてデータセットに追加することで、モデルを改善します。

対応環境

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

プロジェクト状況

YOLOv5 CI

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



作成日:2023-11-12 更新日:2024-01-21
作成者:glenn-jocher(11)

コメント