私のオープンソース プロジェクト - OnnxRuntime を使用して RTMPose を CPU 側にデプロイし、リアルタイム 2D 姿勢推定を再生します

1 RTMPose

RTMPose 論文アドレス: https://arxiv.org/abs/2303.07399

RTMPose は、トップダウン パラダイムの 2D 姿勢推定フレームワークであり、Momomomo は Simcc を改良して、より軽量かつ効果的で、より産業用途に特化したものにしました。

RTMPose のハイライトは、その産業レベルの推論速度と正確さであり、これは彼の論文要約でも強調されています。

2D 姿勢推定に関する最近の研究は、公開ベンチマークで優れたパフォーマンスを達成しましたが、産業界での応用には依然として重いモデル パラメーターと高い遅延という問題があります。このギャップを埋めるために、パラダイム、モデル アーキテクチャ、トレーニング戦略、展開などの姿勢推定の重要な要素を経験的に調査し、MMPose に基づく高性能リアルタイム複数人姿勢推定フレームワーク RTMPose を提示します。当社の RTMPose-m は、Intel i7-11700 CPU で 90+ FPS で COCO で 75.8% の AP、NVIDIA GTX 1660 Ti GPU で 430+ FPS を達成し、RTMPose-l は、COCO-WholeBody で 130+ FPS で 67.0% の AP を達成します。重要なリアルタイム アプリケーションにおける RTMPose の機能をさらに評価するために、モバイル デバイスに展開した後のパフォーマンスも報告します。私たちの RTMPose-s は 72 を達成しました。COCO で 2% AP、Snapdragon 865 チップで 70+ FPS を実現し、既存のオープンソース ライブラリを上回るパフォーマンスを実現します。コードとモデルは次の場所でリリースされます。この https URL

論文概要の紹介によると、RTMPose-m モデルはCOCO で75.8% APに達しますが、Intel i7-11700 CPU で ONNXRuntime を使用すると90+FPS、NVIDIA GTX 1660 Ti GPU で TensorRT を使用すると 430+FPS に達することができます。 . . **RTMPose-s は、携帯電話の Snapdragon865 チップに ncnn を導入し、72.2% の APパフォーマンスで70+FPSを達成します。

強いのでぜひ手に入れたいですね!

RTMPose は MMPose に統合されました。Github アドレス: https://github.com/open-mmlab/mmpose/tree/dev-1.x/projects/rtmpose

その際、RTMPose の README.md ドキュメントを詳しく見たのですが、モデルのデプロイメントに関するチュートリアルは MMDeploy に大きく依存しており、個人的には MMDeploy を深く統合するのは大変だと思いました (もちろん、これは単なる個人的な意見です。私を批判しないでください)、そして私にはさらに多くの経験があります。ローカル デプロイメント モデルとサーバー デプロイメント モデルの経験があるため、この記事では MMDeploy に依存せず、OnnxRuntime CPU C++ SDK を使用して、RTMDetnano+RTMPose-m によってエクスポートされた onnx モデルをデプロイします。ローカルCPUへ。リアルタイム 2D 姿勢推定は GPU がなくても実行できます。私がテストした旧式の i5-7400 4H もリアルタイム推定を実行できます。急いでください。

ここで、私の例で光の速度 Merge of Pr を作成してくれた RTMPose の作者、Jing Lao ( Jing Lao はホームページを知っています) にも感謝したいと思います。

2 OnnxRuntime を使用して RTMDetnano+RTMPose を CPU 側にデプロイする

さて、このセクションでは、OnnxRuntime を使用して RTMDetnano+RTMPose モデルを CPU 側にデプロイする方法を詳しく紹介します。このチュートリアルでは、RTMDetnano+RTMPose に基づくトップダウン 2D 姿勢推定サンプルを実装し、 RTMDetnano を使用して人物を検出します。その後、対応する画像領域が検出フレームに従って切り取られ、姿勢推定のために RTMPose に供給され、フレーム スキップ検出のリアルタイム 2D 姿勢推定のための単純な C++ クラスが実行されます。さて、楽しく始めましょう。

この記事のコード例はオープン ソースです: https://github.com/HW140701/RTMPose-Deploy、プリコンパイルされたパッケージが提供されています。コンパイルするのが面倒な場合は、プリコンパイルされたパッケージを直接ダウンロードして実行できます。もちろん、Windows コンピューターに VC ランタイムが必要です。興味のある方はスターを少し注文してみてください。ありがとうございます。

この記事のコードはRTMDetnano+RTMPoseによるデータの前処理と後処理の方法を中心に示していますので、興味のある方は参考にしてみてください。

この記事のサンプル コードは、MMPose dev1.x: https://github.com/open-mmlab/mmpose/pull/2316に送信されています。

2.1 Onnx モデルのダウンロードと Onnx モデルの変換

RTMPose のREADME.mdドキュメントからデフォルトでエクスポートされる onnx モデルの例を見つけます。ダウンロード アドレスは次のとおりです。

https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-cpu.zip

解凍が完了すると、end2end.onnx という名前の RTMDetnano+RTMPose の onnx モデルが表示されます。

ただし、ここでの RTMPose は、coco17 データ セットの 17 人体のキー ポイントです。他の RTMPose onnx モデルが必要な場合は、RTMPose のREADME.mdを参照してonnx モデルをエクスポートしてください。

次に、ターゲット検出器は RTMDetnano です。もちろん、さまざまな YOOOOOOOOOOOO など、他のターゲット検出器を使用することもできます。個人的には、ターゲット検出器はその後の姿勢推定にほとんど影響を与えないと思います。もちろん、このターゲット検出器は遅延検出器ではありません。

2.2 RTMDetnano+RTMPose に基づくトップダウン 2D 姿勢推定の例

2.2.1 RTMDetnano に基づくターゲット検出

上記のリンクで提供されている RTMDetnano は、batch_size、image_height、image_width に動的な寸法があるため、入力画像の幅と高さは実装中に固定されません。

入力画像の正規化に使用される image_mean と image_std の値は、https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-cpu.zip圧縮ファイル内の各モデルに対応するPipeline.jsonファイルから取得されます。パッケージです

詳細については、倉庫コードを参照してください。

画像を入力した後、推論した結果、カテゴリー 0 で信頼度が最も高い検出フレームが、以降の姿勢推定のための検出対象領域としてこのウェアハウス内で選択されます。つまり、この例では、現時点では、画像内で最も高いターゲット検出確率が推定されますが、複数人の姿勢推定も拡張が比較的簡単で、大量のタスクはありません。

2.2.2 RTMPose に基づく姿勢推定

ターゲットの検出が完了すると、RTMPose で必要な入力次元が 1x3x256x192 であるため、検出フレームの領域が検出フレームとアフィン変換に従って切り取られ、切り取られた画像が前処理されて RTMPose に供給されて認識されます。と 17 個のキーが取得されます。256x192 上の点の座標が取得され、アンチ アフィン変換を通じてその座標を元の入力画像に反転して、正しい座標を取得します。

詳細については、倉庫コードを参照してください。

2.2.3 リアルタイムビデオストリーム姿勢推定: RTMPoseTracker

RTMDetnano と RTMPoseTracker の推論クラスが構築された後、リアルタイムのビデオ ストリーム検出を処理するシンプルな RTMPoseTracker を構築しました。デフォルトでは、RTMPoseTracker は 10 フレームごとにターゲット検出のみを実行するため、単一フレームの推論遅延を大幅に削減できます。リアルタイム 2D 姿勢推定パフォーマンス。

ご興味がございましたら、私の個人ウェブサイトをご覧ください: https://www.stubbornhuang.com/

おすすめ

転載: blog.csdn.net/HW140701/article/details/130431418