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는 가벼운 환경(예: 간단한 스크립트, 웹 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 검출기 + 포즈 추정기를 하나의 호출 가능한 객체로 결합하여 키포인트와 신뢰도 점수를 반환합니다.
유틸리티 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

웹 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/가속기 백엔드를 갖추고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트