Membrii echipei: Yiming Miao, Xiaoyu An, Tingyi Zhang

github

Lucruri pe care le-am stabilit

Algoritmul de recunoaștere a alimentelor

  • Modelul de învățare profundă pe care l-am folosit este Mask R-CNN.
  • Munca noastră se bazează pe o repo GitHub a Matterport, vă rugăm să faceți clic pe acest link pentru a vedea munca lor excelentă: https://github.com/matterport/Mask_RCNN.

Setul nostru propriu de date

Am construit un set de date relativ mic, etichetat manual de VIA (VGG Image Anotator) și conținând 10 tipuri de alimente.

Utilizați învățarea automată pentru a recunoaște imaginile alimentare și pentru a estima greutățile și pentru a prezice caloriile sale. Calorie Predictior nu are nevoie ca utilizatorii să știe greutatea alimentelor sau să introducă numele alimentelor, tot ce are nevoie este o imagine.

Toți cei care încearcă să calculeze cât mănâncă

  • Eu, studentul care încearcă să mențină dieta pentru a pierde greutăți, dar nu știu numele alimentelor și greutățile alimentelor pe care le consum în cantină, așa că am nevoie de un instrument care să mă ajute să-mi analizez alimentele.
  • Eu, culturistul profesionist, care încerc să țin o dietă foarte strictă înainte de spectacolul meu și vreau să știu exact caloriile pe care le consum zilnic.
  • Eu, pacientul, care am o problemă de sănătate necesară pentru a evita consumul de alimente bogate în calorii, trebuie să știu energia alimentelor înainte de a le lua.
  • O interfață cu utilizatorul care permite utilizatorilor să introducă imagini despre alimente și să introducă greutatea alimentelor
  • Capacitatea de a recunoaște alimentele
  • Calculați caloriile pe baza tabelului de calorii

Proiectare sistem (idee originală)

Algorthm de învățare profundă

Pagina noastră web este concepută pe baza Tornado (framework web python), HTML (Framework Materialize) și JavaScript.

Analiza produselor similare

Am găsit mai multe aplicații în Apple Store care sunt legate de prezicerea caloriilor.

  • În această aplicație, utilizatorii își puteau introduce greutatea și înălțimea. Apoi, utilizatorii ar putea stabili un obiectiv cu privire la cantitatea de greutate pe care o vor pierde. Cu toate acestea, utilizatorii nu își pot încărca imaginile alimentare pentru a obține automat valoarea estimată de calorii alimentelor.

  • Această aplicație permite utilizatorilor să își încarce doar imaginile alimentare, să aleagă tipurile de alimente și să adauge grame de alimente. Prin urmare, scopul principal al acestei aplicații este doar înregistrarea manuală a consumului zilnic de calorii al utilizatorilor.

Pro: - Poate clasifica automat tipul de mâncare.

  • Este necesar să introduceți manual greutatea alimentelor.

  • Avantajul acestei aplicații este că poate oferi utilizatorilor o compoziție nutrițională mai specifică a alimentelor, cum ar fi conținutul de proteină, conținutul de carbohidrați, conținutul de grăsimi și așa mai departe. Mai mult, poate oferi utilizatorilor sugestii despre cantitatea de aport de calorii, având în vedere datele lor fizice și obiectivul de slăbire.

  • Această aplicație nu poate identifica imagini cu mâncare. Utilizatorii trebuie să introducă numele și greutatea alimentelor. Avantajul acestei aplicații este că poate oferi utilizatorilor o compoziție nutrițională mai specifică a alimentelor, cum ar fi conținutul de proteină, conținutul de carbohidrați, conținutul de grăsimi și așa mai departe. Mai mult, poate oferi utilizatorilor sugestii despre cantitatea de aport de calorii, având în vedere datele lor fizice și obiectivul de slăbire.

Justificări tehnologice de clasificare

Păduri aleatorii

Metoda de generare aleatorie a pădurilor este descrisă în patru etape

  1. N eșantioane sunt generate din eșantionul setat prin eșantionare.
  2. Dacă stabilim numărul de caracteristici ale eșantionului este A, iar caracteristicile K din A sunt selectate din N eșantioane, iar punctul de segmentare optim se obține prin stabilirea unui arbore de decizie.
  3. Repetați M ori pentru a genera M arbori de decizie.
  4. Mecanismele de vot majoritare fac predicții.

  • Pădurile aleatorii pot prelucra date cu dimensiuni foarte ridicate (adică date pentru multe caracteristici) fără a fi necesară selectarea caracteristicilor.
  • După antrenament, ce caracteristici sunt mai importante pot fi date de pădurea aleatorie.
  • Viteza de antrenament este rapidă și este ușor să faci o metodă de paralelizare (când antrenamentul, arborele și arborele sunt independenți unul de celălalt).
  • În timpul procesului de instruire, efectele dintre caracteristici pot fi detectate.
  • Dacă o mare parte a caracteristicilor se pierd, acuratețea poate fi păstrată în continuare cu algoritmul RF.
  • Algoritmul forestier aleatoriu are o puternică abilitate anti-interferență. Deci, atunci când lipsește o cantitate mare de date, este bine să utilizați RF.

  • Pot exista mulți arbori de decizie similari care maschează rezultatele reale.
  • Pentru date mici sau date cu dimensiuni reduse (date cu mai puține caracteristici), este posibil să nu producă o clasificare bună.

Suport pentru mașini vectoriale (versiunea SMO)

  • Efectuați acuratețe în spații cu dimensiuni ridicate;
  • Lucrați eficient cu date mici
  • SMO utilizează un subset de puncte de antrenament în funcția de decizie (numiți vectori de suport), deci este, de asemenea, eficient din punct de vedere al memoriei.

  • Algoritmul este predispus la supra-montare, dacă numărul de caracteristici este mult mai mare decât numărul de eșantioane.
  • SVM-urile nu furnizează în mod direct estimări de probabilitate, care sunt de dorit în majoritatea problemelor de clasificare.
  • SVM-urile nu sunt foarte eficiente din punct de vedere al calculului, dacă setul de date este foarte mare, cum ar fi atunci când aveți mai mult de o mie de rânduri.

Naive Bayes

  • Atunci când se ocupă de seturi de date mari sau hardware cu buget redus, algoritmul Naive Bayes este o alegere fezabilă pentru un timp scurt de antrenament.
  • Timpul de predicție al acestui algoritm este foarte eficient.
  • Transparenţă. Este ușor de înțeles ce caracteristici influențează predicțiile.

  • Are ipoteze puternice de independență.
  • Probabilitatea anterioară trebuie cunoscută și probabilitatea anterioară depinde adesea de ipoteză. Există multe modele care pot fi presupuse, astfel încât, în unele cazuri, efectul de predicție va fi slab datorită modelului anterior ipotetic.
  • Deoarece determinăm clasificarea prin a priori și date pentru a determina probabilitatea posterioară, există o anumită rată de eroare în decizia de clasificare.
  • Foarte sensibil la forma datelor de intrare.

În sistemul nostru, după segmentare și clasificare, cel mai important lucru este descrierea sau estimarea greutății diferitelor alimente. MVP-ul acestei părți îi permite utilizatorului să introducă greutatea alimentelor, apoi putem calcula caloriile unei mese. Dacă vrem ca sistemul nostru să fie mai inteligent, ar trebui să lăsăm sistemul nostru să învețe să estimeze greutatea alimentelor din imagine.

Există două moduri de a estima greutatea alimentelor pe baza diferitelor tipuri de alimente. Presupunem că alimentele pot fi clasificate în două categorii. Un tip de mâncare este tipul în care putem folosi unele combinații de geometrie matematică solidă pentru a reprezenta forma alimentelor pentru a obține volumele lor. Deoarece am clasificat alimentele, putem cunoaște informațiile despre densitate pentru a calcula greutatea alimentelor. Acest tip de tehnologie se numește șablon de formă estimând reconstrucția 3D.

Celălalt tip de mâncare este genul care nu poate folosi geometria solidă matematică regulată pentru a reprezenta. S-ar putea să ocupe doar o anumită zonă, cum ar fi ouă amestecate. Deoarece imaginile alimentare sunt de obicei distorsionate geometric, trebuie să convertim imaginile alimentare într-un fel de imagini din față pentru a estima suprafața alimentelor. După ce alimentele din imagine sunt identificate și zona este estimată, estimăm greutatea alimentelor folosind relația suprafață-greutate în datele de antrenament ale produsului alimentar corespunzător.