PyTorchをベースとした最先端のリアルタイム物体検出モデルYOLOv5。物体検出、画像セグメンテーション、画像分類タスクをサポート。
YOLOv5プロジェクト詳細
プロジェクト概要
Ultralytics YOLOv5 🚀 は、Ultralyticsによって開発された、最先端の(SOTA)コンピュータビジョンモデルです。PyTorchフレームワークに基づいており、YOLOv5はその使いやすさ、速度、および精度で知られています。広範な研究開発の洞察とベストプラクティスを融合しており、さまざまな視覚AIタスクで人気の選択肢となっています。
プロジェクトアドレス: https://github.com/ultralytics/yolov5
主要な特徴
マルチタスクサポート
YOLOv5は、さまざまなコンピュータビジョンタスクをサポートしています。
- 物体検出: 画像内の複数のオブジェクトを識別して位置を特定します。
- インスタンスセグメンテーション: ピクセルレベルでのオブジェクトのセグメンテーション。
- 画像分類: 単一の画像のカテゴリ分類。
技術的な利点
主な機能には、リアルタイム推論、テスト時間拡張(TTA)やモデルアンサンブルなどのさまざまなトレーニングテクニックのサポート、およびTFLite、ONNX、CoreML、TensorRTなどのエクスポート形式との互換性があります。
モデルアーキテクチャとパフォーマンス
モデル仕様
YOLOv5は、さまざまなニーズを満たすために、さまざまなモデルサイズを提供しています。
モデル | パラメータ数(M) | 速度 | 精度 | 適用シーン |
---|---|---|---|---|
YOLOv5n | 1.9 | 最速 | 低い | モバイルデバイス、エッジコンピューティング |
YOLOv5s | 7.2 | 速い | 中程度 | 汎用アプリケーション |
YOLOv5m | 21.2 | 中程度 | 高い | バランスの取れたパフォーマンス |
YOLOv5l | 46.5 | 遅い | 高い | 高精度が必要 |
YOLOv5x | 86.7 | 最も遅い | 最高 | 最高精度が必要 |
パフォーマンス指標
COCOデータセットでのパフォーマンス:
- YOLOv5s: mAP@0.5:0.95 = 37.4%, 速度6.4ms(V100)
- YOLOv5m: mAP@0.5:0.95 = 45.4%, 速度8.2ms(V100)
- YOLOv5l: mAP@0.5:0.95 = 49.0%, 速度10.1ms(V100)
- YOLOv5x: mAP@0.5:0.95 = 50.7%, 速度12.1ms(V100)
インストールとクイックスタート
環境要件
- Python >= 3.8.0
- PyTorch >= 1.8
インストール手順
# リポジトリをクローン
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 依存関係をインストール
pip install -r requirements.txt
PyTorch Hubを使用した推論
import torch
# YOLOv5モデルをロード
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# 入力画像ソースを定義
img = "https://ultralytics.com/images/zidane.jpg"
# 推論を実行
results = model(img)
# 結果を処理
results.print() # 結果をコンソールに出力
results.show() # 結果をウィンドウに表示
results.save() # 結果をruns/detect/expに保存
コマンドライン推論
# カメラを使用して推論
python detect.py --weights yolov5s.pt --source 0
# ローカル画像ファイルに対して推論
python detect.py --weights yolov5s.pt --source img.jpg
# ビデオファイルに対して推論
python detect.py --weights yolov5s.pt --source vid.mp4
# 画像ディレクトリに対して推論
python detect.py --weights yolov5s.pt --source path/to/images/
# YouTubeビデオに対して推論
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
カスタムモデルのトレーニング
トレーニングコマンドの例
# COCOデータセットでYOLOv5sを300エポックトレーニング
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# YOLOv5mをトレーニング
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# YOLOv5lをトレーニング
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
複数GPUトレーニング
# 複数GPU分散トレーニングを使用
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --batch-size 64 --device 0,1,2,3
インスタンスセグメンテーション機能
YOLOv5 v7.0バージョンでは、インスタンスセグメンテーション機能が導入され、COCOデータセットで最先端のパフォーマンスを達成しました。
セグメンテーションモデルのパフォーマンス
モデル | mAP^box | mAP^mask | パラメータ数(M) | 速度(ms) |
---|---|---|---|---|
YOLOv5n-seg | 27.6 | 23.4 | 2.0 | 59.2 |
YOLOv5s-seg | 37.6 | 32.0 | 7.6 | 63.7 |
YOLOv5m-seg | 45.0 | 37.1 | 22.0 | 89.5 |
YOLOv5l-seg | 49.0 | 39.9 | 47.8 | 168.4 |
YOLOv5x-seg | 50.7 | 41.4 | 88.8 | 265.7 |
セグメンテーションのトレーニング例
# セグメンテーションモデルをトレーニング
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# セグメンテーションモデルを検証
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# セグメンテーションモデルを使用して予測
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
画像分類機能
YOLOv5 v6.2バージョンでは、画像分類機能が追加され、ImageNetデータセットで90エポックトレーニングした結果:
分類モデルのパフォーマンス
モデル | Top1精度 | Top5精度 | パラメータ数(M) | 速度(ms) |
---|---|---|---|---|
YOLOv5s-cls | 71.5% | 90.2% | 5.5 | 1.7 |
YOLOv5m-cls | 75.9% | 92.9% | 13.0 | 2.8 |
YOLOv5l-cls | 78.0% | 94.0% | 27.4 | 4.9 |
YOLOv5x-cls | 79.0% | 94.4% | 55.4 | 8.7 |
分類トレーニングの例
# CIFAR-100データセットでトレーニング
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# ImageNetモデルを検証
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# 画像分類予測
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
モデルのエクスポートとデプロイ
YOLOv5は、さまざまなデプロイメント形式をサポートしています。
# ONNX形式にエクスポート
python export.py --weights yolov5s.pt --include onnx
# TensorRT形式にエクスポート
python export.py --weights yolov5s.pt --include engine
# CoreML形式にエクスポート(iOS用)
python export.py --weights yolov5s.pt --include coreml
# TFLite形式にエクスポート(モバイルデバイス用)
python export.py --weights yolov5s.pt --include tflite
高度な機能
テスト時間拡張(TTA)
反射とスケール拡張により予測精度を向上させます。
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
モデルアンサンブル
複数のモデルを組み合わせて、より優れたパフォーマンスを実現します。
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
ハイパーパラメータ進化
最適なトレーニングハイパーパラメータを自動的に見つけます。
python train.py --data coco.yaml --evolve 300
統合とエコシステム
YOLOv5は、複数の主要なAIプラットフォームと深く統合されています。
- Weights & Biases: 実験の追跡と可視化
- Comet ML: 実験の管理と監視
- Roboflow: データのラベル付けと管理
- Intel OpenVINO: モデルの最適化とデプロイ
- Neural Magic: モデルのスパース化と高速化
- Ultralytics HUB: ワンストップのトレーニングとデプロイプラットフォーム
コミュニティとサポート
- GitHubリポジトリ: https://github.com/ultralytics/yolov5
- 公式ドキュメント: https://docs.ultralytics.com/yolov5/
- Discordコミュニティ: https://discord.com/invite/ultralytics
- 問題のフィードバック: https://github.com/ultralytics/yolov5/issues
まとめ
YOLOv5は、物体検出分野における重要なマイルストーンとして、その優れたパフォーマンス、使いやすさ、および豊富な機能により、学術研究および産業アプリケーションにとって好ましいフレームワークとなっています。初心者であろうとプロの開発者であろうと、YOLOv5のエコシステムで適切なソリューションを見つけることができます。