Creați o aplicație web care recunoaște pozițiile de yoga folosind un model din Model Asset eXchange găzduit pe Machine Learning eXchange

Nodul sursă: 1573049

Rezumat

Acest model de cod IBM Developer explică cum să detectăm ipostaze umane într-o anumită imagine utilizând modelul Human Pose Estimator din Model Asset eXchange care este găzduit pe Schimb de învățare automată. Folosind coordonate, liniile de poziție create de model sunt asamblate în ipostaze ale corpului întreg pentru fiecare dintre oamenii detectați în imagine.

Descriere

Estimator de poziție umană modelul detectează oamenii și pozițiile lor într-o imagine dată. Modelul detectează mai întâi omul în imaginea de intrare și apoi identifică părțile corpului, inclusiv nasul, gâtul, ochii, umerii, coatele, încheieturile, șoldurile, genunchii și gleznele. Apoi, fiecare pereche de părți ale corpului asociate este conectată printr-o „linie de poziție”, așa cum se arată în imaginea următoare. O linie poate conecta ochiul stâng de nas, în timp ce alta ar putea conecta nasul de gât.

Exemplu de linie de poziție

Fiecare linie de poziție este reprezentată de o listă [x1, y1, x2, y2], unde prima pereche de coordonate (x1, y1) este începutul
punctul liniei pentru o parte a corpului, în timp ce a doua pereche de coordonate (x2, y2) este punctul final al liniei pentru
altă parte asociată a corpului. Liniile de poziție sunt asamblate în poziții întregi ale corpului pentru fiecare dintre oamenii detectați în
imagine.

Modelul se bazează pe implementarea TF a Model OpenPose. Codul din acest depozit implementează modelul ca serviciu web într-un container Docker.

Yogait, un asistent de yoga care folosește modelul Human Pose Estimator MAX pentru a ghici ce poziție de yoga o execută un utilizator, folosește un SVM pre-antrenat pentru a clasifica pozițiile. În loc să folosească liniile carteziene pe care le returnează modelul MAX, Yogait folosește o reprezentare polară pentru a efectua clasificarea. Acest lucru a fost făcut pentru a face mult mai ușoară clasificarea posturilor. În loc să antreneze SVM-ul pe un sistem de coordonate xy, care ar necesita translație și rotație la creșterea datelor, reprezentarea polară se bazează doar pe locația articulațiilor față de centrul modelului estimat.

Coordonatele [x,y] sunt convertite în [phi, rho] pentru fiecare articulație.

Conversie de poziție

SVM efectuează clasificarea pe o versiune aplatizată a vectorilor polari. În comparație cu o reprezentare carteziană, această reprezentare polară folosește puține date și poate efectua clasificarea unui om în orice parte a cadrului capturat. Dacă ar fi folosită reprezentarea carteziană, atunci ar trebui să efectuați toate ipostazele din centrul cadrului camerei.

După ce ați completat modelul de cod, veți înțelege cum să:

  • Creați o imagine Docker a modelului Human Pose Estimator MAX
  • Implementați un model de învățare profundă cu un punct final REST
  • Generați o estimare a poziției pentru o persoană într-un cadru de videoclip folosind API-ul REST al modelului MAX
  • Rulați o aplicație web care utilizează API-ul REST al modelului

Debit

Arhitectura fluxului Yogait

  1. Serverul trimite video-ul capturat cadru cu cadru de la camera web la modelul API.
  2. Interfața de utilizare web solicită liniile de poziție estimate pentru cadru de la server.
  3. Serverul primește date de la modelul API și actualizează rezultatul în interfața de utilizare web.

Instrucțiuni

Găsiți pașii detaliate pentru acest model în README. Acești pași vă arată cum să:

  1. Configurați modelul MAX.
  2. Porniți aplicația web.
  3. Rulați local cu un script Python.
  4. Utilizați un caiet Jupyter.

Sursa: https://developer.ibm.com/patterns/build-a-web-application-that-recognizes-yoga-poses-using-a-model-from-the-model-asset-exchange/

Timestamp-ul:

Mai mult de la Dezvoltator IBM