Fotografie de Charles 🇵🇭 pe Unsplash

bazate

Potrivit OMS, aproape 20% din decesele din întreaga lume sunt atribuite unei diete nesănătoase. 39% dintre adulții cu vârsta de 18 ani și peste erau supraponderali în 2016, iar 13% erau obezi. Majoritatea populației lumii trăiește în țări în care supraponderalitatea și obezitatea ucid mai mulți oameni decât subponderali.

Problema aici nu constă în a avea suficientă mâncare, ci în faptul că oamenii nu știu ce este în dieta lor. Dacă oamenii își pot estima aportul de calorii folosind imaginile mâncării lor, pot decide cu ușurință cantitatea de calorii pe care doresc să o consume. Un estimator de calorii bazat pe imagini construit folosind învățarea profundă poate fi o aplicație convenabilă pentru a ține evidența a ceea ce conține planul de dietă al unei persoane

Dacă oamenii ar ști câte calorii conține mâncarea lor, atunci această problemă va fi oarecum controlată.

Soluția propusă

Oamenii își fac adesea poze cu mâncarea înainte de a mânca și le pun pe rețelele de socializare. Ei bine, soluția stă chiar în acest proces. Propunem să estimăm conținutul de calorii din imaginea furnizată de utilizator, identificând alimentele și estimând cantitatea utilizând învățarea profundă.

Pentru a oferi o estimare a caloriilor avem nevoie de o detecție precisă a obiectelor combinată cu IoU exactă (intersecție peste uniune). O cantitate impresionantă de IoU poate fi realizată folosind Detecții cu o singură fotografie, care sunt, de asemenea, mai rapide decât omologii lor, dar problema este legată de segmentare. Nu putem aproxima suma cu ieșirea Bounding Box, avem nevoie de mai multă precizie. Deci, soluția ar fi utilizarea Segmentării instanțelor.

Cum s-a făcut?

În primul rând, aveam nevoie de câteva date pentru a se potrivi modelului Mask-R-CNN pentru recunoașterea imaginii folosind Machine learning. Datele trebuiau adnotate cu limite și clase pentru fiecare produs alimentar de pe o farfurie. După ce m-am uitat o vreme în jur, am găsit setul de imagini cu alimente pregătit de Universitatea din Milano-Bicocca, Italia conform cerințelor noastre, setul de date a fost numit UNIMIB-2016. După o anumită prelucrare, setul de date cu imagini alimentare a fost gata să fie instruit cu Mask R-CNN.

Identificarea produselor alimentare

Pentru a identifica ce este pe farfurie, trebuie să segmentăm imaginea alimentelor date în categorii de alimente posibile. Segmentarea instanței clasifică pixelii individuali din imaginea dată în clase posibile, adică. alimente în cazul nostru. Având în vedere problema segmentării instanțelor, arhitectura Mask R-CNN ar fi o soluție potrivită. Masca R-CNN preia o imagine și scuipă trei ieșiri, măști ale articolelor identificate, casete de delimitare și clase pentru fiecare mască detectată. Măștile sunt matricele cu un singur canal codate binare de dimensiunea imaginii de intrare care denotă limitele obiectului identificat.

Masca R-CNN este dezvoltată pe baza R-CNN mai rapid, care este o rețea neuronală convoluțională bazată pe regiune. O rețea neuronală convolutională (ConvNet/CNN) este un algoritm de învățare profundă care poate lua o imagine de intrare, poate atribui importanță (greutăți și prejudecăți care pot fi învățate) diferitelor aspecte/obiecte din imagine și poate diferenția un tip de imagine de celălalt. Pentru a detecta obiectul, trebuie să cunoaștem clasa obiectului, precum și dimensiunea și locația casetei de delimitare. În mod convențional, pentru fiecare imagine, există o fereastră glisantă pentru a căuta fiecare poziție din imagine ca mai jos. Este o soluție simplă. Cu toate acestea, diferite obiecte sau chiar același tip de obiecte pot avea proporții și dimensiuni diferite în funcție de mărimea obiectului și distanța față de cameră. Și dimensiunile diferite ale imaginii afectează, de asemenea, dimensiunea efectivă a ferestrei. Acest proces va fi extrem de lent dacă vom folosi CNN de învățare profundă pentru clasificarea imaginilor în fiecare locație.

Pentru a ocoli problema selectării unui număr mare de regiuni, Ross Girshick și colab. a propus o metodă în care folosim căutarea selectivă pentru a extrage doar 2000 de regiuni din imagine și le-a numit propuneri de regiuni. Arhitectura se numește R-CNN.

Același autor al lucrării anterioare (R-CNN) a rezolvat unele dintre dezavantajele R-CNN pentru a construi un algoritm mai rapid de detectare a obiectelor și a fost numit Fast R-CNN. Abordarea este similară algoritmului R-CNN. Dar, în loc să alimentăm propunerile de regiune către CNN, le transmitem imaginea de intrare CNN pentru a genera o hartă de caracteristici convoluționale.

Masca R-CNN extinde antetul la 3 ramuri comparativ cu doar 2 ramuri din Faster R-CNN, o ramură suplimentară de identificare a măștii este adăugată arhitecturii Faster R-CNN. A imagine de mască este pur și simplu o imagine în care unele dintre valorile intensității pixelilor sunt zero, iar altele sunt diferite de zero, ceea ce determină limitele unui obiect. În afară de asta, Mask R-CNN folosește alinierea ROI care utilizează interpolare biliniară pentru Regiunea de interes (ROI) în comparație cu diviziunea de podea utilizată în Faster R-CNN care a deplasat enorm măștile la ieșiri, dar a servit suficientă precizie pentru predicția casetei de delimitare.

După achiziționarea obiectului alimentar și a măștii, avem nevoie de un plan nepăsător pentru a estima și mărimea alimentelor identificate. Deci, pentru a dobândi dimensiunea alimentelor și, astfel, a estima caloriile, avem nevoie de o estimare a dimensiunii obiectului. Estimarea mărimii obiectului printr-o cameră cu orificiu este o treabă dificilă, este necesar un obiect de referință pentru aproximarea dimensiunii fără a utiliza mai multe camere.

Estimarea caloriilor alimentare

Deoarece același aliment poate fi luat la adâncimi diferite pentru a genera diferite dimensiuni de imagine, avem nevoie de o metodă pentru a calcula caloriile sau pentru a estima dimensiunea alimentelor într-un scenariu din lumea reală. După ce obținem produsele alimentare dorite detectate împreună cu măștile lor, avem nevoie de dimensiunile reale ale obiectelor, ceea ce nu este posibil doar prin intermediul imaginilor cu o cameră cu orificiu. Deci, adoptăm o abordare de referință care face referire la obiectele alimentare la dimensiunea obiectului precunoscut pentru a extrage dimensiunea reală a alimentelor conținute în acea imagine specifică.

Deoarece demonstrația de mai sus folosește moneda ca obiect de referință, propunem să folosim o farfurie ca obiect de referință pentru estimarea alimentelor detectate în imagini. Plăcile pot fi detectate folosind detectarea marginilor sau includ în datele de instruire pentru a detecta împreună cu alimentele cu o singură rețea. După ce detectăm plăcile, pixeli_per_inch_sq se calculează utilizând dimensiunea reală a plăcii în viața reală.

pixeli_per_inch_sq= plate_pixels_area/actual_plate_area

real_food_area = masked_food_pixel_area/pixels_per_inch_sq

Concluzie

Cu această scurtă testare a setului de date cu imagini alimentare cu Mask R-CNN, putem deduce că este foarte posibil să realizăm o aplicație capabilă să estimeze caloriile din imaginile alimentare. Aplicația va avea un impact extraordinar asupra modului în care oamenii percep o farfurie de alimente și, de asemenea, va avea un impact asupra pieței de scădere în greutate și de gestionare a greutății.

Takeaway-urile mele

După ce am lucrat la acest proiect, am primit o introducere rapidă în învățarea profundă. Am reușit să înțeleg că există o mulțime de domenii de aplicații în care putem valorifica capacitățile Mask R-CNN.

Privind înapoi, mulțumim cu siguranță Leapfrog pentru că ne-a oferit oportunitatea și s-ar dovedi cu siguranță o bază excelentă pentru cariera noastră. Aș dori, de asemenea, să mulțumesc duoului KC (Aviskar KC și Bipin KC) pentru că au fost mentori atât de remarcabili pentru proiectul meu de învățare automată.

Despre acest proiect

Acest proiect face parte din proiectul meu de stagiu la Leapfrog. Programul de stagii de 6 săptămâni a acoperit un domeniu larg, de la analiza datelor, modelarea predictivă până la nucleul învățării automate și algoritmilor de învățare profundă. Intensitatea programului și volumul de cunoștințe pe care le-am dobândit ne-au intrigat. Puteți găsi proiectul meu pentru estimarea caloriilor alimentare pe GitHub.