PipeTRT JP
MediaPipe-inspired TensorRT hand landmark library for NVIDIA GPUs
MediaPipeのハンドトラッキング構成を参考に開発した、NVIDIA GPU向けTensorRT手骨格検出ライブラリです。
このプロジェクトは、MediaPipeのようなシンプルな使い方で、TensorRTによる高速な手の検出・21点ランドマーク推論を利用できるようにすることを目的としています。
PipeTRTは、自分自身の開発だけではなく、将来同じようにJetsonやNVIDIA GPUを用いたエッジAI開発を行う学生や開発者が、手軽に利用できるライブラリを目指しています。
デモンストレーション映像
リリース 0.1.0
PipeTRTの最初のリリースです。
現在のバージョンでは、カメラ映像や画像から手を検出し、21点のHand Landmarkを取得できます。
内部では以下の処理を行います。
- Palm Detection
- ROI生成・変換
- Hand Landmark推論
- ROI Tracking
- 21点ランドマークの出力
Palm DetectionとHand Landmarkの推論にはNVIDIA TensorRTを使用しています。
[!NOTE] v0.1.0は初期リリースです。 APIや内部仕様は今後変更される可能性があります。
機能
v0.1.0では以下の機能を利用できます。
- TensorRTによるPalm Detection
- 手領域(ROI)の生成
- 回転を考慮したROI変換
- TensorRTによるHand Landmark推論
- 21点のHand Landmark取得
- Landmarkを利用したROI Tracking
- Palm DetectionとTrackingの自動切り替え
- MediaPipe風の
HandLandmarkerAPI - 静止画・リアルタイムカメラ映像への対応
- 各処理の推論時間・処理時間の取得
動作確認環境
現在、以下の環境で動作確認しています。
- Windows
- Python 3.11
- NVIDIA GPU
- NVIDIA TensorRT
- CUDA
開発時の主な動作確認GPU:
- NVIDIA GeForce RTX 3070
その他の環境については、現在検証中です。
インストール
現在はPyPIでは公開していないため、GitHubからインストールしてください。
リポジトリをCloneします。
git clone https://github.com/Konoa-1025/PipeTRT.git
cd PipeTRT
PipeTRTをインストールします。
pip install .
開発目的の場合はEditable Installも利用できます。
pip install -e .
使い方
基本
import pipetrt
hands = pipetrt.HandLandmarker()
result = hands.detect(frame)
print(result.hand_landmarks)
hands.close()
detect()にOpenCVの画像(NumPy配列)を渡すことで、手のランドマークを取得できます。
OpenCVでリアルタイム検出
import cv2
import pipetrt
hands = pipetrt.HandLandmarker()
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
result = hands.detect(frame)
if result.hand_landmarks is not None:
for landmark in result.hand_landmarks:
x = int(landmark[0])
y = int(landmark[1])
cv2.circle(
frame,
(x, y),
4,
(0, 255, 0),
-1
)
cv2.imshow("PipeTRT", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
hands.close()
cv2.destroyAllWindows()
取得できるデータ
HandLandmarker.detect()はHandLandmarkerResultを返します。
現在、以下のデータを取得できます。
hand_landmarkspalm_resultroiroi_imagetimings
hand_landmarks
21点のHand Landmarkを取得できます。
result.hand_landmarks
timings
各処理にかかった時間を取得できます。
print(result.timings)
Palm Detection、ROI変換、Landmark推論などの処理時間を確認できます。
処理の流れ
Input Frame
|
v
Palm Detection
|
v
ROI Generation
|
v
Hand Landmark
|
v
ROI Tracking
|
v
21 Hand Landmarks
注意
- 本プロジェクトはMediaPipeにインスパイアされていますが、Google公式のMediaPipeプロジェクトとは独立した非公式プロジェクトです。
- TensorRTを利用していますが、NVIDIA公式のプロジェクトではありません。
- GitHub上などで公開されている情報・データを調査し、利用条件を確認した上で開発しています。使用・参考にしたものについては
reference.mdに記載しています。 - このライブラリでは画像処理をローカル環境内で実行します。PipeTRT自体が画像を第三者へ送信したり、外部サーバーへ保存したりする機能はありません。
- 使用しているデータ等について権利者から案内・通告があった場合、プログラムの修正や該当リリースの公開停止を行う場合があります。
- 現在の開発状況については、各ブランチの「現在の進捗状況」を確認してください。
- このプロジェクトでは学習を目的としてAIを開発補助に使用しています。生成された内容をそのまま公開するのではなく、内容の確認・理解・独自の実装やリファクタリングを行った上でリリースしています。そのため、開発版とリリース版には時間差が生じる場合があります。最新の開発状況については
devブランチを確認してください。
License
Apache License 2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pipetrt-0.1.0.tar.gz.
File metadata
- Download URL: pipetrt-0.1.0.tar.gz
- Upload date:
- Size: 5.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7d2a161489717d460239f8264de7bfa6cc8eba8651aa76b6e98300e41421210
|
|
| MD5 |
c0a8ff3c5f7762a8aad8fbdf35ad73a1
|
|
| BLAKE2b-256 |
636e4d5b0b4f7c5912af5489409239d783b6d6a5d15923888413f133950aaee6
|
File details
Details for the file pipetrt-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pipetrt-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
826a35c8345ca0579b9471764e2a890fafde89ca837aa6b39e289566e6f8caa7
|
|
| MD5 |
ec1bf7f13bb572c0df585f81bbce17d4
|
|
| BLAKE2b-256 |
8f22a8871a9d995b5e6c75f346ef42cebee8bfb332fc0a794cdcf719d84c38f7
|