/ Модель

Характеристики

Лицензия
Apache 2.0
Архитектура
rtmw · dense
Опубликована
23 мар 2026

rtmw-l-256x192

Классификация и разметка3 профессии

Модель RTMW оценивает позы нескольких людей по изображению, предсказывая 133 ключевые точки тела, лица, кистей и стоп.

8 230скачиваний за 30 дней1лайквеса обновлены23 мар 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

akore/rtmw-l-256x192 — порт модели RTMW из OpenMMLab MMPose, предназначенный для оценки позы нескольких людей по изображению. Архитектура включает backbone CSPNeXt, neck CSPNeXtPAFPN и RTMWHead с кодированием координат SimCC и Gaussian label smoothing. Модель предсказывает 133 ключевые точки: тела, стоп, лица и обеих кистей. Размер входа — 256×192 пикселя.

Модель обучена на Cocktail14 — смеси 14 публичных датасетов — и оценивалась на валидационной выборке COCO-WholeBody v1.0. Она подходит для анализа позы людей на фотографиях и кадрах видео, в том числе для приложений распознавания жестов и последующего анализа движений. Для поиска людей и обработки нескольких персон можно использовать совместно с детектором, например akore/rtmdet-tiny.

Порт распространяется в формате safetensors и использует лицензию Apache-2.0. Для загрузки требуется пользовательский код репозитория с trust_remote_code=True. Качество оценки зависит от детектора людей, обрезки и масштаба изображения; в README приведены метрики на COCO-WholeBody, но они не гарантируют таких же результатов на других данных.

Сценарии применения

  • оценка позы людей на фотографиях
  • поиск ключевых точек тела, лица, кистей и стоп
  • анализ движений по кадрам видео
  • извлечение скелетных координат для распознавания действий
  • оценка позы нескольких людей на изображении

Ограничения

Для обнаружения людей модель можно объединить с отдельным детектором; точность может зависеть от качества детекции и обрезки. Для загрузки порта требуется включить trust_remote_code=True.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

rtmw-l-256x192

This is a Hugging Face-compatible port of rtmw-l-256x192 from OpenMMLab MMPose.

RTMW (Real-Time Multi-person Wholebody pose estimation) extends RTMPose to predict 133 wholebody keypoints covering the body, face, hands, and feet simultaneously.

The model is trained on Cocktail14 — a mixture of 14 public datasets — and evaluated on COCO-WholeBody v1.0 val.

Model description

  • Architecture: CSPNeXt backbone + CSPNeXtPAFPN neck + RTMWHead (SimCC with GAU)
  • Keypoints: 133 (17 body + 6 feet + 68 face + 21 left hand + 21 right hand)
  • Codec: SimCC with Gaussian label smoothing
  • Uses custom code — load with trust_remote_code=True

Performance on COCO-WholeBody v1.0 val

Detector: human AP = 56.4 on COCO val2017.

ModelInputBody APBody ARFoot APFoot ARFace APFace ARHand APHand ARWhole APWhole AR
rtmw-m-256x192256×1920.6760.7470.6710.7940.7830.8540.4910.6040.5820.673
rtmw-l-256x192 (this model)256×1920.7430.8070.7630.8680.8340.8890.5980.7010.6600.746
rtmw-x-256x192256×1920.7460.8080.7700.8690.8440.8960.6100.7100.6720.752
rtmw-l-384x288384×2880.7610.8240.7930.8850.8840.9210.6630.7520.7010.780
rtmw-x-384x288384×2880.7630.8260.7960.8880.8840.9230.6640.7550.7020.781

Usage

Single cropped person (model-space coordinates)

from transformers import AutoConfig, AutoModel, AutoImageProcessor
from PIL import Image
import torch

config = AutoConfig.from_pretrained("akore/rtmw-l-256x192", trust_remote_code=True)
model = AutoModel.from_pretrained("akore/rtmw-l-256x192", trust_remote_code=True)
model.eval()

processor = AutoImageProcessor.from_pretrained("akore/rtmw-l-256x192")
# Supply a pre-cropped person patch (will be resized to model input resolution)
image = Image.open("person_crop.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")

with torch.no_grad():
    # coordinate_mode="model"  → raw 288×384 (or 192×256) pixel coords
    outputs = model(**inputs, coordinate_mode="model")

# outputs.keypoints: (1, 133, 2) — [x, y] in model-input pixel space
# outputs.scores:    (1, 133)    — confidence in [0, 1]
print(outputs.keypoints.shape, outputs.scores.shape)

Coordinate modes

The coordinate_mode argument controls how keypoints are expressed:

ModeDescriptionExtra arg
"model"Raw SimCC space — same resolution as the model input (e.g. 288×384)—
"image"Original image pixel coordinates, rescaled via the person bounding boxbbox=[x1,y1,x2,y2]
"root_relative"Origin at mid-hip, unit = half inter-hip distance (hips at ±1)—
import torch

# Mode 1 — model space (no extra args)
out_model = model(**inputs, coordinate_mode="model")

# Mode 2 — image space (pass the bbox used to crop the person)
bbox = torch.tensor([[120, 40, 380, 620]])   # [x1, y1, x2, y2] in original image
out_image = model(**inputs, coordinate_mode="image", bbox=bbox)

# Mode 3 — root-relative (skeleton-normalised, useful for action recognition)
out_root = model(**inputs, coordinate_mode="root_relative")

End-to-end with RTMDet person detector

Uses akore/rtmdet-tiny for detection and RTMW for pose estimation. Both preprocessors handle all the resize / normalise bookkeeping — no manual mean/std or scaling arithmetic required.

from transformers import AutoModel, AutoImageProcessor
from PIL import Image
import torch

# ── Load once ────────────────────────────────────────────────────────────────
rtmdet      = AutoModel.from_pretrained("akore/rtmdet-tiny",          trust_remote_code=True).eval()
rtmdet_proc = AutoImageProcessor.from_pretrained("akore/rtmdet-tiny")

rtmw      = AutoModel.from_pretrained("akore/rtmw-l-256x192", trust_remote_code=True).eval()
rtmw_proc = AutoImageProcessor.from_pretrained("akore/rtmw-l-256x192")

# ── Load image ───────────────────────────────────────────────────────────────
pil_img = Image.open("photo.jpg").convert("RGB")
orig_w, orig_h = pil_img.size   # PIL gives (width, height)

# ── Detect people — boxes returned in original image pixel coords ─────────────
det_inputs = rtmdet_proc(images=pil_img, return_tensors="pt")
with torch.no_grad():
    det_out = rtmdet(pixel_values=det_inputs["pixel_values"],
                     original_size=(orig_h, orig_w))   # ← scale happens inside

boxes  = det_out.boxes[0]    # (N, 4)  already in original image pixels
labels = det_out.labels[0]   # (N,)
scores = det_out.scores[0]   # (N,)

# ── Batch all person crops through the RTMW preprocessor ─────────────────────
person_boxes = [
    (boxes[i], scores[i]) for i in range(len(labels))
    if int(labels[i]) == 0 and float(scores[i]) > 0.3
]

if person_boxes:
    # PIL.Image.crop handles resize bookkeeping; processor handles normalize + batch
    crops  = [pil_img.crop(b.tolist()) for b, _ in person_boxes]
    bboxes = torch.stack([b for b, _ in person_boxes])            # (P, 4)

    inputs = rtmw_proc(images=crops, return_tensors="pt")         # resize + normalize
    with torch.no_grad():
        out = rtmw(pixel_values=inputs["pixel_values"],
                   coordinate_mode="image", bbox=bboxes)

    # out.keypoints: (P, 133, 2)  — [x, y] in original image pixels
    # out.scores:    (P, 133)     — confidence in [0, 1]
    for i, (_, sc) in enumerate(person_boxes):
        visible = (out.scores[i] > 0.3).sum()
        print(f"Person {float(sc):.2f}: {visible} / 133 keypoints visible")

Cocktail14 training datasets

DatasetLink
AI Challengermmpose docs
CrowdPosemmpose docs
MPIImmpose docs
sub-JHMDBmmpose docs
Halpemmpose docs
PoseTrack18mmpose docs
COCO-WholeBodyGitHub
UBodyGitHub
Human-Artmmpose docs
WFLWproject page
300Wproject page
COFWproject page
LaPaGitHub
InterHandproject page

Score normalization

Raw SimCC confidence scores vary across model variants (0–1 for 256×192 models, 0–10 for 384×288 models). This port applies fixed min–max normalization so all model variants output scores in [0, 1]. The score_min and score_max hyperparameters used are stored in the config and were determined empirically from real-world inference.

Citation

@article{jiang2024rtmw,
  title={RTMW: Real-Time Multi-Person 2D and 3D Whole-body Pose Estimation},
  author={Jiang, Tao and Xie, Xinchen and Li, Yining},
  journal={arXiv preprint arXiv:2407.08634},
  year={2024}
}

@misc{https://doi.org/10.48550/arxiv.2303.07399,
  doi = {10.48550/ARXIV.2303.07399},
  url = {https://arxiv.org/abs/2303.07399},
  author = {Jiang, Tao and Lu, Peng and Zhang, Li and Ma, Ningsheng and Han, Rui and Lyu, Chengqi and Li, Yining and Chen, Kai},
  title = {RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose},
  publisher = {arXiv},
  year = {2023},
  copyright = {Creative Commons Attribution 4.0 International}
}

@misc{mmpose2020,
    title={OpenMMLab Pose Estimation Toolbox and Benchmark},
    author={MMPose Contributors},
    howpublished = {\url{https://github.com/open-mmlab/mmpose}},
    year={2020}
}

@misc{lyu2022rtmdet,
  title={RTMDet: An Empirical Study of Designing Real-Time Object Detectors},
  author={Chengqi Lyu and Wenwei Zhang and Haian Huang and Yue Zhou and Yudong Wang and Yanyi Liu and Shilong Zhang and Kai Chen},
  year={2022},
  eprint={2212.07784},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
}

@inproceedings{jin2020whole,
  title={Whole-Body Human Pose Estimation in the Wild},
  author={Jin, Sheng and Xu, Lumin and Xu, Jin and Wang, Can and Liu, Wentao and Qian, Chen and Ouyang, Wanli and Luo, Ping},
  booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
  year={2020}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Ревизия весов
fd7df05

0 моделей