Cum să clasificați cu ușurință alimentele folosind Deep Learning și Tensorflow
Până acum ați fi auzit despre rețelele neuronale convoluționale (CNN) și eficacitatea acesteia în clasificarea imaginilor. Precizia CNN-urilor în clasificarea imaginilor este destul de remarcabilă, iar aplicațiile sale din viața reală prin API-uri sunt destul de profunde.

Dar, uneori, această tehnică poate să nu fie adecvată. O imagine poate reprezenta mai multe atribute. De exemplu, toate etichetele următoare sunt valabile pentru imaginea de mai jos. Un simplu clasificator s-ar confunda cu ce etichetă să ofere într-un astfel de scenariu.
Această problemă este cunoscută sub numele de Clasificare multi-etichetă.
De ce clasificarea multi-etichetă ?
Există multe aplicații în care este necesară atribuirea mai multor atribute unei imagini. De fapt, este mai natural să ne gândim la imagini ca aparținând mai multor clase decât unei singure clase. Mai jos sunt câteva aplicații ale Clasificării Multi Label.
1. Înțelegerea scenei
Clasificarea cu mai multe etichete oferă o analiză anterioară ușor de calculat pentru algoritmi complexi de înțelegere a scenei. Identificarea diferitelor etichete posibile pentru o imagine poate ajuta algoritmul Scene Understanding să creeze mai multe descrieri vii pentru imagine.
2. Recuperare bazată pe conținut
Etichetele cu etichete multiple pot spori capacitatea motoarelor de căutare de a prelua interogări foarte specifice despre un anumit produs. De exemplu, am putea oferi mai multe etichete pentru o imagine a unui model de modă care poartă ținută de marcă. Un motor de căutare poate prelua acest rezultat atunci când căutați oricare dintre etichete. Un motor de clasificare cu etichete multiple poate crea automat o bază de date pentru motorul de căutare.
Mai mult, putem folosi etichetele pentru a recomanda produse conexe pe baza activității sau preferințelor utilizatorului. De exemplu, puteți recomanda melodii sau filme similare pe baza activității utilizatorului. Un clasificator de etichete multiple poate fi utilizat pentru a indexa automat astfel de melodii și filme.
Cum funcționează clasificarea etichetelor?
Dacă sunteți familiarizați cu algoritmii de învățare automată pentru clasificare, unele modificări minore sunt suficiente pentru ca același algoritm să funcționeze pentru o problemă cu etichete multiple. În orice caz, permiteți-ne să facem o mică recenzie a modului în care funcționează clasificarea și a modului în care poate fi extinsă la un scenariu cu mai multe etichete. Pentru restul acestui blog, ne vom concentra pe implementarea aceluiași lucru pentru imagini.
Clasificare cu etichetă unică
Rețelele neuronale se numără printre cei mai puternici (și populari) algoritmi utilizați pentru clasificare. Ei iau intrări sub forma unui vector, efectuează unele calcule și apoi produc un vector de ieșire. Vectorul de ieșire este apoi comparat cu etichetele adevărului la sol și procesul de calcul este modificat (adică instruit) pentru a produce rezultate mai bune. Pentru a antrena rețeaua neuronală, ne hrănim datele de intrare sub formă de vectori de caracteristici care reprezintă esența importantă a datelor.
Un obstacol pe care l-ați fi observat este problema codării imaginilor într-un vector de caracteristici. Rețelele neuronale convoluționale (CNN) sunt utilizate în acest scop. Convoluțiile extrag caracteristici importante din imagini și le convertesc într-o reprezentare vectorială pentru procesare ulterioară. Restul procesării într-un CNN este similar cu cel al unui Perceptron cu mai multe straturi. Acesta este, pe scurt, modul în care se realizează clasificarea unei singure etichete.
Clasificare Multi Label
Acum, cum adaptăm acest model pentru Clasificarea Multi Label? Există mai multe strategii pentru a face același lucru.
Metoda 1 - Transformarea problemei
În acest caz, vom transforma problema Multi Label într-o problemă Multi Class. O modalitate de a face acest lucru este prin instruirea unui clasificator separat pentru fiecare etichetă. Această metodă are dezavantajul evident de a antrena prea mulți clasificatori. Acest lucru ignoră, de asemenea, posibila corelație între fiecare etichetă.
O altă metodă este codificarea fiecărei combinații posibile de etichete ca o clasă separată, creând astfel un set de puteri de etichete. Această metodă funcționează bine pentru un număr mic de combinații de etichete, dar sunt greu de scalat pentru un număr mare de combinații de etichete. Pentru doar 10 etichete, am avea un set de putere de dimensiunea 1024 (2 ridicate la puterea 10)!
Metoda 2 - Adaptarea algoritmului
Uneori, modificarea minoră a algoritmului ar fi suficientă pentru rezolvarea unei probleme de clasificare cu etichete multiple. De exemplu, în cazul unei rețele neuronale, putem înlocui ultimul strat softmax cu un strat Sigmoid și apoi să folosim Binary Cross Entropy pentru a optimiza modelul.
În mod clar, există o mulțime de strategii care pot fi explorate. Adesea, o strategie poate să nu funcționeze cel mai bine pentru toate tipurile de date și, prin urmare, necesită multă experimentare.
Clasificare alimentară cu etichete multiple
Teoria sună bine, dar cum o implementăm? În această secțiune, vom construi propriul nostru algoritm de clasificare a alimentelor cu mai multe etichete folosind Keras (cu backend TensorFlow). Vom modifica un model simplu CNN pentru a permite clasificarea cu mai multe etichete. Vom face apoi o comparație cu API-ul Nanonets Multi Label Classification.
Tot codul este disponibil pe GitHub aici. Puteți urmări depozitul GitHub pentru un ghid detaliat pentru a reproduce experimentele.
Descrierea problemei
Permiteți-ne să lucrăm la o posibilă aplicație din clasa reală a clasificării multiple. Având în vedere un produs alimentar, am dori să identificăm posibile etichete pentru imagine. De exemplu, având în vedere imaginea unui tort, am dori ca modelul nostru să furnizeze etichete precum „carbohidrați” și „desert”.
Un astfel de model este extrem de util pentru recuperarea bazată pe conținut pentru întreprinderile bazate pe industria alimentară. De exemplu, putem crea o aplicație plană dietetică automată pe baza cerințelor utilizatorului și să recuperăm imagini și rețete relevante pentru produsele alimentare adecvate.