Estimarea caloriilor bazate pe imagini folosind Deep Learning

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.