カスタムデータセットでYOLOをトレーニングする方法:ステップバイステップガイド
オブジェクト検出は、セキュリティ、自動化、ロボティクスなどの業界で不可欠な技術となっています。YOLO(You Only Look Once)は、そのスピードと精度の高さから最も人気のあるリアルタイムオブジェクト検出モデルの1つです。本記事では、カスタムデータセットを使用してYOLOをトレーニングし、実際のアプリケーションで使用できるようにする方法を説明します。
ステップ1:依存関係のインストール
まず、必要な依存関係をインストールします。最新のYOLOv5またはYOLOv8を使用すると、より簡単にトレーニングできます。
# YOLOv5リポジトリをクローン
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
# 必要なパッケージをインストール
pip install -r requirements.txt
YOLOv8の場合は、Ultralyticsパッケージを直接インストールできます:
pip install ultralytics
ステップ2:データセットの準備
YOLOは特定のフォーマットでデータを必要とし、各画像には対応するアノテーションファイル(YOLOフォーマット)が必要です:
<class_id> <x_center> <y_center> <width> <height>
すべての値は0〜1の範囲で正規化する必要があります。データセットのフォルダ構成は以下のようになります:
/dataset
├── images
│ ├── train
│ │ ├── img1.jpg
│ │ ├── img2.jpg
│ ├── val
│ ├── img3.jpg
│ ├── img4.jpg
├── labels
│ ├── train
│ │ ├── img1.txt
│ │ ├── img2.txt
│ ├── val
│ ├── img3.txt
│ ├── img4.txt
├── data.yaml
data.yaml
ファイルの作成
このファイルは、データセットの構成とクラス名を定義します:
train: /path/to/dataset/images/train
val: /path/to/dataset/images/val
nc: 2 # クラス数
names: ['person', 'car'] # クラス名
ステップ3:モデルのトレーニング
YOLOv5をトレーニングするには、以下のコマンドを実行します:
python train.py --img 640 --batch 16 --epochs 50 --data dataset/data.yaml --weights yolov5s.pt --cache
YOLOv8の場合は以下を使用します:
yolo train model=yolov8n.pt data=dataset/data.yaml epochs=50 imgsz=640
ステップ4:トレーニングの進行状況を監視
YOLOはトレーニング中にさまざまなパフォーマンス指標を記録します。YOLOv5を使用している場合、結果は runs/train/exp/
に保存されます。トレーニングのパフォーマンスを可視化するには、TensorBoardを使用できます:
tensorboard --logdir=runs/train
ステップ5:モデルの評価とテスト
トレーニングが完了したら、新しい画像でモデルをテストします:
python detect.py --weights runs/train/exp/weights/best.pt --img 640 --source test_images/
YOLOv8の場合:
yolo detect model=runs/train/exp/weights/best.pt source=test_images/
ステップ6:デプロイ用のエクスポート
YOLOモデルは、複数のフォーマットでエクスポートできます:
python export.py --weights runs/train/exp/weights/best.pt --include onnx torchscript
YOLOv8の場合:
yolo export model=runs/train/exp/weights/best.pt format=onnx
まとめ
カスタムデータセットを使用してYOLOをトレーニングすることで、セキュリティ、交通監視、自動化などのリアルワールドアプリケーションに対応したオブジェクト検出を実現できます。このステップバイステップガイドに従えば、データの準備、トレーニング、デプロイまでを効率的に進めることができます。
データセットの準備やトレーニング設定の最適化についてサポートが必要ですか?コメントでお知らせください!
Get in Touch with us
Related Posts
- LangChainとOllama、オープンソース埋め込みで作るローカル商品レコメンドシステム
- 2025年版:主要モバイルアプリフレームワーク徹底比較(Flutter、React Native、Expo、Ionic ほか)
- NumPy の `np.meshgrid()` を徹底解説:なぜ必要なのか?順序を入れ替えるとどうなるのか?
- PyMeasure を使って実験装置を自動制御する方法
- チャットボットを強化しよう:業務システムと連携するAPI開発サービス
- 今注目の「日本語対応Rasaチャットボットガイド」が話題の理由と、その活用方法
- 数学なしで「方程式」を推測する方法:猫と鳥の個体数の関係を探る
- AIに負けないプロジェクトの作り方:人とのつながりで価値を生むアイデア
- GNS3 + Wazuh + Dockerでサイバーセキュリティ演習ラボを構築しよう
- GNS3を使ってネットワーク機器の構成をシミュレーション&トレーニングする方法
- LMSとは?そしてなぜFrappe LMSに注目すべきか
- 工場における Agentic AI:スマートで自律的な次世代製造
- EVバイクをもっとスマートに、安全に管理する:ジオフェンシングとリアルタイム追跡システム
- FastAPI で Google OAuth を使った Single Sign-On (SSO) を実装する方法
- Simplicoで始めるタクシー配車アプリ開発:スケーラブル、安全、即スタート可能!
- 拡張性のあるEV充電ステーション管理システムのバックエンド設計 — Simplicoによる開発
- Odooで受注生産商品の複雑な価格設定をどう扱う?
- オーダーメイド商品を効率的に提供する「Made-to-Order」システムの作り方
- Agentic AIで業務を自動化・効率化:次世代の業務支援AIがもたらす変革
- 軽量EXFO管理パネルで光ファイバーテスト業務を効率化