Pose Detection: Was es ist, Modelle und Funktionsweise

Autor: IT Sectr Veröffentlicht: 2026-07-19 Lesezeit: 9 Min.

Pose Detection ist eine Computer-Vision-Technologie, die die Position des menschlichen Körpers anhand von Schlüsselpunkten (Landmarks) bestimmt: Kopf, Schultern, Ellbogen, Handgelenke, Hüften, Knie, Knöchel. Jeder Punkt hat Koordinaten (x, y) im 2D-Raum, und erweiterte Modelle (MediaPipe BlazePose 3D) fügen eine z-Koordinate für die Tiefe hinzu. In mobilen Anwendungen wird Pose Detection in Fitness-Trackern, Yoga-Apps, AR-Filtern, Rehabilitationsprogrammen und Sportanalysesystemen eingesetzt. Laut Google ML Kit, 2025 verarbeitet On-Device Pose Detection bis zu 30 Bilder pro Sekunde mit einer Genauigkeit von 94% PCK.

Das Wichtigste

  • Pose Detection — Erkennung von Körper-Schlüsselpunkten (Landmarks) aus einem Bild
  • ML Kit Pose Detection — 33 Landmarks, 30 FPS, 94% PCK-Genauigkeit
  • MediaPipe BlazePose — 33 Landmarks + 3D, bis zu 60 FPS auf der GPU
  • MoveNet Lightning — 17 Keypoints (COCO), 30+ FPS, 8 MB, INT8
  • On-Device — Privatsphäre, Echtzeit, ohne Video an den Server zu senden

Was ist Pose Detection: Grundlagen und Metriken

Pose Detection (auch Pose Estimation) bezieht sich auf die Aufgabe, semantische Schlüsselpunkte des menschlichen Körpers aus einem Bild oder Video zu bestimmen. Der Top-down-Ansatz erkennt zuerst die Person (Objekterkennung), dann bestimmt er ihre Pose. Der Bottom-up-Ansatz findet alle Landmarks im Bild und gruppiert sie dann nach Personen (OpenPose). Für mobile Geräte wird Bottom-up verwendet — es ist schneller bei mehreren Personen im Bild. ML Kit und BlazePose verwenden einen einstufigen Ansatz — Erkennung + Pose in einem Durchlauf.

COCO Keypoints — ein Standardsatz von 17 Punkten: Nase, Augen (2), Ohren (2), Schultern (2), Ellbogen (2), Handgelenke (2), Hüften (2), Knie (2), Knöchel (2). MediaPipe BlazePose verwendet 33 Punkte und fügt hinzu: Zehen, Fersen, Torso-Mitte, Gesichtspunkte. Je mehr Punkte, desto genauer die Posenanalyse, aber desto höher die Rechenlast. Für Fitness-Apps sind 17–20 Punkte ausreichend. Für die vollständige Analyse (Yoga, Tanzen) — 33 Punkte. Für AR-Filter — 33 Punkte + 468 Gesichtspunkte (MediaPipe Face Mesh).

PCK (Percentage of Correct Keypoints) — Genauigkeitsmetrik für Pose Detection. Berechnet den Anteil der Punkte, die innerhalb einer Entfernung vom Ground Truth vorhergesagt wurden (normalerweise 0.05–0.15 der Bounding-Box-Größe der Person). ML Kit Pose Detection: 94% PCK@0.1. BlazePose Full: 96% PCK@0.1. MoveNet Lightning: 91% PCK@0.1. OKS (Object Keypoint Similarity) — eine in COCO verwendete Metrik, die den Maßstab der Person und die Punktschwierigkeit berücksichtigt. mAP@OKS — Standardmetrik für Benchmarks.

ModellLandmarksPCK@0.1Latenz (GPU)Größe
ML Kit Pose Acc3394%15–30 ms14 MB
BlazePose Full33 + 3D96%10–20 ms12 MB
BlazePose Lite3391%5–10 ms5 MB
MoveNet Lightning1791%8–15 ms8 MB
MoveNet Thunder1795%25–40 ms13 MB

Keypoint-Visibility: Jeder Landmark hat einen Score (0..1), der angibt, wie sicher das Modell bei dem Punkt ist und ob er sichtbar ist. Punkte mit einem Score < 0.5 gelten als unsichtbar (verdeckt, außerhalb des Bildes). Für die Posenanalyse verwenden Sie nur sichtbare Punkte. Zur Ausrichtungsbewertung berechnen Sie konfidenzgewichtete Abstände, bei denen Punkte mit niedrigem Score weniger Gewicht in der Metrik haben.

ML Kit Pose Detection auf Android und iOS

ML Kit Pose Detection — eine Bibliothek von Google zur Posen-Erkennung auf dem Gerät. Unterstützt 33 Landmarks, einschließlich Gesichtspunkten, Zehen und Fersen. Modi: Accurate Mode (14 MB Modell, 15–30 ms, hohe Genauigkeit) und Streaming Mode (5 MB, 5–10 ms, für Echtzeit). Streaming Mode verwendet ein leichtes Modell mit Tracking — nach dem ersten Bild verfolgt es Bewegungen ohne erneute Erkennung genauer Positionen und erreicht bis zu 60 FPS.

ML Kit Pose Detection API: PoseDetector (Optionen: setDetectorMode, setPerformanceMode) → InputImage → Pose (List<PoseLandmark>). Jeder PoseLandmark hat: landmarkType (38 Typen), position (PointF3D), inFrameLikelihood (0..1). Pose bietet auch: boundingBox der Person, Liste der Landmarks, getLandmark(type)-Methode. Für die Posenklassifikation verwenden Sie Winkel zwischen Knochen: shoulderAngle, elbowAngle, hipAngle — berechnet über Vector3D zwischen benachbarten Landmarks.

kotlin
val options = PoseDetectorOptions.Builder()
    .setDetectorMode(PoseDetectorOptions.STREAM_MODE)
    .setPerformanceMode(PoseDetectorOptions.PERFORMANCE_MODE_FAST)
    .build()

val detector = PoseDetection.getClient(options)

detector.process(inputImage)
    .addOnSuccessListener { pose ->
        val leftElbow = pose.getLandmark(PoseLandmark.LEFT_ELBOW)
        val leftShoulder = pose.getLandmark(PoseLandmark.LEFT_SHOULDER)
        val leftWrist = pose.getLandmark(PoseLandmark.LEFT_WRIST)
        val elbowAngle = calculateAngle(
            leftShoulder.position, leftElbow.position, leftWrist.position
        )
    }

ML Kit auf iOS: Pose Detection ist über ML Kit CocoaPods verfügbar. Die API ist identisch mit Android: PoseDetector → UIImage → Pose → PoseLandmark. Auf iOS verwendet ML Kit Core ML und ANE (A12+), was eine Latenz von 10–20 ms im Accurate Mode auf dem iPhone 15 Pro erreicht. Streaming Mode — 3–8 ms, bis zu 120 FPS. Auf iOS ist ML Kit Pose Detection schneller als MediaPipe BlazePose (Core ML-Beschleunigung), bleibt aber auf älteren Geräten (iPhone X–11) in FPS hinter BlazePose zurück.

MediaPipe BlazePose: Architektur und 3D

MediaPipe BlazePose — ein Hochleistungsmodell für Pose Detection von Google Research. Verwendet eine hybride Architektur: Detector-Decoder-Pipeline basierend auf MobileNetV2 + Feature Pyramid Network. BlazePose Full: 33 Landmarks + 3D-Koordinaten (Tiefe z). BlazePose Lite: 33 Landmarks (2D) ohne Tiefe. Beide Modelle sind in MediaPipe Tasks Vision auf Android, iOS, Python und Web verfügbar. BlazePose Full verarbeitet 30–60 FPS auf der GPU, Lite — 60+ FPS.

3D-Posenschätzung mit BlazePose: Das Modell sagt die z-Koordinate für jeden Landmark voraus, was die Tiefenschätzung (Annäherung/Entfernung von Gliedmaßen) ohne Stereokamera ermöglicht. Die z-Koordinate wird im metrischen Raum (Metern) relativ zur Kamera berechnet. BlazePose 3D-Genauigkeit: 37 mm MPJPE (Mean Per Joint Position Error) auf öffentlichen Benchmarks — ausreichend für Fitness und AR, unzureichend für medizinische Diagnosen. Für ARKit/ARFoundation bietet BlazePose 3D natürliche Tiefe.

kotlin
// MediaPipe Pose Detection Tasks Vision
val options = PoseLandmarkerOptions.Builder()
    .setBaseOptions(BaseOptions.builder()
        .setModelAssetPath("pose_landmarker_full.task")
        .build())
    .setDelegate(Delegate.GPU)
    .build()

val landmaker = PoseLandmarker.createFromOptions(context, options)

val result = landmaker.detect(MPImage.fromBitmap(bitmap))
result.landmarks.forEach { pose ->
    pose.forEach { landmark ->
        drawLandmark(landmark.x, landmark.y, landmark.z)
    }
}

BlazePose vs ML Kit Pose Detection: BlazePose ist schneller (60+ FPS vs 30 FPS), unterstützt 3D-Koordinaten und funktioniert plattformübergreifend über MediaPipe. ML Kit ist einfacher zu integrieren (kein MediaPipe SDK erforderlich) und enthält vortrainierte Modelle mit hoher Genauigkeit. Für iOS-native Projekte — ML Kit Pose Detection (beste ANE-Optimierung). Für plattformübergreifende Projekte (Flutter, React Native) — MediaPipe BlazePose (einheitliches Modell für alle Plattformen). Für Genauigkeit in anspruchsvollen Szenen — beide Modelle sind vergleichbar.

MoveNet: Lightning und Thunder von TensorFlow

MoveNet — eine Familie von Pose-Detection-Modellen von TensorFlow, optimiert für TFLite. Lightning (8 MB, INT8 — 4 MB): 17 COCO-Keypoints, 91% PCK, 8–15 ms Latenz, 30+ FPS. Thunder (13 MB, INT8 — 6 MB): 17 Keypoints, 95% PCK, 25–40 ms Latenz, 20+ FPS. MoveNet verwendet CenterNet-Architektur + bilineare Interpolation für hochauflösende Heatmaps. MoveNet unterstützt Multi-Pose-Erkennung (bis zu 6 Personen). Modelle sind auf TensorFlow Hub verfügbar.

MoveNet Lightning vs Thunder: Lightning — für Echtzeitanwendungen mit hohem FPS (Fitness, AR-Filter). Thunder — für genaue Posenanalyse (Rehabilitation, Sportanalyse) auf Geräten mit GPU. Beide Modelle werden über tf-coreml für iOS in Core ML konvertiert. MoveNet ist auch über die TFLite Task Vision PoseLandmarker API verfügbar. Empfehlung: Beginnen Sie mit Lightning, wenn die Genauigkeit nicht ausreicht, wechseln Sie zu Thunder (nur +15 ms Latenz-Overhead).

java
// MoveNet-Inferenz mit TFLite
Interpreter interpreter = new Interpreter(loadModel(context));
TensorImage image = TensorImage.fromBitmap(bitmap);
image.load(Bitmap.createScaledBitmap(bitmap, 192, 192, true));

float[][] output = new float[1][51];
interpreter.run(image.getTensorBuffer(), output);

float[] keypoints = output[0];
for (int i = 0; i < 17; i++) {
    float y = keypoints[i * 3];
    float x = keypoints[i * 3 + 1];
    float score = keypoints[i * 3 + 2];
    drawKeypoint(x, y, score);
}

MoveNet Multi-Pose: Erkennung von bis zu 6 Personen im Bild. Anstelle des Standard-Heatmap-Ansatzes verwendet MoveNet Personenerkennung + Posenverfeinerung: zuerst werden Personen erkannt (centroid-basiert), dann wird jede Pose geschätzt. Der Multi-Pose-Modus ist 2–3x langsamer als Single-Pose: Lightning — 25–50 ms (6 Personen). Für Fitness-Apps mit einem einzelnen Benutzer verwenden Sie Single-Pose. Für Gruppenaktivitäten (Yoga, Crossfit) — Multi-Pose mit Bildratenbegrenzung zum Batteriesparen.

Posenklassifikation: Von Punkten zu Aktionen

Pose Classification — die Stufe nach der Erkennung: Umwandlung von Landmarks in semantische Aktionen (Stehen, Sitzen, Arm heben, Hocken). Ansätze: Regelbasiert (manuelle Regeln — Winkel zwischen Knochen), ML-basiert (logistische Regression oder Random Forest auf Landmark-Vektor), DL-basiert (LSTM-Klassifikator der Posen-Sequenz über Bilder hinweg). Regelbasiert — 50–80% Genauigkeit, einfach und schnell. ML-basiert — 85–95% Genauigkeit mit 200+ beschrifteten Beispielen. LSTM — 90–98% Genauigkeit auf Zeitreihen (Video).

Winkel zwischen Knochen: Für jeden Punkt werden Winkel mit benachbarten Punkten berechnet. Beispiele: rechter Ellbogenwinkel (Schulter → Ellbogen → Handgelenk), rechter Knie-Winkel (Hüfte → Knie → Knöchel), Torso-Winkel (Schultermittelpunkt → Hüftmittelpunkt). Winkel sind invariant gegenüber Maßstab und Bildschirmposition der Person. Die Normalisierung von Winkeln auf den Bereich [0, 1] ermöglicht die Posenklassifikation mit einer einfachen Schwellenwertregel: wenn elbowAngle < 30° — Arm gebeugt, wenn > 150° — gestreckt.

kotlin
// Regelbasierter Kniebeugen-Klassifikator
fun classifySquat(pose: Pose): SquatPhase {
    val kneeAngle = angle(
        pose.getLandmark(PoseLandmark.LEFT_HIP),
        pose.getLandmark(PoseLandmark.LEFT_KNEE),
        pose.getLandmark(PoseLandmark.LEFT_ANKLE)
    )
    return when {
        kneeAngle > 140f -> SquatPhase.STANDING
        kneeAngle < 90f  -> SquatPhase.SQUAT
        else           -> SquatPhase.TRANSITION
    }
}

MediaPipe Pose Classification — vortrainierte Klassifikatoren in MediaPipe Tasks: Kniebeugen, Liegestütze, Plank, Beinheben. Der Klassifikator nimmt eine Liste von Landmarks und gibt Aktion + Konfidenz zurück. Enthält zeitliche Glättung (temporaler Filter): HED (Holt Exponential Double Smoothing) für sanfte Übergänge zwischen Posen. Für benutzerdefinierte Aktionen — trainieren Sie einen Klassifikator mit 100–500 Beispielen über MediaPipe Model Maker (TensorFlow Lite + Metadaten).

Anwendungen von Pose Detection in Fitness und Rehabilitation

Fitness-Tracker mit Technikkorrektur — die App analysiert die Pose des Benutzers während der Übung und gibt Sprachhinweise: „Senken Sie die Hüften“, „Lehnen Sie den Oberkörper nicht nach vorne“. ML Kit Pose Detection + regelbasierter Klassifikator zählt Wiederholungen und bewertet die Qualität. Kniebeuge: Knie-Winkel < 90° — korrekte Kniebeuge, Rückenwinkel < 45° — gefährliche Oberkörperneigung. Liegestütz: Ellbogenwinkel < 90° am unteren Punkt — vollständiger Liegestütz. Klimmzug: Kinn über Stangenhöhe.

Rehabilitation und Physiotherapie — Pose Detection wird zur Fernüberwachung von Physiotherapieübungen eingesetzt. Ein Arzt legt eine Referenzpose fest (z. B. Schulterabduktion bei 45°), die App misst den aktuellen Winkel und Abweichungen. BlazePose 3D bietet eine Winkelgenauigkeit von ±3° — ausreichend für die klinische Bewertung. Frequenz: 1 Bild alle 3–5 Sekunden (Batteriesparen). On-Device — Privatsphäre der Patientendaten. Rehabilitation nach Schlaganfall: Verfolgung von Hand-zu-Schulter, Ellbogenstreckung, Hüftbeugung.

AR-Filter und Effekte — Pose Detection ist die Grundlage von AR-Filtern in sozialen Netzwerken (TikTok, Instagram, Snapchat). Landmarks von Kopf, Schultern und Händen werden zum Überlagern von Masken, Animationen und dekorativen Elementen verwendet. MediaPipe BlazePose Full + Face Mesh (468 Punkte) liefert 120+ FPS auf Flaggschiff-Geräten. ARKit/ARCore Face Tracking + Pose Detection — eine Kombination für Full-Body-AR. Anforderungen: FPS > 30, Motion-to-Photon-Latenz < 20 ms.

swift
// AR-Filter mit Pose-Landmarks
let request = VNDetectHumanBodyPoseRequest { req, _ in
    guard let observation = req.results?.first as? VNHumanBodyPoseObservation else { return }
    let keypoints = try observation.recognizedPoints(.all)
    let rightShoulder = keypoints[VNHumanBodyPoseObservation.JointName.rightShoulder]
    DispatchQueue.main.async {
        arView.placeFilter(at: rightShoulder?.location ?? .zero)
    }
}

Sportanalyse — professionelle Technikbewertung: biomechanische Analyse des Laufens (Kadenz, Schrittlänge, Armschwung-Symmetrie), Schwimmens (Körperrolle, Ellbogenwinkel beim Zug), Tennis (Schulterrotation, Handgelenk-Snap). MoveNet Thunder mit Nachbearbeitung bietet ausreichende Genauigkeit für nicht-professionelle Analysen. Profisport erfordert 3D-Bewegungserfassung (Vicon, OptiTrack), aber Smartphone-basiertes Pose Detection ist eine erschwingliche Alternative für den Massenmarkt. Die Winkelsynchronisation zwischen Bildern ist eine Schlüsselkomponente.

Häufig gestellte Fragen

Wie stabilisiert man Pose Detection bei Kamerawackeln?

Verwenden Sie zeitliche Glättung: One Euro Filter (1€-Filter) — konfigurierbare Grenzfrequenz für jeden Landmark separat, unterdrückt hochfrequentes Rauschen (Wackeln) bei gleichzeitiger Erhaltung der realen Bewegung (geringe Latenz). MediaPipe BlazePose enthält integriertes HED (Holt Exponential Double Smoothing) — adaptive Glättung mit Bewegungsvorhersage. Für ML Kit implementieren Sie den 1€-Filter selbst: Der Filter hat zwei Parameter — beta (Geschwindigkeit) und minCutoff (Frequenzschwellwert). Empfohlen: beta = 0.04, minCutoff = 0.5 (Android).

Wie viele Personen kann Pose Detection in einem Bild erkennen?

ML Kit Pose Detection — eine Person (Single-Pose). MoveNet Lightning — bis zu 6 Personen (Multi-Pose). MediaPipe BlazePose — bis zu 2–3 Personen über MediaPipe Tasks (Multi-Pose). Für Gruppenaktivitäts-Apps verwenden Sie MoveNet Lightning oder BlazePose. Für Fitness-Apps mit einem Benutzer — ML Kit (einfachere Integration, höhere Single-Pose-Genauigkeit). Für Videoanrufe mit AR-Filtern — BlazePose Lite mit Multi-Pose (hohe FPS) ausreichend.

Wie berechnet man den Winkel zwischen Knochen zur Posenklassifikation?

Winkel zwischen zwei Knochen: Nehmen Sie drei Landmarks — Gelenk A, Gelenk B (Scheitelpunkt des Winkels), Gelenk C. Berechnen Sie die Vektoren BA = (A - B) und BC = (C - B). Winkel = atan2(cross(BA, BC), dot(BA, BC)). Math.toDegrees(acos(dot(BA, BC) / (len(BA) * len(BC)))). Winkel im Bereich 0–180°. Für dreidimensionale Koordinaten (BlazePose 3D) verwenden Sie Vector3D. Normalisieren Sie Winkel auf den Bereich [0,1] für den ML-Klassifikator.

Können beide Hände gleichzeitig verfolgt werden?

Ja, alle Hauptmodelle (ML Kit, BlazePose, MoveNet) erkennen Landmarks beider Hände gleichzeitig: LEFT_SHOULDER, LEFT_ELBOW, LEFT_WRIST, RIGHT_SHOULDER, RIGHT_ELBOW, RIGHT_WRIST. Für zusätzliche Handverfolgung kombinieren Sie Pose Detection + Hand Landmarker (21 Punkte pro Hand). MediaPipe Hands + BlazePose ist die Standardkombination für Full-Body + Hände. Auf iOS — VNDetectHumanHandPoseRequest + VNDetectHumanBodyPoseRequest.

Was ist die minimale Personengröße im Bild für Pose Detection?

ML Kit Pose Detection: minimale Personen-Bounding-Box — 100x100 Pixel (Seitenverhältnis ~1:1). MoveNet Lightning: 120x120 Pixel. BlazePose: 80x160 Pixel (vertikale Bounding-Box). Für eine Person in voller Größe bei 3 Metern Entfernung von der Kamera (1920x1080) — etwa 250x600 px, ausreichend. Bei Entfernungen > 5 Metern sinkt die Genauigkeit — verwenden Sie Multi-Pose + hochauflösende Eingabe. Für entfernte Objekte ist Objekterkennung + Posenschätzung (zweistufig) besser.

Zusammenfassung

  • Pose Detection — Erkennung von 17–33 Körper-Schlüsselpunkten mit 91–96% PCK-Genauigkeit
  • ML Kit Pose Detection — 33 Landmarks, bis zu 30 FPS, einfache API, auf GPU/ANE
  • BlazePose (MediaPipe) — 33 Landmarks + 3D, bis zu 60 FPS, plattformübergreifend
  • MoveNet Lightning/Thunder — 17 COCO-Keypoints, 30+ FPS, TFLite, Multi-Pose
  • Pose Classification — von Landmarks zu Aktionen über Regeln oder ML
  • On-Device — Privatsphäre, Echtzeit, 3 ms–30 ms Latenz
  • Anwendungen — Fitness, Rehabilitation, AR-Filter, Sportanalyse

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch