Ultralytics YOLOv5 v7.0におけるインスタンス・セグメンテーションの導入

ウルトラリティクスチーム

3分で読める

2022年11月23日

YOLOv5 v7.0に新しいインスタンス分割モデルが追加され、SOTAベンチマークを凌駕するAI精度とスピードが実現しました。コミュニティにご参加ください。

我々のAIアーキテクチャーの最新バージョンであるYOLOv5 v7.0がリリースされ、新しいインスタンス・セグメンテーション・モデルを紹介できることに興奮している!

この最新リリースに取り組んでいる間、私たちは2つの目標を常に念頭に置いていた。ひとつはAIを簡単にすること、もうひとつは "最先端 "とは何かを再定義することです。

そこで、大幅な改良、修正、アップグレードを行いました。YOLOv5 v7.0では、既存のYOLOv5物体検出モデルと同じシンプルなワークフローを維持しながら、モデルのトレーニング、検証、デプロイがこれまで以上に簡単になりました。その上、すべてのSOTAベンチマークを上回り、事実上、YOLOv5は世界で最も速く、最も正確なものとなりました。

セグメンテーション・モデルのリリースは今回が初めてなので、このマイルストーンを非常に誇りに思う。このリリースを可能にしたのは、献身的なコミュニティと貢献者のおかげです。  

Ultralytics YOLOv5 v7.0 SOTA リアルタイム・インスタンス・セグメンテーション

それでは早速、YOLOv5 v7.0のリリースノートをご覧いただこう!

YOLOv5の重要なアップデート

2022年8月にYOLOv5 v6.2をリリースして以来、YOLOv5で更新された内容は以下の通りです。

  • セグメンテーションモデル⭐NEW: SOTA YOLOv5-seg COCO事前学習済みセグメンテーションモデルが初めて利用可能になりました(#9052by @glenn-jocher, @AyushExel, @Laughing-q)
  • PaddlePaddle Export:python export.py --include paddle#9459by @glenn-jocher) を使って、任意のYOLOv5モデル(cls、seg、det)をパドル形式にエクスポートします。
  • YOLOv5 AutoCache:python train.py --cache ram を使用することで、利用可能なメモリをスキャンし、予測されるデータセットのRAM使用量と比較するようになりました。これはキャッシングのリスクを減らし、データセットキャッシング機能の採用を改善するのに役立つはずです。(#10027by @glenn-jocher)
  • Cometロギングと可視化の統合Comet は永久に無料であり、YOLOv5 モデルの保存、トレーニングの再開、予測値のインタラクティブな視覚化とデバッグを可能にします。(#9232by @DN6)

新しいセグメンテーション・チェックポイント

A100GPUを使用し、画像サイズ640で300エポック、COCO上でYOLOv5セグメンテーションモデルを学習した。すべてのモデルをCPUスピードテスト用にONNX FP32に、GPUスピードテスト用にTensorRT FP16にエクスポートした。再現性を容易にするため、すべてのスピードテストをGoogleColab Proノートブックで実行した。

  • すべてのチェックポイントは、画像サイズ640、すべてのデフォルト設定で、lr0=0.01、weight_decay=5e-5のSGDオプティマイザで300エポックまで学習されています。すべての実行はここに記録されています。
  • 精度の値は、COCOデータセットのシングルモデルシングルスケールのものです。python segment/val.py --data coco.yaml --weights yolov5s-seg.pt で再現。
  • Colab Pro A100 High-RAMインスタンスを使用した100枚の推論画像の平均速度。値は推論速度のみを示す(NMSは1画像あたり約1msを追加)。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のセグメンテーション学習は、-data coco128-seg.yaml引数によるCOCO128-segセグメンテーションデータセットの自動ダウンロードと、bash data/scripts/get_coco.sh --train --val --segments、そしてpython train.py --data coco.yamlによるCOCO-segmentsデータセットの手動ダウンロードに対応しています。

シングルGPU

python segment/train.py --model yolov5s-seg.pt --data coco128-seg.yaml --epochs 5 --img 640

マルチGPU DDP

python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --model yolov5s-seg.pt --data coco128-seg.yaml --epochs 5 --img 640 --device 0,1,2,3

バル

ImageNet-1kデータセットでYOLOv5m-segの精度を検証:

bash data/scripts/get_coco.sh --val --segments # COCOのvalセグメント分割をダウンロードする (780MB、5000画像) python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 # バリデーション

予測する

事前に学習したYOLOv5m-segを使ってbus.jpgを予測する:

python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg

model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5m-seg.pt') # PyTorch Hubからロード (WARNING: まだ推論はサポートされていません)

Ultralytics YOLOv5 v7.0 インスタンスのセグメンテーション


輸出

YOLOv5s-segモデルをONNXとTensorRTにエクスポートする:

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

Ultralytics YOLOv5 v7.0 インスタンスのセグメンテーション

ご質問がありますか?Ultralyticsフォーラムで質問したり、問題を提起したり、レポにPRを投稿してください。また、YOLOv5セグメンテーションColabノートブックでクイックスタートチュートリアルを始めることもできます。

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう

無料で始める
クリップボードにコピーされたリンク