Cercetarea din spatele tehnologiei de recunoaștere a alimentelor Nutrola

Cum reușește Nutrola să identifice alimentele dintr-o fotografie în mai puțin de 3 secunde? O analiză detaliată a cercetărilor în domeniul viziunii computerizate, învățării profunde și științei nutriției care stau la baza AI-ului nostru.

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

Când faci o fotografie cu cina ta și Nutrola îți oferă o analiză nutrițională completă în mai puțin de trei secunde, în spate se află zeci de ani de cercetări în viziunea computerizată, știința nutriției și ingineria AI. Ceea ce pare a fi un singur instantaneu de recunoaștere este, de fapt, o succesiune de modele specializate, fiecare rezolvând o problemă științifică distinctă. De la momentul în care declanșezi camera până la apariția valorilor macronutrienților pe ecran, imaginea ta trece printr-o rețea construită pe cercetări fundamentale realizate de instituții precum Stanford, MIT, Google DeepMind și Laboratorul de Viziune Computerizată ETH Zurich.

Acest articol urmărește acea rețea pas cu pas, citând cercetările reale și conceptele tehnice care fac posibilă recunoașterea alimentelor de către Nutrola.

Rețeaua de Viziune Computerizată

Recunoașterea alimentelor de către Nutrola nu este un singur model. Este o rețea multi-etapă în care fiecare etapă se ocupă de o sarcină distinctă, iar rezultatul unei etape este folosit ca intrare pentru următoarea.

Etapa 1 -- Preprocesarea imaginii. Înainte ca orice rețea neuronală să vadă fotografia ta, imaginea brută trece printr-un proces de normalizare. Acest lucru include redimensionarea la o rezoluție standard, ajustarea pentru echilibrul de alb și variațiile de expunere, precum și aplicarea transformărilor de augmentare a datelor în timpul antrenării. Cercetările realizate de Krizhevsky, Sutskever și Hinton în lucrarea lor de referință din 2012 despre ImageNet au demonstrat că preprocesarea și augmentarea îmbunătățesc semnificativ generalizarea în rețelele neuronale convoluționale profunde (CNN). Rețelele moderne extind acest lucru cu tehnici precum CutMix (Yun et al., 2019) și RandAugment (Cubuk et al., 2020), care învață modelul să fie robust la occludere și schimbări de culoare frecvente în fotografia alimentelor.

Etapa 2 -- Detectarea și segmentarea alimentelor. Odată ce imaginea a fost preprocesată, aceasta trece printr-un model de detectare a obiectelor care identifică și localizează fiecare aliment distinct de pe farfurie. Această etapă se bazează puternic pe cercetările în rețele neuronale convoluționale bazate pe regiuni. Faster R-CNN (Ren et al., 2015) a stabilit paradigma rețelelor de propunere a regiunilor, în timp ce arhitecturi mai recente, precum DETR (Carion et al., 2020) de la Facebook AI Research, folosesc atenția bazată pe transformatoare pentru a elimina complet componentele concepute manual, cum ar fi cutiile de ancorare. Pentru precizie la nivel de pixel, modelele de segmentare semantică bazate pe arhitecturi precum DeepLab (Chen et al., 2017) atribuie fiecărui pixel din imagine o categorie alimentară, ceea ce este esențial pentru preparatele mixte în care ingredientele se suprapun.

Etapa 3 -- Clasificarea alimentelor. Fiecare regiune alimentară detectată este apoi clasificată. Baza clasificatoarelor moderne de alimente provine din arhitecturi validate pe ImageNet (Deng et al., 2009), setul de date cu 14 milioane de imagini etichetate care a catalizat revoluția învățării profunde. Seturi de date specifice alimentelor, cum ar fi Food-101 (Bossard et al., 2014), care conține 101.000 de imagini din 101 categorii, și UECFOOD-256 (Kawano și Yanai, 2015), care acoperă 256 de categorii alimentare cu un accent pe bucătăria japoneză, oferă datele de antrenament specifice domeniului necesare pentru a ajusta aceste arhitecturi de uz general pentru recunoașterea alimentelor.

Etapa 4 -- Estimarea porțiilor. După ce a identificat ce se află pe farfurie, sistemul estimează cât din fiecare aliment este prezent. Aceasta este cea mai dificilă problemă nerezolvată în cercetarea recunoașterii alimentelor și implică estimarea adâncimii și raționamentul volumetric dintr-o singură imagine 2D.

Etapa 5 -- Maparea nutrițională. În final, alimentul clasificat și dimensiunea porției estimate sunt corelate cu o bază de date nutriționale verificate pentru a produce valori pentru calorii, proteine, carbohidrați, grăsimi și micronutrienți.

Fiecare dintre aceste etape reprezintă un domeniu distinct de cercetare activă. Secțiunile de mai jos examinează cele mai provocatoare etape din punct de vedere tehnic în detaliu.

Clasificarea alimentelor: Dincolo de "Asta e o salată"

Distingerea unei salate de un steak este simplă pentru orice clasificator modern. Provocarea reală începe atunci când sistemul trebuie să facă distincția între preparate vizual asemănătoare: chicken tikka masala versus butter chicken, pad thai versus drunken noodles, sau o salată grecească versus fattoush. Aceste preparate împărtășesc culori, texturi și modele structurale, dar diferă semnificativ în ingrediente și densitatea calorică.

Învățare prin transfer și adaptare la domeniu

Abordarea standard pentru clasificarea alimentelor se bazează pe învățarea prin transfer, o tehnică formalizată de Yosinski et al. (2014), în care un model preantrenat pe un set de date general mare, cum ar fi ImageNet, este ajustat pe date specifice alimentelor. Straturile inferioare ale rețelei, care detectează margini, texturi și forme de bază, se transferă bine între domenii. Straturile superioare, care codifică semnificația semantică, sunt reantrenate pentru a învăța caracteristici specifice alimentelor, cum ar fi diferența dintre luciul unei suprafețe prăjite și finisajul mat al uneia aburite.

Cercetările realizate de Hassannejad et al. (2016) au demonstrat că ajustarea InceptionV3 pe Food-101 a atins o acuratețe de top-1 de 88,28%, o îmbunătățire semnificativă față de abordările anterioare bazate pe caracteristici realizate manual. Lucrările mai recente folosind Vision Transformers (Dosovitskiy et al., 2020) și variantele lor specifice alimentelor au dus acuratețea pe Food-101 la peste 93%.

Clasificarea multi-etapă pentru preparate complexe

Mesele reale conțin rareori un singur element. O farfurie tipică de cină ar putea conține somon la grătar, sparanghel copt, quinoa și un sos de unt cu lămâie. Clasificarea multi-etapă, în care o singură imagine poate primi mai multe etichete independente, rezolvă această problemă. Cercetările realizate de Wang et al. (2016) pe arhitecturi CNN-RNN pentru clasificarea imaginilor multi-etapă au stabilit cadre care captează modelele de co-apariție a etichetelor. În domeniul alimentelor, aceasta înseamnă că modelul învață că orezul și curry-ul apar frecvent împreună, ceea ce servește ca semnal contextual care îmbunătățește acuratețea fiecărui aliment individual.

Nutrola extinde acest lucru cu un sistem de clasificare ierarhic. În loc să prezică o etichetă plată, sistemul clasifică mai întâi categoria alimentară generală (cereală, proteină, legumă, sos), apoi se concentrează pe elementul specific din acea categorie. Această abordare în două etape reduce confuzia între elementele vizual asemănătoare din categorii diferite și reflectă modul în care sunt organizate bazele de date nutriționale.

Estimarea porțiilor: Provocarea 3D

Identificarea alimentelor de pe o farfurie rezolvă doar jumătate din problemă. O porție de 100 de grame de piept de pui conține 165 de calorii. O porție de 250 de grame conține 412 calorii. Fără o estimare precisă a porțiilor, chiar și identificarea perfectă a alimentelor produce numărări de calorii nesigure.

Estimarea adâncimii monoculare

Estimarea volumului alimentelor dintr-o singură fotografie 2D necesită ca sistemul să deducă adâncimea, o problemă cunoscută sub numele de estimare a adâncimii monoculare. Eigen, Puhrsch și Fergus (2014) au publicat lucrări fundamentale care demonstrează că CNN-urile pot prezice hărți de adâncime pixel cu pixel din imagini unice. Cercetările mai recente realizate de Ranftl et al. (2021) au introdus MiDaS, un model antrenat pe seturi de date mixte care produce estimări robuste ale adâncimii relative în diverse scene.

Pentru aplicațiile alimentare, estimarea adâncimii permite sistemului să distingă între un strat subțire de sos întins pe o farfurie și o bol cu supă adâncă. Combinată cu geometria cunoscută a obiectelor de referință comune, cum ar fi farfuriile, bolurile și ustensilele, hărțile de adâncime pot fi convertite în estimări aproximative ale volumului.

Abordări geometrice pentru estimarea volumului

Cercetările de la Universitatea din Tokyo (Okamoto și Yanai, 2016) au demonstrat că volumul alimentelor poate fi estimat prin potrivirea primitivelor geometrice, cum ar fi cilindrii, semisferele și prismele dreptunghiulare, la regiunile alimentare segmentate. O moviliță de orez se apropie de un semi-ellipsoid. Un pahar de lapte se apropie de un cilindru. O felie de pâine se apropie de o prismă dreptunghiulară.

Aceste aproximări geometrice, combinate cu priors de densitate învățate (sistemul știe că un anumit volum de piure de cartofi cântărește mai mult decât același volum de popcorn), produc estimări de greutate care, conform cercetărilor, se încadrează în 15-20% din adevărul de bază pentru cele mai comune alimente. Nutrola rafinează aceste estimări folosind o abordare de ansamblu proprietară care combină raționamentul geometric cu modele de regresie învățate antrenate pe zeci de mii de imagini alimentare cu greutăți cunoscute.

Calibrarea obiectelor de referință

Unele sisteme de recunoaștere a alimentelor folosesc obiecte de referință cunoscute în scenă pentru calibrarea scării. O farfurie standard de cină are un diametru de aproximativ 26 de centimetri. Un card de credit măsoară 85,6 x 53,98 milimetri. Atunci când sistemul detectează astfel de obiecte, poate stabili o scară reală care îmbunătățește semnificativ estimările volumului și greutății. Cercetările realizate de Fang et al. (2016) la Universitatea Purdue au arătat că calibrarea pe baza farfuriei a redus eroarea estimării porțiilor cu aproximativ 25% comparativ cu abordările necalibrate.

Strat de bază de date verificate

Recunoașterea AI nu este suficientă pentru a oferi numărări precise ale caloriilor. Chiar dacă un model atinge o acuratețe de 99% în identificarea pieptului de pui la grătar, rezultatul nutrițional final depinde în totalitate de calitatea bazei de date la care se corelează.

Aici se deosebește abordarea Nutrola de cea a multor competitori. Cele mai multe aplicații de urmărire a alimentelor se bazează pe baze de date crowdsourced, unde orice utilizator poate trimite informații nutriționale. Studiile au arătat că bazele de date alimentare crowdsourced conțin rate de eroare între 15 și 30%, cu unele intrări diferind de valorile verificate în laborator cu mai mult de 50% pentru macronutrienți cheie.

Nutrola menține o bază de date nutrițională 100% verificată. Fiecare intrare este corelată cu surse autoritare, inclusiv USDA FoodData Central, tabelele de compoziție McCance și Widdowson utilizate de Serviciul Național de Sănătate din Marea Britanie și analize nutriționale revizuite de colegi. Aceasta înseamnă că, chiar dacă stratul de recunoaștere AI introduce o mică marjă de eroare în identificarea alimentelor sau estimarea porțiilor, datele nutriționale la care se corelează sunt de încredere.

Stratul de verificare se ocupă, de asemenea, de o subtilitate pe care abordările pure AI o ratează: metoda de preparare afectează conținutul nutrițional. Un piept de pui de 150 de grame care este grătar conține aproximativ 165 de calorii, dar același piept prăjit în ulei de măsline conține aproximativ 230 de calorii. Baza de date Nutrola surprinde aceste variații în funcție de preparare, iar modelul de recunoaștere este antrenat să facă distincția între metodele de gătit atunci când indicii vizuale sunt prezente, cum ar fi diferența dintre o suprafață grătar și una prăjită.

Învățare și îmbunătățire continuă

Recunoașterea alimentelor nu este o problemă care se rezolvă o dată pentru totdeauna. Bucătăriile evoluează, preparate noi apar, iar așteptările utilizatorilor cresc. Sistemul Nutrola este conceput pentru îmbunătățire continuă prin mai multe mecanisme bazate pe cercetarea învățării automate.

Învățare activă

Învățarea activă, formalizată de Settles (2009), este o strategie prin care modelul identifică exemplele despre care are cea mai mică încredere și le prioritizează pentru revizuirea și etichetarea umană. Atunci când sistemul Nutrola întâlnește un preparat pe care nu îl poate clasifica cu un grad ridicat de încredere, acea imagine este marcată pentru revizuirea de către experți. Odată etichetată, intră în rețeaua de antrenament și modelul se îmbunătățește exact în cazurile în care a fost cel mai slab.

Această abordare este mult mai eficientă din punct de vedere al datelor decât colectarea aleatorie de mai multe imagini de antrenament. Cercetările au arătat constant că învățarea activă poate atinge o acuratețe echivalentă a modelului cu 30-60% mai puține date etichetate comparativ cu eșantionarea aleatorie.

Gestionarea alimentelor noi și a bucătăriilor regionale

Una dintre cele mai semnificative provocări în recunoașterea alimentelor este acoperirea preparatelor regionale și cultural specifice. Un model antrenat în principal pe bucătăria occidentală poate avea dificultăți cu deserturile din Asia de Sud-Est, tocănițele din Africa de Vest sau alimentele fermentate din Scandinavia. Nutrola abordează acest lucru prin campanii de colectare de date țintite, axate pe bucătării subreprezentate, combinate cu tehnici de învățare cu puține exemple (Wang et al., 2020) care permit modelului să învețe noi categorii alimentare dintr-un număr relativ mic de exemple.

Feedback-ul utilizatorilor este un input critic în acest proces. Atunci când un utilizator corectează un aliment identificat greșit, acea corectare se întoarce în rețeaua de antrenament. Agregate pe milioane de mese înregistrate la nivel global, aceste corecturi creează un flux continuu de date de adevăr de bază care acoperă exact alimentele pe care oamenii reali le consumă în viața lor de zi cu zi.

Cum se traduce asta pe farfuria ta

Cercetarea descrisă mai sus produce beneficii concrete pe care le experimentezi de fiecare dată când deschizi Nutrola.

Înregistrare în trei secunde. Întreaga rețea, de la preprocesarea imaginii până la căutarea nutrițională, se execută în mai puțin de trei secunde pe un smartphone modern. Tehnicile de optimizare a modelului, inclusiv cuantizarea (Jacob et al., 2018) și căutarea arhitecturii neuronale (Zoph și Le, 2017), permit modelului complex să ruleze eficient pe hardware mobil fără a sacrifica acuratețea.

Gestionarea meselor complexe. Detectarea multi-etapă și segmentarea semantică înseamnă că nu trebuie să fotografiezi fiecare aliment separat. O singură fotografie a unei farfurii pline produce analize nutriționale individuale pentru fiecare componentă.

Acuratețe între bucătării. Învățarea continuă și colectarea de date țintite asigură că sistemul funcționează fie că mănânci sushi în Tokyo, tacos în Mexico City, injera în Addis Ababa sau un prânz de duminică în Londra. Modelul se îmbunătățește cu fiecare masă înregistrată în baza de utilizatori globală a Nutrola.

Îmbunătățirea progresivă a acurateței. Cu cât folosești mai mult Nutrola, cu atât devine mai bun, atât pentru tine individual, cât și pentru toți utilizatorii în ansamblu. Învățarea activă asigură că modelul își concentrează îmbunătățirile pe cazurile exacte în care are cea mai mare nevoie.

Date nutriționale verificate. Spre deosebire de aplicațiile care se bazează pe baze de date crowdsourced cu rate de eroare necunoscute, fiecare număr de calorii returnat de Nutrola este susținut de date nutriționale verificate în laborator. AI-ul identifică alimentul; baza de date verificată se asigură că numerele sunt corecte.

Întrebări frecvente

Cum recunoaște AI-ul Nutrola alimentele dintr-o fotografie?

Nutrola folosește o rețea multi-etapă de viziune computerizată. Fotografia ta trece mai întâi prin preprocesarea imaginii, apoi printr-un model de detectare bazat pe învățarea profundă care identifică și segmentează fiecare aliment de pe farfurie. Fiecare element este clasificat folosind rețele neuronale convoluționale ajustate pe seturi de date specifice alimentelor, porția sa este estimată folosind raționamente de adâncime și volum, iar rezultatul este corelat cu baza de date nutrițională verificată a Nutrola pentru a produce valori pentru calorii și macronutrienți.

Cât de precisă este tehnologia de recunoaștere a alimentelor Nutrola?

Modelele de clasificare ale Nutrola ating rate de acuratețe de top-1 de peste 90% pe benchmark-uri standard de recunoaștere a alimentelor, cu o acuratețe de top-5 care depășește 95%. Pentru estimarea porțiilor, sistemul se încadrează de obicei în 15-20% din greutatea reală, ceea ce este comparabil sau mai bun decât acuratețea estimării dieteticienilor antrenați. Combinat cu baza de date verificată a Nutrola, acest lucru produce estimări calorice semnificativ mai fiabile decât înregistrările manuale, care, conform cercetărilor, subraportează consumul cu 10-45%.

Ce cercetări și seturi de date stau la baza AI-ului de recunoaștere a alimentelor Nutrola?

Tehnologia Nutrola se bazează pe cercetări fundamentale în viziunea computerizată, inclusiv rețele neuronale convoluționale validate pe ImageNet, arhitecturi de detectare a obiectelor precum Faster R-CNN și DETR, și seturi de date specifice alimentelor, inclusiv Food-101 și UECFOOD-256. Sistemul se bazează, de asemenea, pe cercetările de estimare a adâncimii monoculare pentru dimensionarea porțiilor și pe cercetările de învățare activă pentru îmbunătățirea continuă a modelului. Toate datele nutriționale sunt verificate împotriva surselor autoritare, cum ar fi USDA FoodData Central.

Poate Nutrola să recunoască mai multe alimente pe o singură farfurie?

Da. Nutrola folosește detectarea multi-etapă și segmentarea semantică pentru a identifica și analiza separat fiecare aliment distinct dintr-o singură fotografie. Indiferent dacă farfuria ta conține două elemente sau opt, sistemul izolează fiecare element, îl clasifică independent, estimează porția sa și returnează o analiză nutrițională pe element, împreună cu totalul mesei.

Cum gestionează Nutrola alimentele din diferite bucătării și culturi?

Nutrola combină datele de antrenament cu acoperire largă cu campanii de colectare de date țintite pentru bucătării subreprezentate și tehnici de învățare cu puține exemple care permit modelului să învețe noi categorii alimentare dintr-un număr relativ mic de exemple. Corecturile utilizatorilor din baza de utilizatori globală a Nutrola se întorc continuu în rețeaua de antrenament, asigurând că acuratețea se îmbunătățește pentru preparatele specifice pe care oamenii le consumă în fiecare regiune și cultură alimentară.

Se îmbunătățește recunoașterea alimentelor Nutrola în timp?

Da. Nutrola folosește învățarea activă, o strategie de învățare automată prin care sistemul identifică imaginile despre care are cea mai mică încredere și le prioritizează pentru revizuire de către experți și reantrenare. Combinată cu feedback-ul agregat de la milioane de mese înregistrate la nivel global, aceasta înseamnă că modelul se îmbunătățește continuu. Fiecare masă pe care o înregistrezi contribuie la creșterea acurateței recunoașterii Nutrola pentru toți utilizatorii.

Ești gata să îți transformi urmărirea nutriției?

Alătură-te celor mii care și-au transformat călătoria de sănătate cu Nutrola!