PoseNet ist ein Model, das die Schätzung der menschlichen Körperhaltung in Echtzeit ermöglicht.

PoseNet kann verwendet werden, um entweder eine einzelne Pose oder mehrere Posen zu schätzen, was bedeutet, dass es eine Version des Algorithmus gibt, die nur eine Person in einem Bild / erkennen kann, und eine Version, die mehrere Personen in einem Bild / Video erkennen kann.

Sie haben es eilig? Dann speichern Sie diesen Blogartikel von R23 als PDF

Brauchen Sie den Inhalt dieses Artikels “PoseNet mit Webcam” schnell und bequem? Dann speichern Sie ihn doch einfach als PDF!

In unserem Studio würden wir gerne Aufzeichnungen erstellen. Unter Motion Capture, wörtlich Bewegungs-Erfassung, versteht man ein Tracking-Verfahren zur Erfassung und Aufzeichnung von Bewegungen, so dass Computer diese wiedergeben, analysieren, weiterverarbeiten und zur Steuerung von Anwendungen nutzen können.

Ein Beispiel für eine solche Anwendung ist die Übertragung menschlicher Bewegungen auf im Computer generierte 3D-Modelle. Wir haben vor wenigen Monaten hier im Blog eine -Anleitung erstellt, die Ihnen zeigt, wie Sie eine auf einen 3D Character in verwenden.

Vor diesem Hintergrund freuen wir uns über über die Veröffentlichung einer TensorFlow.js-Version von PoseNet. Damit ist eine Echtzeit-Schätzung der menschlichen Pose im Browser ermöglicht. Probieren Sie hier eine Live-Demo aus.

Dieses Beispiel wurde mit p5.js erstellt.

Code

Ok, und warum ist das jetzt so aufregend? Posenschätzung hat viele Einsatzmöglichkeiten, von interaktiven Installationen, die auf den Körper reagieren, über Augmented Reality, Animation und mehr.

Während die Pose-Erkennungssysteme in der Regel spezielle Hardware und/oder Kameras sowie eine umfangreiche Systemeinrichtung erfordern, kann mit PoseNet auf TensorFlow.js jeder diese Technologie direkt aus einem Webbrowser heraus erleben.

Da PoseNet unter zur Verfügung steht, können Javascript-Entwickler diese Technologie mit nur wenigen Zeilen Code basteln und nutzen. Darüber hinaus kann dies sogar dazu beitragen, die Privatsphäre der Benutzer zu schützen. Da PoseNet auf TensorFlow.js im Browser läuft, verlassen keine Posing-Daten den Computer eines Benutzers.

// Copyright (c) 2018 ml5
//
// This  is released under the MIT License.
// https://opensource.org/licenses/MIT

/* ===
ml5 Example
PoseNet example using p5.js
=== */

let video;
let poseNet;
let poses = [];

function setup() {
  createCanvas(640, 480);
  video = createCapture(VIDEO);
  video.size(width, height);

  // Create a new poseNet method with a single detection
  poseNet = ml5.poseNet(video, modelReady);
  // This sets up an event that fills the global variable "poses"
  // with an array every time new poses are detected
  poseNet.on('pose', function(results) {
    poses = results;
  });
  // Hide the video element, and just show the canvas
  video.hide();
}

function modelReady() {
  select('#status').html('Model Loaded');
}

function draw() {
  image(video, 0, 0, width, height);

  // We can call both functions to draw all keypoints and the skeletons
  drawKeypoints();
  drawSkeleton();
}

// A function to draw ellipses over the detected keypoints
function drawKeypoints()  {
  // Loop through all the poses detected
  for (let i = 0; i < poses.length; i++) {
    // For each pose detected, loop through all the keypoints
    let pose = poses[i].pose;
    for (let j = 0; j < pose.keypoints.length; j++) {
      // A keypoint is an object describing a body part (like rightArm or leftShoulder)
      let keypoint = pose.keypoints[j];
      // Only draw an ellipse is the pose probability is bigger than 0.2
      if (keypoint.score > 0.2) {
        fill(255, 0, 0);
        noStroke();
        ellipse(keypoint.position.x, keypoint.position.y, 10, 10);
      }
    }
  }
}

// A function to draw the skeletons
function drawSkeleton() {
  // Loop through all the skeletons detected
  for (let i = 0; i < poses.length; i++) {
    let skeleton = poses[i].skeleton;
    // For every skeleton, loop through all body connections
    for (let j = 0; j < skeleton.length; j++) {
      let partA = skeleton[j][0];
      let partB = skeleton[j][1];
      stroke(255, 0, 0);
      line(partA.position.x, partA.position.y, partB.position.x, partB.position.y);
    }
  }
}

License

MIT License

Copyright (c) 2018 ml5

Permission is hereby granted, free of charge, to any person obtaining a copy of this and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Jetzt sind Sie gefragt!

Haben Sie Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freue ich mich auf Ihren Kommentar.

Sie können diesen Beitrag natürlich auch weiterempfehlen. Ich bin Ihnen für jede Unterstützung dankbar!

Gefällt Ihnen dieser Beitrag? Teilen Sie ihn mit anderen. Sie machen uns damit eine große Freude!

Wie können wir Ihnen helfen?

Wir unterstützen Sie bei der Umsetzung Ihres Augmented Reality (AR) oder Virtual Reality (VR) Projektes! Ob Produktfotografie, 3D-Scan-Service, 3D-Visualisierung oder fertige 3D-Modelle für AR/VR – wir beraten Sie persönlich und unverbindlich.

Wenn Sie ein individuelles Angebot auf Basis Ihrer aktuellen Vorlagen (Fotos, Zeichnungen, Skizzen) wünschen, nutzen Sie einfach unser Anfrageformular.


Beitragsautor R23

3D-Modelle für Metaverse und Echtzeit-Anwendungen: VR, AR und mehr

Als Atelier für Metaverse Inhalte und interaktive Markenerlebnisse bieten wir Ihnen eine breite Palette an 3D-Modellen, die sich perfekt für Echtzeitanwendungen eignen. Ob Sie in eine virtuelle Welt eintauchen wollen (Virtual Reality, VR), virtuelle Objekte in die reale Welt einblenden wollen (Augmented Reality, AR) oder beides kombinieren wollen (Mixed Reality, MR) – unsere Modelle sind für alle Formen von Extended Reality (XR) optimiert. Dank unserer Expertise können Sie wertvolle Entwicklungszeit und -kosten sparen. Nutzen Sie unsere 3D-Modelle als Prototypen für Ihre XR-Erfahrungen oder integrieren Sie sie in Ihr fertiges Projekt. Wir stehen Ihnen gerne mit Rat und Tat zur Seite und sorgen dafür, dass Ihre Markenerlebnisse einzigartig und unvergesslich werden.

3D-Visualisierung
3D-Scan – Dienstleistung

Angebot anfordern


Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert