10 7 Primjena detekcije položaja tijela u vašem AI projektu korištenjem PoseNet i TensorFlow Novosti, PICS, IT community, ML/AI Kroz predavanje ovomjesečnog ML/AI Split meetupa u petak 12.07. u PICS-u biti će obrađena tema prepoznavanja položaja tijela (Pose Detection) u stvarnom vremenu koristeći web kameru. Prikazati ćemo način na koji računalo može detektirati naše pokrete putem web kamere. Pokazati ćemo gotovu biblioteku koja je najjednostavnija za korištenje - PoseNet. Pobliže se objašnjava rad neuronskih mreža (Neural networks), s naglaskom na konvolucijske neuronske mreže (CNN), koje su se pokazale jako pouzdane kad je riječ o obradi slika. Opisan je detaljno način djelovanja, učenja i uporabe neuronskih mreža, s naglaskom na konvolucijske neuronske mreže. Predavanje ima namjeru da se što jednostavnije pojasni način obrade slika putem konvolucijskih neuronskih mreža koje su se pokazale kao najbolji kandidat za obradu. Implementirana je jednostavna web aplikacija koja može poslužiti kao primjer interaktivnog učenja za djecu. Prikazati ćemo kako je jako jednostavno implementirati aplikaciju koja koristi neuronske mreže, a može biti jako korisna i efektivna. Predstaviti će se i odgovarajuće biblioteke za korištenje strojnog učenja koje pojednostavljuju i ubrzavaju proces implementacije željenih aplikacija (TensorFlow, PoseNet, OpenCV, OpenPose). Zanimljivo je kako umjetne neuronske mreže mogu djelomično kopirati biološke neuronske mreže. Umjetne neuronske mreže imaju prednost što se tiče brzine obrade podataka, no ljudski mozak je ipak mnogo kompleksniji i njegov način zaključivanja nikad neće moći zamijeniti umjetna neuronska mreža. Kako se detekcija položaja tijela uklapa u umjetnu inteligenciju i kakva je njena potencijalna primjena Umjetna inteligencija (AI - Artificial Intelligence) je dio računalne znanosti koji se bavi razvojem inteligentnih neživih sustava. U današnje vrijeme AI se razvija rapidno imajući veliki utjecaj na svakodnevni život. Jedan od primjera koji većina koristi na dnevnoj bazi su glasovne naredbe na našim mobilnim uređajima. Također vrlo korisni primjer i za kojim je potražnja sve veća je prepoznavanje pokreta preko kamera na našim računalima, laptopima i mobilnim uređajima. Upravo o toj temi je riječ u ovom predavanjuu: što je prepoznavanje pokreta, kako kamera prepoznaje naše pokrete i položaje, kako možemo implementirati takav sustav, koje već uvježbane modele koristimo itd. Jedan od glavnih primjera gdje se takav sustav koristi su danas računalne i video igrice. Npr. prije su igrače konzole, kao što je Nintendo Wii sa svojim Wii Remote, za prepoznavanje pokreta morale koristiti dodatne uređaje sa markerima i različitim senzorima, tada bi se prikupljeni podaci obrađivali i kao rezultat vraćali lokacije dijelova tijela ili brzinu pokreta. Danas sve što je potrebno je web kamera čiji prikupljeni podaci se obrađuju u stvarnom vremenu. Neovisno o kojem tipu podatka je riječ, bili oni slike, videa, tekst i sl., neuronske mreže su se pokazale kao najbolji algoritam za učenje. Za obradu slika kao najpouzdaniji kandidat su se pokazale konvolucijske neuronske mreže o kojima će također biti riječ u ovom predavanju. Već postoje brojni uvježbani modeli neuronskih mreža koji se mogu jednostavno implementirati u aplikacije. Prepoznavanje položaja tijela Procjena položaja tijela je složeni problem koji uključuje različite pod-probleme od scene do prepoznavanja dijelova tijela. Ljudi su različitih oblika i veličina: ima mnogo ključnih točaka (kao što su zglobovi) za praćenje, mogu se nalaziti u različitim pozicijama i smjerovima. Također ljudi su često u okruženju drugih ljudi ili predmeta što može dovesti do vizualne okluzije. Neki ljudi koriste različite pomoćne uređaje kao što su invalidska kolica ili štake, koji mogu blokirati dio tijela koji kamera snima. Drugi možda ni nemaju određene udove, ili imati različite proporcije i slično. Sve navedeno su problemi s kojima se susrećemo pri procjeni položaja tijela. Cilj je razviti i kasnije koristiti modele strojnog učenja koji mogu razumjeti i pametno interpretirati podatke o svim tim različitim vrstama tijela. Kao što je već spomenuto, za prepoznavanje položaja nam treba uvježbani model strojnog učenja. Sigurno mnoge zanima: Zašto već uvježban? Zašto ga ne uvježbavamo sami? Prvi razlog je zato što treba značajno vrijeme za uvježbavanje modela, a i jednostavnije, ponekad i pouzdanije, je uzeti već gotov model. Drugi jako bitan razlog je taj što teško možemo nabaviti toliku količinu podataka kako bi naš model bio jako precizan. Potrebno je tisuće, ako ne i stotine tisuća slika, kako bi predstavili sve dijelove tijela u svim mogućim položajima. Pogodne platforme i biblioteka Kako bi započeli s realizacijom konkretnog programa koji će služiti za prepoznavanje položaja tijela, potrebno je razmotriti postojeća rješenja. Danas postoji cijeli niz razvojnih okruženja, programskih jezika i biblioteka koje stoje na raspolaganju programeru početniku. Ideja korištenja biblioteka je ubrzati izradu prototipa uz smanjivanje generiranja pogrešaka koje su neminovne pri izradi programske podrške. Strojno učenje, koje je potrebno za realizaciju programa u sebi uključuje i znanje iz područja statistike, ali i znanje o neuronskim mrežama. Iz navedenog razloga odlučila sam se odabrati biblioteku koja mi može poslužiti za brzu izradu prototipa, ali i koja će omogućiti kasniju industrijsku primjenu izrađenog rješenja. Kao odabir nametnula se biblioteka Tensorflow. Tensorflow podržava biblioteku Tensorflow.js koja omogućava strojno učenje u browseru, što je zapravo jako praktično i nikakve druge posebne komponente nisu potrebne. Također velika prednost strojnog učenja u browseru je privatnost, pogotovo ako se radi o velikoj količini podataka ili nekim podatcima koji moraju biti tajni. Sve se izvršava lokalno, na našim računalima, nema pohranjivanja na nečije „oblake“ i sl. TENSORFLOW Danas najjednostavnija i najpraktičnija open source platforma koja se koristi za strojno učenje je Tensorflow, osnovana od strane Google Brain Team-a. Ima sveobuhvatan, fleksibilan ekosustav alata, biblioteka i resursa zajednice koji istraživačima omogućuju korištenje najnovije tehnologije strojnog učenja, te da razvojni inženjeri lako izrade i implementiraju aplikacije koje koriste strojno učenje. Tensorflow je poslužio za razvoj cijelog niza biblioteka koje služe za rješavanje konkretnih problema temeljenih na neuronskim mrežama. Jedna od njih je i biblioteka PoseNet. PoseNet PoseNet je biblioteka temeljena na Tensorflow-u koja može prepoznati ili jednu pozu ili više poza. To znači da postoji verzija algoritma koja može otkriti pozu samo jedne osobe na slici i koja može otkriti više osoba na slici te također poze i pokrete svih njih. Autori su se odlučili za dvije verzije, prva je puno brža i jednostavnija, dok druga je sporija ali obuhvaća veći broj ljudi. Također je bitno da algoritam ne prepoznaje tko je na slici. Prednost ove biblioteke je što se pokreće na TensorFlow.js-u i bilo tko sa pristojnom web-kamerom na računalu ili mobilnom uređaju može koristiti ovu vrstu tehnologije putem browser-a. PoseNet je zapravo model strojnog učenja temeljen na neuronskim mrežama, točnije dubokim konvolucijskim neuronskim mrežama. OpenCV OpenCV je open source za računalni vid i biblioteka za softvere koji koriste strojno učenje. OpenCV je osmišljen kako bi pružio zajednički infrastrukturu za aplikacije računalnog vida i ubrzao korištenje strojne percepcije u komercijalnim proizvodima, te je također besplatan za komercijalne potrebe. Proizvod je licenciran BSD-om tako ta olakšava tvrtkama korištenje i modificiranje koda. Biblioteka ima više od 2500 optimiziranih algoritama, te je glavni fokus na aplikacijama u stvarnom vremenu. Ovi algoritmi mogu se koristiti za prepoznavanje lica, identifikaciju objekata, praćenje pokreta preko kamere, izdvajanje 3D modela itd. Trenutno broji oko 47 000 korisnika i broj preuzimanja je veći od 18 milijuna. OpenPose OpenPose je open source biblioteka napisana u C++ koja koristi OpenCV i Caffe za procjenu položaja jedne ili više osoba. OpenPose je prva biblioteka koja u stvarnom vremenu prepoznaje ljudsko tijelo, ruku i ključne točke na licu, koristeći jednu sliku. Ukupno prepoznaje do 130 ključnih točaka na tijelu. Temeljena je na neuronskim mrežama. Demonstracija cijelog koncepta uz upotrebu opisanih biblioteka i konvolucijske neuralne mreže kroz prezentaciju jednostavne web aplikacije S obzirom na jednostavnost implementacije gotovih modela i potražnjom za takvim sustavima gdje sučelje reagira kako se mi krećemo, prezentirati će se jednostavna web aplikacija koja može biti primjer za interaktivno učenje. Radi se o primjeru jednostavnog kviza sa općim pitanjima na koja odgovaramo pokretima ruke. Prezentirati će se i tehnički aspekt izrade navedene pokazne aplikacije uz način korištenja i povezivanja svih navedenih biblioteka i platformi kako bi se demonstriralo da uz poznavanje osnovnih koncepata i nešto znanja računalnog programiranja (JS) i korištenjem dostupnih biblioteka je relativno lako izraditi jednostavnu funkcionalnu aplikaciju. Detaljna demonstracija izrade ovakvog jednostavnog primjera bi moglo poslužiti kao motivacija newcomerima u ovom području da krenu i sami u istraživanje svijeta Umjetne inteligencije i Strojnog učenja, a što je jedna od motivacija organizatora ovog meetupa ! Prijavite se besplatno na meetup na linku : https://www.meetup.com/ML-AI-Split/events/zjplsqyzkbqb/ , ulaz slobodan za sve koje zanima umjetna inteligencija i strojno učenja. Nije neophodno stručno predznanje iz ovog područja da bi se prisustvovalo meetupu. Podijelite ovaj članak: Facebook Twitter