概要
物体検出はコンピューター ビジョンの大きな分野であり、コンピューター ビジョンの「実際の」アプリケーションの中でも重要なアプリケーションの XNUMX つです。
オブジェクト検出は、画像分類ほど標準化されていません。これは主に、新しい開発のほとんどが、大規模なライブラリやフレームワークではなく、通常、個々の研究者、保守担当者、および開発者によって行われるためです。 必要なユーティリティ スクリプトを TensorFlow や PyTorch などのフレームワークにパッケージ化し、これまでの開発を導いた API ガイドラインを維持することは困難です。
これにより、オブジェクト検出がやや複雑になり、通常はより冗長になり (常にではありません)、画像分類よりも親しみにくくなります。
大衆にとって幸いなことに、Ultralytics は、他の研究開発チームによって YOLOv5 などの新しいバージョンに拡張された YOLOv7 を中心に、シンプルで非常に強力で美しいオブジェクト検出 API を開発しました。
この短いガイドでは、最先端の YOLOv7 を使用して、Python でオブジェクト検出を実行します。
YOLOランドスケープとYOLOv7
YOLO (一度しか見ない) は方法論であり、オブジェクト検出用に構築されたモデルのファミリーでもあります。 2015 年の開始以来、YOLOv1、YOLOv2 (YOLO9000)、および YOLOv3 は同じ作成者によって提案されており、ディープ ラーニング コミュニティはその後もオープンソース化の進歩を続けてきました。
Ultralytics の YOLOv5 は PyTorch での YOLO の最初の大規模な実装であり、これによりこれまで以上にアクセスしやすくなりましたが、YOLOv5 がそのような足場を獲得した主な理由は、その周りに構築された美しくシンプルで強力な API でもあります。 このプロジェクトは、不要な詳細を抽象化しながら、カスタマイズ可能性、実質的にすべての使用可能なエクスポート形式を可能にし、プロジェクト全体を効率的かつ可能な限り最適にする驚くべきプラクティスを採用しています.
YOLOv5 は依然として、オブジェクト検出モデルを構築するための主要なプロジェクトであり、YOLO メソッドを発展させることを目的とする多くのリポジトリは、YOLOv5 をベースラインとして開始し、同様の API を提供します (または単にプロジェクトをフォークしてその上に構築します)。 そのような場合です YOLOR (You Only Learned One Representation) YOLORの上に構築されたYOLOv7(同じ作者)。 YOLOv7 は YOLO 方法論の最新の進歩であり、最も注目すべきは、YOLOv7 は、キーポイント (スケルトン) を出力し、以前の YOLO モデルでは標準ではなかったバウンディング ボックス回帰だけでなく、インスタンス セグメンテーションを実行できる新しいモデル ヘッドを提供します。
これにより、インスタンスのセグメンテーションとキーポイントの検出がこれまで以上に高速になります!
さらに、YOLOv7 は、パラメーター数の削減と計算効率の向上により、以前のモデルよりも高速かつ高精度に実行されます。
モデル自体は、アーキテクチャの変更と、「景品の袋」と呼ばれるトレーニングの側面の最適化を通じて作成されました。これにより、推論コストを増やすことなく精度が向上しました。
YOLOv7 のインストール
YOLOv7 をインストールして使用するには、GitHub リポジトリをローカル マシンにダウンロードし、パッケージ化されたスクリプトを実行する必要があります。
注: 残念ながら、執筆時点では、YOLOv7 は YOLOv5 などのクリーンなプログラム API を提供していません。 torch.hub()
、GitHub リポジトリを渡します。これは動作するはずの機能のようですが、現在失敗しています。 修正されたら、ガイドを更新するか、プログラム API で新しいガイドを公開します。 ここでは、リポジトリで提供される推論スクリプトに焦点を当てます。
それでも、動画や画像などをリアルタイムで検出し、結果を簡単に保存できます。 このプロジェクトは、広範なドキュメントがある YOLOv5 と同じ規則に従っているため、YOLOv5 リポジトリにニッチな質問がある場合は、よりニッチな質問への回答が見つかる可能性があります。
リポジトリをダウンロードして、いくつかの推論を実行しましょう。
! git clone https://github.com/WongKinYiu/yolov7.git
これにより、 yolov7
プロジェクトを格納する現在の作業ディレクトリ内のディレクトリ。 そのディレクトリに移動して、ファイルを見てみましょう。
%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md detect.py models tools
README.md export.py paper train.py
cfg figure requirements.txt train_aux.py
data hubconf.py scripts utils
deploy inference test.py runs
注: Google Colab ノートブックでは、魔法を実行する必要があります %cd
ディレクトリを変更したい各セルのコマンド yolov7
、次のセルは元の作業ディレクトリに戻ります。 ローカル Jupyter ノートブックで、ディレクトリを変更する かつて コマンドを何度も再発行する必要はありません。
detect.py
検出を実行し、結果を以下に保存する推論スクリプトです。 runs/detect/video_name
、ここで指定できます video_name
呼び出している間 detect.py
スクリプト。 export.py
モデルを ONNX、TFLite などのさまざまな形式にエクスポートします。 train.py
カスタム YOLOv7 検出器のトレーニングに使用できます (別のガイドのトピック)。 test.py
検出器をテストするために使用できます (重みファイルからロードされます)。
いくつかの追加のディレクトリには、構成が保持されます (cfg
)、サンプルデータ(inference
)、モデルの構築と COCO 構成に関するデータ (data
、等)。
YOLOv7 サイズ
YOLO ベースのモデルは適切にスケーリングされ、通常、小さくて精度の低いモデル、および大きくて精度の高いモデルとしてエクスポートされます。 これらは、それぞれ弱いデバイスまたは強いデバイスに展開されます。
YOLOv7 はいくつかのサイズを提供し、MS COCO に対してそれらをベンチマークしました。
ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!
モデル | テストサイズ | APtest | AP50test | AP75test | バッチ 1 fps | バッチ 32 の平均時間 |
---|---|---|---|---|---|---|
YOLOv7 | 640 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 161 FPS | 2.8ミリ秒 |
YOLOv7-X | 640 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 114 FPS | 4.3ミリ秒 |
YOLOv7-W6 | 1280 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 84 FPS | 7.6ミリ秒 |
YOLOv7-E6 | 1280 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 56 FPS | 12.3ミリ秒 |
YOLOv7-D6 | 1280 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 44 FPS | 15.0ミリ秒 |
YOLOv7-E6E | 1280 | 視聴者の38%が | 視聴者の38%が | 視聴者の38%が | 36 FPS | 18.7ミリ秒 |
モデルが実行されると予想される基盤となるハードウェア、および必要な精度に応じて、それらの中から選択できます。 最小のモデルは、V160 でサイズ 640 の画像で 100 FPS を超えます! より一般的な消費者向け GPU でも、十分なリアルタイム パフォーマンスが期待できます。
YOLOv7 によるビデオ推論
作る inference-data
検出したい画像やビデオを保存するフォルダー。 同じディレクトリにあると仮定すると、検出スクリプトを次のように実行できます。
! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img
これにより、デスクトップに Qt ベースのビデオが表示され、ライブの進行状況と推論がフレームごとに表示され、ステータスが標準出力パイプに出力されます。
Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU
Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]
Fusing layers...
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
Convert model to Traced-model...
traced_script_module saved!
model is traced!
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS
プロジェクトは、CPU ベースのマシンでは低速で実行され (上記の出力の推論ステップごとに 1000 ミリ秒、Intel ベースの 2017 MacBook Pro で実行)、GPU ベースのマシンでは大幅に高速 (~5 ミリ秒/フレームに近い) であることに注意してください。 V100 で)。 このような CPU ベースのシステムでも、 yolov7-tiny.pt
走る 172ms/frame
、リアルタイムにはほど遠いですが、CPUでこれらの操作を処理するにはまだ非常にまともです。
実行が完了すると、結果のビデオが下に表示されます。 runs/video_1
(私たちが提供した名前 detect.py
として保存されます。 .mp4
:
画像の推論
画像の推論は同じプロセスに要約されます – ファイルシステム内の画像への URL を提供し、呼び出します detect.py
:
! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt
注: 執筆時点では、設定しても、出力はラベルを画像サイズにスケーリングしません --img SIZE
. これは、大きな画像のバウンディング ボックスの線が非常に細く、ラベルが小さいことを意味します。
まとめ
この短いガイドでは、YOLOR の上に構築された YOLO ファミリーの最新の進歩である YOLOv7 について簡単に説明しました。 リポジトリをローカル マシンにインストールし、事前にトレーニングされたネットワークを使用してビデオと画像でオブジェクト検出推論スクリプトを実行する方法を確認しました。
以降のガイドでは、キーポイントの検出とインスタンスのセグメンテーションについて説明します。
さらに先へ - コンピュータ ビジョンのための実用的な深層学習
あなたの好奇心旺盛な性質は、さらに先へ進みたいと思わせますか? 私たちは私たちをチェックアウトすることをお勧めします コース: 「Pythonによるコンピュータビジョンのための実践的な深層学習」.
別のコンピューター ビジョン コースですか?
MNIST 数字や MNIST ファッションの分類は行いません。 彼らはずっと前に彼らの役割を果たしました。 高度なブラックボックス アーキテクチャにパフォーマンスの負担を負わせる前に、あまりにも多くの学習リソースが基本的なデータセットと基本的なアーキテクチャに焦点を合わせています。
私たちが注目したいのは 謎解き, 実用性, 理解する, 直感 & 実際のプロジェクト. 学びたい の あなたは違いを生むことができますか? 私たちの脳が画像を処理する方法から、乳がんの研究レベルのディープ ラーニング分類器の作成、「幻覚」を起こすディープ ラーニング ネットワークまで、実際の作業を通じて原理と理論を教え、コンピュータビジョンを解決するためにディープラーニングを適用する専門家になるためのノウハウとツール。
内部には何がありますか?
- ビジョンの第一原理と、コンピューターに「見る」ことを教える方法
- コンピューター ビジョンのさまざまなタスクとアプリケーション
- あなたの仕事を楽にする貿易ツール
- コンピュータ ビジョンのためのデータセットの検索、作成、および利用
- 畳み込みニューラル ネットワークの理論と応用
- データセット内のドメイン シフト、共起、およびその他のバイアスの処理
- 転移学習と、他人のトレーニング時間と計算リソースを自分の利益のために利用する
- 最先端の乳がん分類器の構築とトレーニング
- 主流のアイデアに健全な懐疑心を適用し、広く採用されている手法の意味を理解する方法
- t-SNE と PCA を使用した ConvNet の「概念空間」の可視化
- 企業がコンピューター ビジョン技術を使用してより良い結果を達成する方法のケース スタディ
- 適切なモデル評価、潜在空間の可視化、モデルの注意の特定
- ドメイン調査の実施、独自のデータセットの処理、モデル テストの確立
- 最先端のアーキテクチャ、アイデアの進展、それらの独自性と実装方法
- KerasCV – 最先端のパイプラインとモデルを作成するための WIP ライブラリ
- 論文を解析して読み、自分で実装する方法
- 用途に応じた機種選定
- エンドツーエンドの機械学習パイプラインの作成
- Faster R-CNN、RetinaNet、SSD、YOLO を使用したオブジェクト検出のランドスケープと直感
- インスタンスとセマンティック セグメンテーション
- YOLOv5によるリアルタイム物体認識
- YOLOv5 オブジェクト検出器のトレーニング
- KerasNLP (業界で強力な WIP ライブラリ) を使用したトランスフォーマーの操作
- トランスフォーマーを ConvNets と統合して画像のキャプションを生成する
- DeepDream
- コンピューター ビジョンのためのディープ ラーニング モデルの最適化