Tau-J/rtmlib

RTMPose series (RTMPose, DWPose, RTMO, RTMW) without mmcv, mmpose, mmdet etc.

rtmlib – 軽量なポーズ推定ライブラリ

何であるかrtmlib は、人間および動物のポーズ推定を、人気のある RTMPose および ViTPose モデルで行うための非常に小さな Python パッケージです。OpenMMLab の重いスタック(mmcv, mmpose, mmdet, …)を導入せずに済みます。依存関係は numpy, opencv-python, opencv-contrib-python, onnxruntime のみで、必要に応じて OpenVINO、TensorRT、または GPU 対応 ONNX Runtime を使用して高速化できます。

なぜ重要か – ポーズ推定は AR/VR、スポーツ分析、ロボット工学、アニメーション、および多くの AI ベースのアプリケーションで使われるコアなコンピュータビジョンタスクです。大きな OpenMMLab 依存関係を排除することで、rtmlib は軽量な環境(たとえば単純なスクリプト、Web UI、エッジデバイスなど)にポーズ推論を簡単に埋め込むことを可能にします。同時に、最先端のモデルへのアクセスも維持しています。


クイックスタート(単一画像)

import cv2
from rtmlib import Wholebody, draw_skeleton

img = cv2.imread('demo.jpg')
whole = Wholebody(
    to_openpose=False,          # False = mmpose 形式のスケルトン
    mode='balanced',            # 'performance' | 'lightweight' | 'balanced'
    backend='onnxruntime',
    device='cpu'
)
keypoints, scores = whole(img)
img = draw_skeleton(img, keypoints, scores, kpt_thr=0.5, to_openpose=False)
cv2.imshow('pose', img)
cv2.waitKey(0)

同じ API は PoseTracker クラスを介してウェブカメラやビデオストリームでも動作します。


主な構成要素

レイヤー クラス(高レベル) 機能
検出器 YOLOX, RFDETR, RTMDet 画像内の人物(または任意の COCO クラス)を検出します。
ポーズ推定器 RTMPose, ViTPose 身体、手、全身、または 3D ポーズのキーポイント座標を予測します。
ソリューション Wholebody, Body, Hand, Animal, Custom, Wholebody3d 検出器 + ポーズ推定器を1つの呼び出し可能なオブジェクトに統合し、キーポイントと信頼度スコアを返します。
ユーティリティ draw_skeleton, draw_bbox 結果を元の画像上に可視化します。

これらのすべては、mode ショートカット(performance, lightweight, balanced)または明示的な ONNX モデルの URL/パスを指定することでインスタンス化できます。


モデルズー(自動ダウンロード)

検出器 – YOLOX のバリエーション(nano, tiny, s, m, l, x)で、HumanArt+COCO(実際の人間とアニメキャラクターを検出)または単純な COCO で訓練されています。

ポーズ推定器 – 数十の ONNX チェックポイントがあります:

  • RTMPose(t, s, m, l, x):17キーポイントの身体、21キーポイントの手、26キーポイントの HALPE、133キーポイントの全身、および 3D バージョン。
  • 同じスケールの RTMO(1段階)バージョン。
  • ViTPose++(s, b, l):17キーポイントおよび 133キーポイントの身体、および 25キーポイントのファインチューニングモデル。

もしあなたの OpenMMLab のダウンロードサーバーにアクセスできない場合、ライブラリは HuggingFace 上のミラー(huggingface.co/Tau-J/RTMPose)にフォールバックします。


インストール方法

# PyPI から(推奨)
pip install rtmlib -i https://pypi.org/simple

# またはソースから
git clone https://github.com/Tau-J/rtmlib.git && cd rtmlib
pip install -r requirements.txt
pip install -e .   # 編集可能なインストール
# オプションの GPU バックエンド
pip install onnxruntime-gpu openvino

Web UI

最小限の Gradio インターフェース(webui.py)では、画像のアップロードやウェブカメラからのストリームを簡単に受け取り、ポーズのオーバーレイを即座に表示できます:

pip install gradio   # すでにインストールされていない場合
python webui.py

UI は内部で同じ Wholebody/draw_skeleton パイプラインを使用しています。


一般的な利用シーン

  • 研究ノートブックや小さなアプリケーションでポーズベースの機能を迅速にプロトタイピングする。
  • OpenMMLab スタックを完全にインストールするのが現実的でないエッジデバイスへのデプロイ。
  • Animal ソリューションと OpenPose 形式のスケルトンを使用して、鳥、猫、犬、馬などの動物のポーズ推定。
  • カスタムパイプライン – 低レベルの YOLOX, RTMPose, ViTPose クラスを介して、任意の ONNX 検出器やポーズモデルを組み込む。

ライセンスと引用

リポジトリは、下位の OpenMMLab モデルと同じライセンスに従います(LICENSE ファイルを確認してください)。rtmlib を出版物で使用する場合、元の RTMPose / ViTPose の論文と rtmlib の GitHub URL を、README の 引用 セクションに従って引用してください。


結論rtmlib は最先端のポーズ推定モデルをクリーンで依存関係の少ないラッパーとして提供し、準備済みの高レベル API、小さなモデルズー、および高速推論のためのオプションの GPU/アクセラレータバックエンドを備えています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト