roboflowブログ

 roboflowチュートリアル
カスタム データセットで YOLOv8 オブジェクト検出をトレーニングする方法
カスタム データセットで YOLOv8 オブジェクト検出をトレーニングする方法
YOLOv8 は、 YOLO (You Only Look Once) アーキテクチャを使用する非常に影響力のあるモデル ファミリーの最新作です。YOLOv8 は、 YOLOv3およびYOLOv5での作業で知られるチームである Ultralytics によって開発されました。

YOLOv6とYOLOv7によって設定された傾向に従って  、オブジェクト検出だけでなく、インスタンス セグメンテーションと画像分類も自由に使用できます。モデル自体はPyTorchで作成され、CPU と GPU の両方で実行されます。YOLOv5 と同様に、 TF.jsやCoreMLなどのさまざまなエクスポートも多数あります。

YOLOv8 アーキテクチャの詳細については、YOLOv8 の新機能に関する投稿を参照してください。

SDK、チュートリアル、オープン ソース ソフトウェアをすぐに活用して、Web ブラウザーでのモデルの使用から NVIDIA Jetson を使用したエッジでの作業まで、さまざまなデバイスにモデルを展開します。

このガイドでは、YOLOv5 ウェイトを Roboflow にデプロイする方法について説明します。それでは早速始めましょう!

YOLOv8 を他の SOTA リアルタイム モデルと比較する Papers with Code ベンチマークをまだ待っています。それまでの間、RF100 データセットを使用して、v8 と YOLOv5 を照合しました。YOLOv8 は 64% の確率でスコアが高く、パフォーマンスが悪い場合、その差はごくわずかです。

このチュートリアルでは、カスタム データセットで YOLOv8 オブジェクト検出モデルをトレーニングする各ステップについて説明します。新しい API の使用方法、データセットの準備方法、そして最も重要なモデルのトレーニングと検証の方法を学習します。さぁ、始めよう!

YOLOv8のインストール方法
YOLOv8 は、ソースからと pip 経由の 2 つの方法でインストールできます。これは、公式パッケージを持つ YOLO の最初のイテレーションであるためです。

pipから (推奨)

pip から YOLOv8 をインストールするには、次のコマンドを使用します。

pip install ultralytics
ソースから

次のコマンドを使用して、GitHub のソースからモデルをインストールできます。

git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e ultralytics
新しいYOLOv8 API
YOLOv8 の開発者は、標準の YOLO プロジェクト設計から脱却することを決定しました: 個別の train.py、detect.py、val.py、および export.py スクリプトです。短期的には混乱を招くかもしれませんが、長期的には素晴らしい決断です!

このパターンは YOLOv3 から存在しており、すべての YOLO イテレーションで再現されています。理解するのは比較的簡単でしたが、特にリアルタイム処理と追跡のシナリオで展開するのは難しいことで有名でした.

新しいアプローチは、複雑なコンピューター ビジョン アプリケーションの一部であるだけでなく、端末を介して YOLOv8 を独立して使用できるため、はるかに柔軟です。

YOLOv8 CLI
YOLOv8 には、さまざまなタスクやバージョンでモデルをトレーニング、検証、または推測できるコマンド ライン インターフェイスが付属しています。CLI には、カスタマイズやコードは必要ありません。ターミナルからすべてのタスクを実行できます。使用法は、私たちがよく知っているスクリプトとかなり似ています。以下の例は、CLI を利用して特定の画像内のオブジェクトを検出する方法を示しています。

yolo task=detect \
mode=predict \
model=yolov8n.pt \
conf=0.25 \
source='https://media.roboflow.com/notebooks/examples/dog.jpeg'
予想される推論結果
YOLOv8 Python SDK

Ultralytics YOLO には、pythonic のモデルとトレーナー インターフェイスが付属しています。これにより、わずか数行のコードでカスタム Python スクリプト内で YOLO モデルを使用できるようになりました。このようなことは、リポジトリのフォークを行い、コードに独自の変更を加えることなく、これまで不可能でした。

from ultralytics import YOLO

model = YOLO('yolov8n.pt')
model.predict(
   source='https://media.roboflow.com/notebooks/examples/dog.jpeg',
   conf=0.25
)
YOLOv8 用のカスタム データセットの準備
カスタム データセットの構築は、骨の折れるプロセスになる可能性があります。画像を収集し、ラベルを付け、適切な形式でエクスポートするには、数十時間、場合によっては数百時間かかる場合があります。幸いなことに、Roboflow はこのプロセスを簡単にします。方法をお見せしましょう!

プロジェクトを作成する

開始する前に、Roboflowアカウントを作成する必要があります。それができたら、Roboflow ダッシュボードで新しいプロジェクトを作成できます。適切なプロジェクト タイプを選択するように注意してください。この場合、「オブジェクト検出」を選択します。

画像をアップロードする

次に、新しく作成したプロジェクトにデータを追加します。APIまたはWeb インターフェースを介して行うことができます。データセットがない場合は、Roboflow Universeから取得するか、このチュートリアルで後ほど説明するフットボール選手検出データセットを使用できます。

サポートされている形式のデータセットを含むディレクトリをドラッグ アンド ドロップすると、Roboflow ダッシュボードは自動的に画像と注釈を一緒に読み取ります。

画像にラベルを付ける

画像しかない場合は、Roboflow Annotateでラベルを付けることができます。ゼロから始める場合は、API を介して大量の画像バッチに注釈を付けるか、モデル支援ラベル付けツールを使用して作業を高速化することを検討してください。

データセットの新しいバージョンを生成する

画像と注釈を追加したので、データセット バージョンを生成できます。バージョンを生成するときに、前処理と拡張を追加することを選択できます。この手順は完全にオプションですが、モデルの堅牢性を大幅に向上させることができます。

データセットをエクスポートする

データセット バージョンが生成されると、ホストされたデータセットが作成され、簡単にトレーニングできるようにノートブックに直接読み込むことができます。

Roboflow Universe からデータセットをダウンロードする 1 つの方法は、pip パッケージを使用することです。UI で適切なコード スニペットを直接生成できます。データセットのユニバース ホームページで、[このデータセットをダウンロード] ボタンをクリックし、[YOLO v5 PyTorch エクスポート形式] を選択します。

数秒後、必要なパラメーターがすべて入力されていることを除いて、以下のようなコードが表示されます。コピーして、Jupyter Notebook または同様の環境に貼り付けることができます。実行すると、データセットが適切な形式でマシンにダウンロードされます。魔法!

yolo task=detect \
mode=train \
model=yolov8s.pt \
data={dataset.location}/data.yaml \
epochs=100 \
imgsz=640
モデルのトレーニングが開始され、データセットの大きさと選択したトレーニング オプションに応じて、数分から数時間実行されます。

YOLOv8 を使用してプレーヤー検出モデルをトレーニングした結果は次のとおりです。

トレーニング後に返された混同行列
YOLOv8 によって追跡される主要な指標
検証バッチでの YOLOv8 推論の例
新しいモデルで検証する

画像と注釈を追加したので、データセット バージョンを生成できます。バージョンを生成するときに、前処理と拡張を追加することを選択できます。この手順は完全にオプションですが、モデルの堅牢性を大幅に向上させることができます。

yolo task=detect \
mode=val \
model={HOME}/runs/detect/train/weights/best.pt \
data={dataset.location}/data.yaml
YOLOv8モデル評価結果
カスタム モデルで予測する

カスタム モデルを使用してデータを予測するには、次のコマンドを使用します。

yolo task=detect \
mode=predict \
model={HOME}/runs/detect/train/weights/best.pt \
conf=0.25 \
source={dataset.location}/test/images
YOLOv8 カスタムモデルの推論結果の例
ウェイトのエクスポートとアップロード
YOLOv8 モデルのトレーニングが完了すると、ホストされた API エンドポイントで使用できる一連のトレーニング済みの重みが用意されます。これらの重みは、プロジェクトの「/runs/detect/train/weights/best.pt」フォルダーにあります。Roboflow pip パッケージの deploy() 関数を使用してモデルの重みをRoboflow Deployにアップロードし、トレーニング済みの重みを使用できます。

モデルの重みをアップロードするには、次のコードをノートブックの「カスタム モデルによる推論」セクションに追加します。

project.version(DATASET_VERSION).deploy(model_type=”yolov8”, model_path=f”{HOME}/runs/detect/train/”)
DATASET_VERSION の値を、プロジェクトに関連付けられているバージョン番号に置き換えます。以前に提供されたコード スニペットを使用して Roboflow から重みをダウンロードした場合、「DATASET_VERSION」番号は「dataset.version」値に保存されます。

上記のコードを実行すると、重みをアップロードしたバージョンの横に緑色のチェックマークが表示されます。また、YOLOv8 ウェイト アップロード機能を使用してウェイトをアップロードしたことを示すラベルも表示されます。

「Model Type」ラベルに独自の YOLOv8 ウェイトをアップロードしたことを示す Roboflow ダッシュボード。
Roboflow ダッシュボードのサイドバーにある [デプロイ] をクリックして、利用可能なデプロイ オプションを表示します。ブラウザーで直接、モデルをテストし、URL を送信してモデルを他のユーザーと共有できます。

画像またはビデオをアップロードすることで、モデルのパフォーマンスをテストおよび表示できます。

ウェブカメラを使用するか、推論を実行するビデオへの YouTube リンクを貼り付けます。

モデルの重みをアップロードしたら、カスタム トレーニング済みの YOLOv8 モデルを運用アプリケーションに組み込んだり、他のユーザーが表示および使用できるように外部で共有したりできます。Roboflow Universe で事前トレーニング済みの YOLOv8 モデルを調べます。

結論
YOLOv8 は YOLO モデル ファミリーの最新リリースであり、オブジェクト検出の新しい最先端を定義しています。Roboflow 100 でベンチマークを行ったところ、v8 と v5 の間でパフォーマンスが大幅に向上しました。

YOLOv8 ソフトウェアは、開発者ができるだけ直感的に使用できるように設計されています。新しい Ultralytics YOLOv8 pip パッケージを使用すると、コードでのモデルの使用がこれまでになく簡単になります。トレーニングをより直感的にする新しいコマンド ライン インターフェイスもあります。

これで、Roboflow 100 を使用して構築を開始するために必要なすべてが揃いました。楽しいトレーニングを!

アノテーション・AI学習データ(教師データ)作成・AIモデル構築ツール「roboflow」

お問い合せ

お問い合せはこちら

AI活用の機械学習を自動化するツール「roboflow」についてのご質問・ご相談はこちら

お電話でのお問い合せも受け付けています。お気軽にご相談ください。

03-5821-9761