HRNet

HRNet ist ein Convolutional Network, das durch wiederholte Multi-Scale-Fusion einen hochauflösenden Feature-Stream beibehält, anstatt die Auflösung nach dem Downsampling wiederherzustellen. LibreYOLO bindet die offizielle Top-down-Pose-Variante für Inferenz und Validierung ein.

Aufgaben
pose
Größen
Installation
pip install libreyolo
Supportstufe
Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
HRNet von Microsoft, MIT. Publikation, Quelle
Lizenzen
Code MIT, Gewichte MIT. Kommerzielle Nutzung

Installation

HRNet benötigt über das Basispaket hinaus keine weiteren Abhängigkeiten.

bash
pip install libreyolo

Sein standardmäßiger Personendetektor, ein schlanker LibreYOLO9t-Checkpoint, wird automatisch heruntergeladen, wenn HRNet zum ersten Mal mit ihm gekoppelt wird.

Vorhersage

Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Keine Personenquelle angegeben: HRNet koppelt sich automatisch mit# dem schlanken LibreYOLO9t-Detektor und protokolliert die Wahl einmal.model = LibreYOLO("LibreHRNetw32-pose.pt")result = model(SAMPLE_IMAGE, save=True) print(result.keypoints.xy)print(result.boxes.xyxy)
CLI
libreyolo predict model=LibreHRNetw32-pose.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Personenquelle
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreHRNetw32-pose.pt") # Erkennung auslassen: das ganze Bild als eine Person behandeln.result = model(SAMPLE_IMAGE, cropped=True) # Oder HRNet Boxen eines bereits ausgeführten Detektors übergeben.result = model(SAMPLE_IMAGE, person_boxes=[[34, 12, 220, 400]]) # Oder mit einem bestimmten LibreYOLO-Detektor statt mit dem# standardmäßigen LibreYOLO9t koppeln.result = model(SAMPLE_IMAGE, person_detector="rfdetr")

HRNet ist ein Top-down-Pose-Schätzer: Bevor der Pose-Head ausgeführt werden kann, benötigt er eine Personenbox, daher ermittelt jeder Aufruf eine solche Box. Ohne weitere Angaben koppelt er sich beim ersten Mal mit einem LibreYOLO9t-Detektor und protokolliert diese Wahl. cropped=True überspringt die Erkennung und behandelt das gesamte Bild als eine Person. person_boxes akzeptiert Boxen eines bereits ausgeführten Detektors. person_detector akzeptiert "auto", "rfdetr", ein beliebiges LibreYOLO-Erkennungsmodell oder ein einfaches Callable. Mit flip_test=True wird das Modell zusätzlich auf dem horizontal gespiegelten Ausschnitt ausgeführt und der Mittelwert der beiden Heatmaps gebildet. Dies ist die eigene Test-Time-Augmentierung von HRNet, die generische Option augment=True ist hier nicht definiert. Quellen mit mehreren Bildern werden sequenziell verarbeitet: Der Detektor von HRNet und die je Bild variable Personenanzahl unterstützen keine gestapelte Vorhersage. Unter Vorhersage findest du Informationen zu Quellen, Streaming und Ergebnisverarbeitung.

Varianten

Es gibt zwei Größen, w32 und w48. Beide sagen den standardmäßigen COCO-17-Keypoint-Satz aus einem Personenbild mit fester Auflösung voraus. w48 ist das breitere der beiden Backbones.

Der Model Zoo des Upstream-Projekts gibt die Pose-Accuracy für jede Größe mit einem eigenen Personendetektor, einer eigenen Flip-Test-Konfiguration und dem offiziellen COCO-Evaluierungsprotokoll an. Die Standardkopplung von LibreYOLO verwendet einen anderen Detektor. Ein Validierungslauf misst hier daher diese Kombination und nicht die des Upstream-Projekts. Um die Upstream-Werte zu reproduzieren, benötigst du dieselben Personenboxen, Detektor-Scores und Flip-Einstellungen wie bei der ursprünglichen Evaluierung.

Validierung

val() führt Keypoint-OKS-AP im COCO-Stil aus und akzeptiert eine YOLO-Pose- data.yaml oder eine COCO-Keypoints-JSON-Datei zusammen mit einem Bilderverzeichnis. Das standardmäßige Metrik-Backend ist faster-coco-eval. Wenn faster-coco-eval nicht installiert ist, wird automatisch pycocotools verwendet. Mit faster_coco_eval=False erzwingst du den pycocotools-Pfad.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreHRNetw32-pose.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/keypoints_mAP50-95"])print(metrics["metrics/keypoints_mAP50"])
CLI
libreyolo val model=LibreHRNetw32-pose.pt data=my-dataset.yaml

Die Validierung ruft intern die eigene predict()-Methode von HRNet auf und verwendet daher den Personendetektor, mit dem das Modell erstellt oder aufgerufen wurde. Erstelle das Modell mit einem expliziten person_detector=, damit diese Quelle über mehrere Läufe hinweg gleich bleibt, anstatt bei jedem Aufruf erneut den Standard ermitteln zu lassen.

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
PosePose to ONNX: unterstütztPose to TorchScript: unterstütztPose to ExecuTorch: nicht unterstütztPose to TensorRT: unterstütztPose to OpenVINO: unterstütztPose to Paddle: nicht unterstütztPose to MNN: nicht unterstütztPose to RKNN: nicht unterstütztPose to ncnn: nicht unterstütztPose to TFLite: nicht unterstütztPose to CoreML: nicht unterstütztPose to Core AI: nicht unterstützt

Der Exportvertrag von HRNet umfasst ausschließlich ONNX, TorchScript, OpenVINO und TensorRT. Bei jedem anderen Format wird vor Beginn des Tracings ein Fehler ausgelöst. Jeder Export enthält nur den Heatmap-Head mit fester Canvas und Batch-Größe eins in FP32. Er nimmt einen Personenausschnitt entgegen und gibt rohe Heatmaps zurück. Die vorgelagerte affine Zuschnittgeometrie sowie die nachgelagerte Heatmap-Decodierung, Wiederherstellung nach Spiegelung und OKS-Unterdrückung verbleiben in Python. Eine vollständige Pipeline vom Bild zu den Keypoints benötigt daher auf der anderen Seite weiterhin LibreYOLO.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreHRNetw32-pose.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreHRNetw32-pose.pt format=onnx
Exportierte Datei nutzen
import numpy as npimport onnxruntime as ort # Der exportierte Graph ist nur der Heatmap-Head mit fester Canvas:# Er erhält einen Batch fertig zugeschnittener, normalisierter# Personenausschnitte und gibt rohe Heatmaps zurück. Personenerkennung,# Zuschnittgeometrie, Heatmap-Decodierung und OKS-Unterdrückung gehören# nicht zu diesem Graphen. Außerhalb von LibreYOLO musst du diesen# Decodierungsschritt selbst neu implementieren.session = ort.InferenceSession("LibreHRNetw32-pose.onnx")name = session.get_inputs()[0].nameheatmaps = session.run(    None, {name: np.zeros((1, 3, 256, 192), dtype=np.float32)})[0]

Checkpoints

Alle veröffentlichten Gewichtsdateien dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
Pose
LibreHRNetw32-pose.ptmit
LibreHRNetw48-pose.ptmit

Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
HRNet, Microsoft
Upstream-Lizenz
MIT
LibreYOLO-Code
MIT
Gewichte
MIT, erneut unter huggingface.co/LibreYOLO veröffentlicht
Einordnung
MIT permits commercial and non-commercial use, modification and redistribution of both the code and the two published checkpoints, with the copyright notice retained. The official repository does not attach a separate license to its model-zoo checkpoints; LibreYOLO's redistribution basis is the MIT license the releasing project implies, the same basis the upstream repository's own files state.

Zitieren

@inproceedings{sun2019deep,
  title={Deep High-Resolution Representation Learning for Human Pose Estimation},
  author={Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong},
  booktitle={CVPR},
  year={2019}
}

Aus dem Zitierblock der Autoren unter github.com/leoxiaobin/deep-high-resolution-net.pytorch#citation kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.