yolov5 - YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

(YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite)

Created at: 2020-05-18 11:45:11
Language: Python
License: GPL-3.0

英語|简体中文

YOLOv5 CI YOLOv5 引用 ドッカープル
グラデーションで実行 コラボで開く カグルで開く

YOLOv5 🚀は世界で最も愛されているビジョンAIであり、Ultralyticsのオープンソース研究を未来のビジョンAI手法に代表し、数千時間の研究開発で学んだ教訓とベストプラクティスを取り入れています。

エンタープライズライセンスをリクエストするには、Ultralyticsライセンスのフォームに記入してください。

セグメンテーション ⭐ NEW

当社の新しいYOLOv5リリースv7.0インスタンスセグメンテーションモデルは、世界で最も速く、最も正確であり、現在のすべてのSOTAベンチマークを上回っています。トレーニング、検証、デプロイを非常に簡単にしました。詳細についてはリリース ノートを参照し、クイックスタート チュートリアルについては YOLOv5 セグメンテーション Colab ノートブックをご覧ください。

セグメンテーションチェックポイント

A100 GPU を使用して、画像サイズ 640 で 300 エポックの COCO で YOLOv5 セグメンテーション モデルをトレーニングしました。CPU 速度テスト用にすべてのモデルを ONNX FP32 に、GPU 速度テスト用に TensorRT FP16 にエクスポートしました。簡単に再現できるように、Google Colab Proノートブックですべての速度テストを実行しました。

モデル サイズ
(ピクセル)
mAPボックス
50-95
mAPマスク
50-95
列車時間 300 エポック
A100 (時間

)
速度
ONNX CPU
(ミリ秒)
速度
TRT A100
(ミリ秒)

パラメータ(M)
FLOPs
@640 (B)
YOLOv5n-seg 640 27.6 23.4 80:17 62.7 1.2 2.0 7.1
YOLOv5s-seg 640 37.6 31.7 88:16 173.3 1.4 7.6 26.4
YOLOv5m-seg 640 45.0 37.1 108:36 427.0 2.2 22.0 70.8
YOLOv5l-seg 640 49.0 39.9 66:43 (2x) 857.4 2.9 47.9 147.7
YOLOv5x-seg 640 50.7 41.4 62:56 (3x) 1579.2 4.5 88.8 265.7
  • すべてのチェックポイントは、イメージサイズ 640 およびすべてのデフォルト設定の SGD オプティマイザを使用して 300 エポックにトレーニングされます。
    https://wandb.ai/glenn-jocher/YOLOv5_v70_official に記録された実行
    lr0=0.01
    weight_decay=5e-5
  • 精度の値は、COCOデータセットの単一モデルの単一スケールの場合です。
    再現者
    python segment/val.py --data coco.yaml --weights yolov5s-seg.pt
  • 速度は、Colab Pro A100 High-RAMインスタンスを使用して100を超える推論画像を平均しました。値は推論速度のみを示します(NMSは画像ごとに約1ミリ秒を追加します)。
    再現者
    python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1
  • FP32 で ONNX にエクスポートし、FP16 で TensorRT にエクスポートします。
    再現者
    export.py
    python export.py --weights yolov5s-seg.pt --include engine --device 0 --half
セグメンテーションの使用例コラボで開く

列車

YOLOv5セグメンテーショントレーニングは、引数付きのCOCO128セグメンテーションデータセットの自動ダウンロードと、 とを使用したCOCOセグメントデータセットの手動ダウンロードをサポートしています。

--data coco128-seg.yaml
bash data/scripts/get_coco.sh --train --val --segments
python train.py --data coco.yaml

# Single-GPU
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640

# Multi-GPU DDP
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3

ヴァル

COCO データセットで YOLOv5s-seg マスク mAP を検証します。

bash data/scripts/get_coco.sh --val --segments  # download COCO val segments split (780MB, 5000 images)
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640  # validate

予言する

事前トレーニング済みの YOLOv5m-seg.pt を使用してバスを予測.jpg:

python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5m-seg.pt')  # load from PyTorch Hub (WARNING: inference not yet supported)
ジダン バス

輸出

YOLOv5s-seg モデルを ONNX と TensorRT にエクスポートします。

python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0

ドキュメンテーション

トレーニング、テスト、デプロイに関する完全なドキュメントについては、YOLOv5 ドキュメントを参照してください。クイックスタートの例については、以下を参照してください。

取り付ける

PyTorch>=1.7 を含む Python>=3.7.0 環境でリポジトリを複製してインストール.txtする必要があります。

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install
推論

YOLOv5 PyTorch Hub 推論。最新のモデルから自動的にダウンロードされるモデル YOLOv5 リリース。

import torch

# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # or yolov5n - yolov5x6, custom

# Images
img = 'https://ultralytics.com/images/zidane.jpg'  # or file, Path, PIL, OpenCV, numpy, list

# Inference
results = model(img)

# Results
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.
detect.py による推論

detect.py
さまざまなソースで推論を実行し、モデルを自動的にダウンロードします 最新の YOLOv5 リリースと .
runs/detect

python detect.py --weights yolov5s.pt --source 0                               # webcam
                                               img.jpg                         # image
                                               vid.mp4                         # video
                                               screen                          # screenshot
                                               path/                           # directory
                                               list.txt                        # list of images
                                               list.streams                    # list of streams
                                               'path/*.jpg'                    # glob
                                               'https://youtu.be/Zgi9g1ksQHc'  # YouTube
                                               'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream
訓練

次のコマンドは、YOLOv5 COCO の結果を再現します。モデルとデータセットは最新のものから自動的にダウンロードされます YOLOv5 リリース。YOLOv5n/s/m/l/x のトレーニング時間は V100 GPUで1/2/4/6/8日(マルチGPUは倍高速)。[ 可能な限り最大、またはパス YOLOv5 オートバッチ。V100-16GBの場合のバッチサイズを示しています。

--batch-size
--batch-size -1

python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml  --batch-size 128
                                                                 yolov5s                    64
                                                                 yolov5m                    40
                                                                 yolov5l                    24
                                                                 yolov5x                    16
チュートリアル

統合




ロボフロー クリアML ⭐ NEW コメット ⭐ NEW ニューラルマジック ⭐ NEW
カスタムデータセットにラベルを付けてYOLOv5に直接エクスポートし、Roboflowでトレーニングします ClearMLを使用してYOLOv5を自動的に追跡、視覚化、さらにはリモートトレーニングします(オープンソース! 永久に無料のCometを使用すると、YOLOv5モデルを保存し、トレーニングを再開し、予測をインタラクティブに視覚化およびデバッグできます ニューラルマジックディープスパースでYOLOv5推論を最大6倍高速に実行

ウルトラリティクスハブ

Ultralytics HUBは⭐、データセットを視覚化し、YOLOv5 🚀モデルをトレーニングし、シームレスなエクスペリエンスで現実世界にデプロイするための新しいノーコードソリューションです。今すぐ無料で始めましょう!

なぜYOLOv5なのか

YOLOv5は、非常に簡単に始められ、習得しやすいように設計されています。私たちは実際の結果を優先します。

YOLOv5-P5 640フィギュア

図ノート
  • COCO AP val は、256 から 1536 までのさまざまな推論サイズで 5000 イメージの COCO val2017 データセットで測定された mAP@0.5:0.95 メトリックを示します。
  • GPU 速度は、バッチサイズ 32 の AWS p3.2xlarge V100 インスタンスを使用して、COCO val2017 データセットの画像あたりの平均推論時間を測定します。
  • バッチサイズ8でのgoogle / automlからの効率的なDetデータ。
  • 再現者
    python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt

事前トレーニング済みチェックポイント

モデル サイズ
(ピクセル)
mAPval
50-95
mAPval
50
速度
CPU b1
(ミリ秒)
速度
V100 b1
(ミリ秒)
速度
V100 b32
(ミリ秒)

パラメータ(M)
FLOPs
@640 (B)
YOLOv5n 640 28.0 45.7 45 6.3 0.6 1.9 4.5
YOLOv5s 640 37.4 56.8 98 6.4 0.9 7.2 16.5
ヨロ5m 640 45.4 64.1 224 8.2 1.7 21.2 49.0
YOLOv5l 640 49.0 67.3 430 10.1 2.7 46.5 109.1
YOLOv5x 640 50.7 68.9 766 12.1 4.8 86.7 205.7
YOLOv5n6 1280 36.0 54.4 153 8.1 2.1 3.2 4.6
YOLOv5s6 1280 44.8 63.7 385 8.2 3.6 12.6 16.8
YOLOv5m6 1280 51.3 69.3 887 11.1 6.8 35.7 50.0
YOLOv5l6 1280 53.7 71.3 1784 15.8 10.5 76.8 111.4
YOLOv5x6
+ TTA
1280å¹´
1536å¹´
55.0
% 55.8%
72.7
% 72.7%
3136
-
26.2
-
19.4
-
140.7
-
209.8
-
テーブルノート
  • すべてのチェックポイントは、デフォルト設定で 300 エポックにトレーニングされます。Nano モデルと Small モデルは hyp.scratch-low.yaml hyps を使用し、他のモデルは hyp.scratch-high.yaml を使用します。
  • mAPval 値は、COCO val2017 データセットの単一モデルの単一スケール用です。
    再現者
    python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
  • AWS p3.2xlarge インスタンスを使用した COCO val イメージで平均化された速度。NMS 時間 (~1 ミリ秒/img) は含まれません。
    再現者
    python val.py --data coco.yaml --img 640 --task speed --batch 1
  • TTAテスト時間の拡張には、反射とスケールの拡張が含まれます。
    再現者
    python val.py --data coco.yaml --img 1536 --iou 0.7 --augment

分類 ⭐ 新規

YOLOv5 リリース v6.2 では、分類モデルのトレーニング、検証、デプロイがサポートされます。詳細についてはリリース ノートを参照し、クイックスタート チュートリアルについては YOLOv5 分類コラボ ノートブックをご覧ください。

分類チェックポイント

4xA100 インスタンスを使用して ImageNet で YOLOv5-cls 分類モデルを 90 エポックトレーニングし、ResNet モデルと EfficientNet モデルを同じ既定のトレーニング設定でトレーニングして比較しました。CPU 速度テスト用にすべてのモデルを ONNX FP32 に、GPU 速度テスト用に TensorRT FP16 にエクスポートしました。簡単に再現できるように、Google Colab Proですべての速度テストを実行しました。

モデル サイズ
(ピクセル)

ACC トップ1

ACC トップ5
トレーニング
90 エポック
4xA100 (時間)
速度
ONNX CPU
(ミリ秒)
スピード
テンソルRT V100
(ミリ秒)

パラメータ(M)
FLOPs
@224 (B)
YOLOv5n-cls 224 64.6 85.4 7:59 3.3 0.5 2.5 0.5
YOLOv5s-cls 224 71.5 90.2 8:09 6.6 0.6 5.4 1.4
YOLOv5m-cls 224 75.9 92.9 10:06 15.5 0.9 12.9 3.9
YOLOv5l-cls 224 78.0 94.0 11:56 26.9 1.4 26.5 8.5
YOLOv5x-cls 224 79.0 94.4 15:04 54.3 1.8 48.1 15.9
レスネット18 224 70.3 89.5 6:47 11.2 0.5 11.7 3.7
レスネット34 224 73.9 91.8 8:33 20.6 0.9 21.8 7.4
レスネット50 224 76.8 93.4 11:10 23.4 1.0 25.6 8.5
レスネット101 224 78.5 94.3 17:10 42.1 1.9 44.5 15.9
EfficientNet_b0 224 75.1 92.4 13:03 12.5 1.3 5.3 1.0
EfficientNet_b1 224 76.4 93.2 17:04 14.9 1.6 7.8 1.5
EfficientNet_b2 224 76.6 93.4 17:10 15.9 1.6 9.1 1.7
EfficientNet_b3 224 77.7 94.0 19:19 18.9 1.9 12.2 2.4
テーブル ノート (クリックして展開)
  • すべてのチェックポイントは、イメージサイズ 224 およびすべてのデフォルト設定の SGD オプティマイザを使用して 90 エポックにトレーニングされます。
    https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 に記録された実行
    lr0=0.001
    weight_decay=5e-5
  • 精度の値は、ImageNet-1k データセットの単一モデルの単一スケールに対するものです。
    再現者
    python classify/val.py --data ../datasets/imagenet --img 224
  • 速度は、Google Colab Pro V100 高 RAM インスタンスを使用して 100 を超える推論画像を平均しました。
    再現者
    python classify/val.py --data ../datasets/imagenet --img 224 --batch 1
  • FP32 で ONNX にエクスポートし、FP16 で TensorRT にエクスポートします。
    再現者
    export.py
    python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224
分類の使用例コラボで開く

列車

YOLOv5 分類トレーニングでは、引数を使用して MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof、および ImageNet データセットの自動ダウンロードがサポートされています。たとえば、MNISTのトレーニングを開始するには、を使用します。

--data
--data mnist

# Single-GPU
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128

# Multi-GPU DDP
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3

ヴァル

ImageNet-1k データセットで YOLOv5m-cls の精度を検証します。

bash data/scripts/get_imagenet.sh --val  # download ImageNet val split (6.3G, 50000 images)
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224  # validate

予言する

事前トレーニング済みの YOLOv5s-cls.pt を使用してバスを予測します.jpg:

python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s-cls.pt')  # load from PyTorch Hub

輸出

トレーニング済みの YOLOv5s-cls、ResNet、および EfficientNet モデルのグループを ONNX および TensorRT にエクスポートします。

python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224

環境

検証済みの環境で数秒で開始できます。詳細については、以下の各アイコンをクリックしてください。

アプリ

ウルトラリティクスアプリをダウンロードして、iOSまたはAndroidデバイスでYOLOv5モデルを実行します!

ウルトラリティクスモバイルアプリ

貢献する

私たちはあなたの意見が大好きです!私たちは、YOLOv5への貢献をできるだけ簡単で透明性のあるものにしたいと考えています。開始するには寄稿ガイドを参照し、YOLOv5アンケートに記入して、経験に関するフィードバックを送信してください。すべての貢献者に感謝します!

ライセンス

YOLOv5 は、次の 2 つの異なるライセンスで利用できます。

  • GPL-3.0ライセンス: 詳細はライセンスファイルを参照してください。
  • エンタープライズライセンス:GPL-3.0のオープンソース要件なしで商用製品開発の柔軟性を高めます。典型的なユースケースは、UltralyticsソフトウェアとAIモデルを商用製品やアプリケーションに埋め込むことです。Ultralytics ライセンスでエンタープライズ ライセンスをリクエストします。

接触

YOLOv5 のバグと機能リクエストについては、GitHub の問題をご覧ください。専門的なサポートについては、お問い合わせください。