PoseNet mit Webcam

Künstliche Intelligenz, Open Source Schlagwörter: , , 0 Kommentare

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 / Video 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 Motion Capture 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 Video- erstellt, die Ihnen zeigt, wie Sie eine Motion Capture auf einen 3D Character in verwenden.

Verwandeln Sie Ihren Commerce mit AR und 3D-Produktvisualisierung!

Bei uns geht es um Techniken, die es schaffen, das Produkt zum Erlebnis zu machen. Virtual & Augmented Reality, 360 Grad-Videos, Darstellungen in 3D, virtuelle Showrooms. Die Besucher:innen sollen eintauchen in die Welt des Unternehmens mit immersiven Technologien.
Charakterdesign / Maskottchen

Sie können uns mit der Erstellung von individuellen 3D-Visualisierungen beauftragen. Jeder kann 3D-Visualisierungen bei unserem Kreativservice bestellen - unabhängig davon, ob Sie nur ein einzelnes 3D-Modell benötigen oder viele.

Vor diesem Hintergrund freuen wir uns über über die Veröffentlichung einer .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 .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 .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!

Wie können wir Ihnen helfen?

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

Wünschen Sie ein individuelles Angebot auf Basis Ihrer aktuellen Vorlagen, nutzen Sie einfach unser Anfrageformular.

Hat Ihnen dieser Artikel gefallen?

Mit Ihrer Bewertung helfen Sie uns, unsere Inhalte noch weiter zu verbessern.

Gefällt Ihnen dieser Beitrag? Teilen Sie ihn mit anderen. Sie machen uns damit eine große Freude!
R23
R23 : Metaverse, Augmented Reality, Virtual Reality

Hinterlasse Sie einen Kommentar

An der Diskussion beteiligen?
Hinterlassen Sie uns einen Kommentar!

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

Ralf Dreiundzwanzig: Atelier für Virtual & Augmented Reality

Aktuell