HerrKI mit seinem RoboterHerrKI KI verstehen · nachbauen · anwenden ⭐ 0 XP

Dein Körper als Tensor (Pose)

Deine Kamera oder ein Foto — und du siehst live, was eine Pose-KI wirklich von dir sieht: 17 Punkte, 51 Zahlen, ein [17, 3]-Tensor. Mit Skelett-Overlay und einem Hampelmann-Zähler, der nur aus diesen Zahlen gebaut ist.

👋 HerrKI hier — heute wirst du selbst zum Tensor

Deine Fitness-App zählt Kniebeugen und meckert, wenn der Rücken krumm ist. Eine Spielkonsole lässt dich ohne Controller Tennis spielen — dein Körper ist der Controller. Eine Physiotherapie-App prüft zu Hause, ob du die Übung wirklich richtig machst. Und in jedem Handy-Foto weiß die Galerie schon, wer da wie dasteht.

Das wirkt wie Zauberei: Die Software „sieht“ deinen Körper. Heute schauen wir nach, was da wirklich passiert — und die Antwort ist herrlich unspektakulär. Die KI sieht keinen Körper, keine Bewegung, keine Anstrengung. Sie sieht 51 Zahlen. Mehr nicht. Und du siehst sie gleich live neben deinem eigenen Bild.

🎯 Was du hier lernst:
  • Wie aus einem Kamerabild [Höhe, Breite, 3] ein winziger [17, 3]-Tensor wird
  • Was die 17 Zeilen und die 3 Spalten genau bedeuten — Gelenk, x, y, Sicherheit
  • Warum y nach unten größer wird (und warum dich das sonst dauernd verwirren würde)
  • Wie aus diesen Zahlen in drei Zeilen Logik ein Hampelmann-Zähler wird — ganz ohne neues Training
  • Wo das Verfahren ehrlich an seine Grenzen stößt

🔒 Deine Daten bleiben auf deinem Gerät

Gleich siehst du dich selbst auf dem Bildschirm — deshalb vorweg, in aller Klarheit: Dein Kamerabild verlässt dein Gerät nicht. Kein Bild, kein Video, kein einzelnes Skelett wird irgendwohin hochgeladen. Es gibt in diesem Kapitel keine einzige Zeile Code, die etwas an einen Server schickt.

  • Der Browser liefert das Kamerabild über getUserMedia direkt an die Seite — wie bei einem Video-Chat, nur ohne Gegenstelle.
  • Das Pose-Modell (MoveNet, 4,8 MB) liegt auf diesem Server und rechnet danach in deinem Browser, auf deinem Prozessor bzw. deiner Grafikkarte.
  • Nichts wird gespeichert. Tab schließen = alles weg. Der Kamera-Stream wird beim Stoppen sauber abgeschaltet (die Kamera-Leuchte geht aus).

Du willst die Kamera gar nicht anschalten? Völlig in Ordnung — der Foto-Weg unten funktioniert genauso gut, und auch dein Foto bleibt lokal.

🧰 Schritt 1: Das Werkzeug holen

📦 Erst das Modell laden

Das Pose-Modell heißt MoveNet („SinglePose Lightning“) und ist mit 4,8 MB ein echtes Leichtgewicht — gebaut, damit es auch auf einem Handy flüssig läuft. Wir laden es erst auf deinen Klick, damit niemand ungefragt Daten verbraucht.

🔬 Runter zum Tensor: aus 6 Millionen Zahlen werden 51

Rechnen wir das einmal durch. Ein Kamerabild in Full-HD ist ein Tensor der Form [1080, 1920, 3] — Höhe mal Breite mal drei Farbkanäle (Rot/Grün/Blau, genau wie in „Bilder als Tensoren“). Das sind 6.220.800 Zahlen. Sechs Millionen. Pro Einzelbild.

[1080, 1920, 3] Kamerabild 6,2 Mio. Helligkeitswerte — für einen Computer erstmal komplett bedeutungslos
↓ MoveNet (ein neuronales Netz, 4,8 MB Gewichte)
[192, 192, 3] zurechtgeschnitten & verkleinert Das Netz schaut sich immer nur einen kleinen Ausschnitt in fester Größe an
↓ Faltungen, Schicht für Schicht
[17, 3] 17 Gelenke × (x, y, Sicherheit) 51 Zahlen — die komplette „Wahrnehmung“ deines Körpers

🔑 Der Kernsatz des Kapitels: „Sehen“ heißt hier nichts anderes als 6 Millionen Pixel-Zahlen werden zu 51 Zahlen eingedampft — und mit 51 Zahlen kann ganz normale Programmlogik arbeiten. Kein Zauber, keine Magie: eine Kompression auf das, worauf es ankommt.

Genau das ist der Grund, warum eine Fitness-App auf deinem Handy flüssig läuft. Nicht das Netz macht die Kniebeugen-Zählung — das Netz liefert nur die 51 Zahlen. Gezählt wird danach, mit stinknormalem Code. Und den bauen wir jetzt.

🏃 Schritt 3: Vom Tensor zur Anwendung — der Hampelmann-Zähler

Ein Hampelmann (englisch: jumping jack) ist eine sehr einfache Bewegung: Arme hoch, Arme runter, hoch, runter. Wie zählt man die? Man braucht kein neues neuronales Netz, kein Training, keine Trainingsdaten. Man braucht drei Zeilen Logik auf dem Tensor, den wir schon haben:

// Beide Handgelenke ÜBER der Nase? -> Arme sind oben. const hoch = handLinks.y < nase.y && handRechts.y < nase.y; // Beide Handgelenke UNTER den Hüften? -> Arme sind unten. const runter = handLinks.y > hueftLinks.y && handRechts.y > hueftRechts.y; // Nur der Wechsel von UNTEN nach OBEN zählt einen Hampelmann. if (hoch && zustand === 'runter') { zaehler = zaehler + 1; }

⚠️ Moment — „über der Nase“ heißt kleiner?

Ja, und das ist die klassische Stolperfalle. In der Mathematik-Schule wächst y nach oben. In Bildern wächst y nach unten: Zeile 0 ist die oberste Bildzeile, danach zählt man abwärts. Der Grund ist uralt und banal — Bilder werden seit jeher zeilenweise von oben nach unten gespeichert und übertragen, genau wie du diesen Text liest.

Für uns heißt das: weiter oben im Bild = kleineres y. Deshalb bedeutet handgelenk.y < nase.y genau: „Die Hand ist höher als die Nase.“ Schau in der Tabelle oben nach — die Nase hat ein kleineres y als die Knöchel. Immer.

Warum überhaupt der Umweg über zwei Zustände (hoch / runter) und nicht einfach „Hände oben = +1“? Weil du sonst pro Sekunde 15-mal weiterzählen würdest, solange die Arme oben bleiben. Wir zählen deshalb nur den Wechsel — das ist der gleiche Trick, mit dem eine Türklingel zwischen „gedrückt“ und „gerade eben gedrückt worden“ unterscheidet.

0
Hampelmänner
Zustand: — (noch keine Person erkannt)

Funktioniert mit der Live-Kamera. Für ein Foto zeigt der Zähler nur den erkannten Zustand an — ein Standbild kann sich schlecht bewegen. 🙂

🚀 Und genau so funktionieren die echten Apps. Kniebeugen-Zähler: Winkel im Knie beobachten. Haltungs-Warner: Abstand Schulter–Ohr messen. Spielkonsolen-Steuerung: prüfen, in welchem Bildbereich die Handgelenke liegen. Immer dasselbe Muster — das Netz liefert den Tensor, die Anwendung ist Geometrie darauf.

🧭 Ehrlich bleiben: was das hier NICHT kann

  • Alles ist flach. Die 51 Zahlen enthalten keine Tiefe. Es gibt nur x und y — wo im Bild, nicht wie weit weg. Dreh dich seitlich zur Kamera, und das Modell rät: Die Schulter, die eigentlich hinten ist, bekommt trotzdem eine Bildposition. Für „ist der Rücken gerade?“ ist das oft zu wenig.
  • Verdeckung verwirrt. Was das Modell nicht sieht, muss es erraten — Hand hinter dem Rücken, Beine hinter einem Tisch. Die Sicherheits-Spalte sinkt dann, aber sie sinkt nicht immer ehrlich genug.
  • Licht und Kontrast entscheiden. Dunkler Raum, Gegenlicht, dunkle Kleidung vor dunklem Hintergrund: Die Sicherheiten brechen ein. Probier's aus — geh mal zwei Schritte in den Schatten und beobachte die rechte Spalte.
  • Genau eine Person. Wir nutzen „SinglePose“ — das Modell sucht eine Person und liefert immer 17 Punkte, auch wenn zwei Leute im Bild sind (dann bastelt es gern ein Misch-Skelett). Für mehrere Personen gibt es größere Varianten, die auch mehr Rechenleistung kosten.
  • Kein Verständnis von Bewegung. Das ist der wichtigste Punkt: Die KI weiß nicht, dass du Sport machst. Sie weiß nicht einmal, dass sie einen Menschen sieht. Sie ordnet einem Bildausschnitt 17 Koordinaten zu — der Rest ist Geometrie auf 51 Zahlen, geschrieben von einem Menschen, der weiß, was ein Hampelmann ist.

🧠 Kurzer Check — hast du es?

1. Was liefert MoveNet als Rohausgabe, wenn du ein Bild hineingibst?
2. Der Hampelmann-Zähler funktioniert ohne jedes zusätzliche Training. Warum?
3. In der Tabelle hat die Nase ein kleineres y als die Knöchel. Warum ist „oben“ das kleinere y?
🚀 Weiter geht’s: In „Was sieht die KI? (Objekterkennung)“ hat ein Netz Kästen um Dinge gemalt — hier hat dieselbe Maschinerie Punkte an deinem Körper ausgegeben: gleicher Bauplan, anderer Ausgabe-Tensor. Als Nächstes hört dein Browser aufs Wort — im Audio-Kapitel (450) siehst du, dass sogar Schall bei uns als Tensor ankommt. Und danach trainierst du in Kapitel 460 endlich selbst eine Bild-KI — auf deinen eigenen Bildern.