Jak AI szacuje wielkość porcji na podstawie zdjęć: Techniczny przegląd
Szczegółowe spojrzenie na to, jak AI wykorzystuje estymację głębokości, obiekty odniesienia i modelowanie objętości do oszacowania wielkości porcji jedzenia na podstawie pojedynczego zdjęcia.
Rozpoznanie, co znajduje się na talerzu, to tylko połowa wyzwania w przypadku śledzenia kalorii z wykorzystaniem AI. Drugą, a być może trudniejszą, jest ustalenie, ile jedzenia jest na talerzu. Porcja makaronu może mieć 200 kalorii lub 800 kalorii, w zależności od wielkości porcji. Dokładne oszacowanie tej wartości to kluczowy element, który odróżnia użyteczne narzędzie do śledzenia żywności od nowinki.
W tym artykule przyjrzymy się szczegółowo, jak systemy AI szacują wielkości porcji na podstawie zdjęć, omawiając estymację głębokości, skalowanie obiektów odniesienia, modelowanie objętości oraz bieżące wyzwania, przed którymi stoją badacze i inżynierowie, aby poprawić dokładność tych oszacowań.
Dlaczego szacowanie porcji jest trudniejsze niż rozpoznawanie jedzenia
Rozpoznawanie jedzenia to zasadniczo problem klasyfikacji. System musi wybrać z ograniczonego zbioru kategorii żywności. Z kolei szacowanie porcji to problem regresji. System musi przewidzieć wartość ciągłą (gramy lub mililitry) wyłącznie na podstawie informacji wizualnych.
Kilka czynników sprawia, że jest to szczególnie trudne:
- Problem 2D do 3D: Zdjęcie spłaszcza trójwymiarową rzeczywistość do dwuwymiarowego obrazu. Informacje o głębokości są tracone, co utrudnia odróżnienie cienkiej warstwy jedzenia od grubej kupki.
- Zmienna gęstość: Szklanka liściastych warzyw i szklanka granoli mają tę samą objętość, ale zupełnie różne wagi i kaloryczność. System musi oszacować zarówno objętość, jak i gęstość.
- Zniekształcenie perspektywy: Kąt, pod jakim robione jest zdjęcie, wpływa na to, jak duże wydają się przedmioty. Talerz sfotografowany z góry wygląda inaczej niż ten sam talerz sfotografowany pod kątem 45 stopni.
- Niejasne skalowanie: Bez znanego obiektu odniesienia w kadrze nie ma sposobu na określenie absolutnego rozmiaru. Zbliżenie na małe ciastko może wyglądać identycznie jak zdjęcie dużej pizzy z większej odległości.
Estymacja głębokości z jednego obrazu
Jednym z kluczowych przełomów umożliwiających szacowanie porcji na podstawie zdjęć jest estymacja głębokości monokularnej, czyli zdolność do wnioskowania informacji o głębokości z jednego obrazu, bez potrzeby stosowania kamer stereo lub specjalistycznego sprzętu.
Jak działa estymacja głębokości monokularnej
Ludzki system wzrokowy wnioskował głębokość na podstawie licznych wskazówek: nakładanie się obiektów (bliższe obiekty zasłaniają dalsze), względny rozmiar (mniejsze obiekty są zazwyczaj dalej), gradienty tekstury (tekstury stają się drobniejsze na większych odległościach) oraz perspektywa atmosferyczna (dalsze obiekty wydają się bardziej zamglone).
Modele głębokiego uczenia mogą uczyć się tych samych wskazówek z dużych zbiorów danych obrazów sparowanych z mapami głębokości. Gdy są stosowane do fotografii żywności, te modele mogą oszacować, które części jedzenia są bliżej kamery, a które dalej, skutecznie rekonstruując trójwymiarowy kształt jedzenia z płaskiego obrazu.
Mapy głębokości i objętość jedzenia
Mapa głębokości przypisuje wartość odległości do każdego piksela w obrazie. W przypadku estymacji jedzenia oznacza to, że system może określić, że środek miski z zupą znajduje się na jednej głębokości, podczas gdy brzeg miski jest na innej głębokości. Różnica między tymi głębokościami, w połączeniu z wykrytymi granicami jedzenia, pozwala systemowi oszacować objętość.
Nowoczesne aparaty smartfonów z czujnikami LiDAR (dostępnymi w najnowszych modelach iPhone Pro i iPad Pro) mogą rejestrować rzeczywiste dane o głębokości obok obrazu kolorowego, co zapewnia znacznie dokładniejsze informacje o głębokości niż samodzielne oszacowanie algorytmiczne. Aplikacje do śledzenia jedzenia mogą korzystać z tego sprzętu, gdy jest dostępny, a w przypadku urządzeń bez czujników głębokości przejść do estymacji monokularnej.
Skalowanie obiektów odniesienia
Bez znanego punktu odniesienia absolutny rozmiar obiektów na zdjęciu jest niejasny. Skalowanie obiektów odniesienia rozwiązuje ten problem, wykorzystując obiekty o znanych wymiarach do ustalenia skali rozmiaru dla całego obrazu.
Typowe obiekty odniesienia
| Obiekt odniesienia | Znany wymiar | Korzyść z dokładności |
|---|---|---|
| Standardowy talerz obiadowy | 25-27 cm średnicy | Ustala ogólną skalę dla posiłku |
| Widelec lub łyżka | ~19 cm długości | Zapewnia skalę nawet w zbliżeniach |
| Karta kredytowa | 8.56 x 5.4 cm | Precyzyjna i uniwersalnie ustandaryzowana |
| Smartfon | Zróżnicowane w zależności od modelu, ale znane | Może być wykrywane i mierzone algorytmicznie |
| Dłoń | Zróżnicowane, ale można oszacować na podstawie demografii | Przybliżona skala, gdy brak innych odniesień |
Automatyczne wykrywanie odniesień
Zamiast wymagać od użytkowników umieszczania karty odniesienia obok jedzenia (co wprowadza dodatkowe trudności i zniechęca do użycia), nowoczesne systemy starają się automatycznie wykrywać powszechne obiekty odniesienia. Talerze, miski, sztućce i stoły często pojawiają się w zdjęciach jedzenia i mogą służyć jako odniesienia rozmiaru, jeśli system jest w stanie je zidentyfikować.
System estymacji porcji Nutrola automatycznie poszukuje talerzy, misek i sztućców w kadrze, aby ustalić skalę. Gdy te obiekty są wykrywane, system wykorzystuje ich typowe wymiary do kalibracji rozmiaru jedzenia. Gdy nie znajdzie obiektu odniesienia, system polega na wyuczonych priorytetach dotyczących typowych porcji jedzenia i może poprosić użytkownika o potwierdzenie.
Kalibracja oparta na talerzu
Jednym z szczególnie skutecznych podejść jest kalibracja oparta na talerzu. Standardowe talerze obiadowe w większości krajów mieszczą się w wąskim zakresie rozmiarów (25 do 27 cm średnicy). Wykrywając eliptyczny kształt talerza na zdjęciu i zakładając standardowy rozmiar, system może ustalić wiarygodną skalę dla wszystkiego, co znajduje się na talerzu.
To podejście działa dobrze, ponieważ talerze są prawie zawsze obecne na zdjęciach posiłków, ich eliptyczny kształt jest łatwy do wykrycia niezależnie od kąta kamery, a zniekształcenie perspektywy elipsy rzeczywiście koduje informacje o kącie kamery, co pomaga skorygować efekty perspektywy na jedzeniu.
Techniki estymacji objętości
Gdy system zidentyfikuje jedzenie, oszacuje głębokość i ustali skalę, musi połączyć te informacje, aby oszacować objętość każdego elementu jedzenia.
Prymitywy geometryczne
Jednym z podejść jest przybliżenie elementów jedzenia jako kombinacji prostych kształtów geometrycznych:
- Cylindry dla wysokich pokarmów, takich jak napoje, stosy naleśników czy warstwy ciasta
- Półkule dla okrągłych pokarmów, takich jak gałki ryżu, kopce puree ziemniaczanego czy porcje lodów
- Prostopadłościany dla pokrojonego chleba, bloków sera czy batoników
- Stożki ścięte dla misek z zupą lub płatkami (kształt miski pomaga określić objętość)
- Nieregularne wielościany dla pokarmów o skomplikowanych kształtach, takich jak udka kurczaka czy całe owoce
System dopasowuje jeden lub więcej z tych prymitywów do wykrytego obszaru jedzenia i oblicza objętość na podstawie dopasowanych kształtów oraz ustalonej skali.
Rekonstrukcja oparta na wokselach
Bardziej zaawansowane podejście polega na rekonstrukcji opartej na wokselach, gdzie element jedzenia modelowany jest jako trójwymiarowa siatka małych sześcianów (wokseli). Każdy woksel klasyfikowany jest jako zawierający jedzenie lub pusty na podstawie mapy głębokości i maski segmentacji. Całkowita objętość to suma wszystkich wokseli zawierających jedzenie.
Metoda ta lepiej radzi sobie z nieregularnymi kształtami niż prymitywy geometryczne, ale wymaga większych zasobów obliczeniowych. Jest szczególnie przydatna dla pokarmów, które nie pasują do prostych kształtów, takich jak podrzeźbiony kawałek chleba czy nieregularnie pokrojony owoc.
Estymacja objętości z wykorzystaniem sieci neuronowych
Najnowocześniejsze podejście pomija całkowicie eksplicytne modelowanie geometryczne. Zamiast tego, sieć neuronowa jest trenowana end-to-end, aby przewidywać objętość jedzenia bezpośrednio z obrazu. Modele te uczą się niejawnych reprezentacji geometrii jedzenia z dużych zbiorów danych obrazów jedzenia sparowanych z rzeczywistymi pomiarami wagi.
To podejście przynosi obiecujące rezultaty, ponieważ potrafi uchwycić subtelne wskazówki wizualne, które korelują z objętością, takie jak sposób, w jaki światło odbija się od powierzchni płynów lub wzór cienia rzucanego przez kopiec jedzenia. Unika również akumulacji błędów, które mogą wystąpić, gdy estymacja głębokości, segmentacja i dopasowanie geometryczne są wykonywane jako oddzielne kroki.
Od objętości do wagi do kalorii
Oszacowanie objętości to nie ostatni krok. Aby obliczyć kalorie, system musi przeliczyć objętość na wagę (używając gęstości jedzenia) i wagę na kalorie (używając danych o składzie odżywczym).
Bazy danych gęstości jedzenia
Różne pokarmy mają bardzo różne gęstości. Szklanka oleju waży około 220 gramów, podczas gdy szklanka mąki waży około 120 gramów, a szklanka popcornu waży około 8 gramów. Dokładne dane o gęstości są niezbędne do przeliczenia oszacowań objętości na oszacowania wagi.
Systemy produkcyjne utrzymują bazy danych mapujące elementy jedzenia na ich gęstości, uwzględniając różnice w metodzie przygotowania (gotowane vs. surowe, pokrojone vs. całe) oraz typowe style podawania.
| Element jedzenia | Gęstość (g/mL) | Waga 1 szklanki (g) | Kalorie na szklankę |
|---|---|---|---|
| Woda | 1.00 | 237 | 0 |
| Mleko pełnotłuste | 1.03 | 244 | 149 |
| Ugotowany ryż biały | 0.74 | 175 | 205 |
| Surowy szpinak | 0.13 | 30 | 7 |
| Masło orzechowe | 1.09 | 258 | 1517 |
| Oliwa z oliwek | 0.92 | 218 | 1909 |
Skład odżywczy
Gdy system ma oszacowanie wagi w gramach, sprawdza skład odżywczy na gram z kompleksowej bazy danych żywności. Bazy te są zazwyczaj oparte na autorytatywnych źródłach, takich jak USDA FoodData Central, uzupełnione danymi od producentów żywności i regionalnych baz danych żywieniowych.
Baza danych Nutrola obejmuje ponad 1,3 miliona produktów spożywczych, w tym produkty markowe, pozycje z menu restauracji oraz ogólne produkty spożywcze z pełnymi profilami makro- i mikroelementów. Tak szerokie pokrycie zapewnia, że po zidentyfikowaniu elementu jedzenia i porcji, obliczenia żywieniowe są precyzyjne.
Wyzwania w dokładności i jak są one rozwiązywane
Pomimo zaawansowania tych technik, estymacja porcji na podstawie zdjęć pozostaje niedoskonałą nauką. Zrozumienie źródeł błędów pomaga ustawić realistyczne oczekiwania i podkreśla ciągłe ulepszenia w tej dziedzinie.
Znane źródła błędów
Wariacje kąta kamery: Ta sama porcja wygląda inaczej w zależności od tego, czy zdjęcie jest robione z góry, pod kątem 45 stopni, czy z poziomu stołu. Zdjęcia robione z góry zazwyczaj dają najdokładniejsze oszacowania, ponieważ minimalizują zniekształcenia perspektywy, ale wielu użytkowników naturalnie trzyma telefon pod kątem.
Ukryte jedzenie: Jedzenie schowane pod sosami, serem czy innymi dodatkami nie może być bezpośrednio mierzone wizualnie. System musi wnioskować o ukrytej porcji na podstawie widocznego rodzaju dania i typowego przygotowania.
Nieregularne pojemniki: Niestandardowe miski, kubki i pojemniki sprawiają, że skalowanie oparte na talerzu jest mniej wiarygodne. Mała porcja w dużej misce wygląda inaczej niż duża porcja w małej misce, nawet jeśli obszar jedzenia wydaje się podobny.
Różnice w przygotowaniu indywidualnym: Dwie osoby przygotowujące "miskę owsianki" mogą używać znacznie różnych ilości owsa i wody, co skutkuje tym samym widocznym objętością, ale różną kalorycznością.
Strategie poprawy dokładności
Rejestracja z wielu kątów: Niektóre systemy proszą użytkowników o robienie zdjęć z różnych kątów, co umożliwia rekonstrukcję stereo i dokładniejsze oszacowanie objętości. To znacznie poprawia dokładność, ale wprowadza dodatkowe trudności w procesie rejestrowania.
Pętle sprzężenia zwrotnego od użytkowników: Gdy użytkownicy ważą swoje jedzenie i potwierdzają lub korygują oszacowaną porcję, tworzy to dane treningowe, które poprawiają model z czasem. Nutrola zachęca użytkowników do okazjonalnego weryfikowania porcji za pomocą wagi kuchennej, aby skalibrować zarówno AI, jak i własną świadomość porcji.
Priorytety kontekstowe: System może wykorzystać informacje kontekstowe do udoskonalenia oszacowań. Jeśli użytkownik znajduje się w konkretnej sieci restauracji, system może wykorzystać znane rozmiary porcji. Jeśli użytkownik regularnie rejestruje konkretne śniadanie, system może nauczyć się ich typowej porcji.
Oszacowania z uwzględnieniem pewności: Zamiast przedstawiać pojedynczą liczbę, zaawansowane systemy oferują zakres pewności. Jeśli system nie jest pewny co do porcji, może przedstawić oszacowanie jako zakres (na przykład 300 do 450 kalorii) i poprosić użytkownika o dodatkowe informacje.
Aktualne wskaźniki dokładności
Badania przeprowadzone na Międzynarodowej Konferencji Analizy Obrazów i Przetwarzania wykazały, że najnowocześniejsze systemy estymacji objętości jedzenia osiągają średnie błędy procentowe między 15 a 25 procent. Dla kontekstu, badania wykazały, że wykwalifikowani dietetycy oszacowujący porcje na podstawie zdjęć osiągają błędy na poziomie około 10 do 15 procent, podczas gdy osoby niewykwalifikowane średnio mają błędy na poziomie 30 do 50 procent.
Oznacza to, że estymacja porcji przez AI jest już znacznie lepsza niż to, co większość ludzi może zrobić samodzielnie, i zbliża się do dokładności wykwalifikowanych profesjonalistów. W połączeniu z przewagą szybkości i wygody, oznacza to, że śledzenie wspomagane przez AI stanowi znaczne ulepszenie w porównaniu do ręcznego rejestrowania dla większości użytkowników.
Rola kalibracji użytkownika
Jednym z niedocenianych aspektów estymacji porcji przez AI jest rola kalibracji użytkownika w czasie. Gdy użytkownik rejestruje posiłki i okazjonalnie dostarcza korekty, system buduje profil ich typowych rozmiarów porcji i preferencji żywieniowych.
Dla regularnych użytkowników oznacza to, że system staje się coraz dokładniejszy. Jeśli zazwyczaj nakładasz sobie większe porcje ryżu niż średnia, system uczy się dostosowywać w górę oszacowania dla ryżu. Jeśli zazwyczaj używasz mniej oleju niż standardowy przepis, system może to uwzględnić.
Nutrola wykorzystuje tę personalizację, aby zapewnić coraz bardziej dopasowane oszacowania porcji im dłużej korzystasz z aplikacji. Nowi użytkownicy korzystają z uśrednionych danych populacyjnych, podczas gdy doświadczeni użytkownicy otrzymują spersonalizowane oszacowania dostosowane do ich specyficznych nawyków.
Praktyczne wskazówki dla dokładniejszych oszacowań porcji
Choć AI zajmuje się większością trudnych zadań, użytkownicy mogą poprawić dokładność, stosując kilka prostych wskazówek:
- Fotografuj z góry, gdy to możliwe. Zdjęcia robione z góry dostarczają najwięcej informacji o powierzchni jedzenia i minimalizują zniekształcenia perspektywy.
- Uwzględnij cały talerz w kadrze. Krawędź talerza służy jako kluczowy obiekt odniesienia do skalowania.
- Unikaj ekstremalnych zbliżeń. System potrzebuje kontekstu, aby ocenić rozmiar. Zdjęcie, które pokazuje tylko jedzenie bez otaczających obiektów, nie oferuje odniesienia do skali.
- Fotografuj przed wymieszaniem. Sałatka z widocznymi oddzielnymi składnikami jest łatwiejsza do analizy niż ta, która została wymieszana.
- Używaj dobrego oświetlenia. Cienie i słabe światło mogą zasłonić granice jedzenia i wskazówki dotyczące głębokości.
- Potwierdzaj lub koryguj od czasu do czasu. Używanie wagi kuchennej raz w tygodniu do weryfikacji oszacowania AI pomaga skalibrować zarówno system, jak i twoją intuicję.
FAQ
Jak dokładna jest estymacja porcji AI w porównaniu do używania wagi kuchennej?
Waga kuchenne zapewnia dokładność w granicach 1 do 2 gramów, co jest znacznie precyzyjniejsze niż jakakolwiek metoda estymacji wizualnej. Estymacja porcji przez AI na podstawie zdjęć zazwyczaj osiąga dokładność w granicach 15 do 25 procent rzeczywistej wagi. Jednak przewaga wygody estymacji AI (która trwa 2 sekundy w porównaniu do 30 sekund lub więcej z wagą) oznacza, że więcej osób śledzi regularnie, co często ma większe znaczenie dla długoterminowych wyników niż perfekcyjna precyzja.
Czy kąt kamery wpływa na dokładność estymacji porcji?
Tak, w znacznym stopniu. Zdjęcia robione z góry (patrząc prosto na talerz) zapewniają najlepszą dokładność, ponieważ pokazują pełną powierzchnię jedzenia z minimalnymi zniekształceniami perspektywy. Zdjęcia robione pod kątem 45 stopni są najczęstsze i nadal dają dobre oszacowania. Bardzo niskie kąty (blisko poziomu stołu) są najmniej dokładne, ponieważ większość jedzenia jest zasłonięta przez przednią krawędź talerza.
Czy AI może oszacować porcje dla płynów, takich jak zupy i koktajle?
Płyny stanowią unikalne wyzwanie, ponieważ ich objętość jest określana przez pojemnik, a nie przez ich własny kształt. Systemy AI szacują porcje płynów, identyfikując typ pojemnika i poziom napełnienia. Miska z zupą napełniona po brzegi ma inną objętość niż ta napełniona do połowy. Dokładność jest zazwyczaj dobra, gdy pojemnik ma standardowy kształt, ale mniej wiarygodna w przypadku nietypowych pojemników.
Dlaczego AI czasami przeszacowuje lub niedoszacowuje moją porcję?
Typowe powody przeszacowania obejmują gęste ułożenie, które wygląda większe, niż jest w rzeczywistości, dodatki, które dodają wizualnej objętości bez znaczących kalorii, oraz użycie dużych talerzy, które sprawiają, że system zakłada, że jedzenia jest więcej. Typowe powody niedoszacowania to jedzenie ukryte pod innym jedzeniem, gęste pokarmy bogate w kalorie, które wyglądają mało, oraz nietypowe style podawania. Dostarczanie informacji zwrotnej, gdy oszacowania są błędne, pomaga systemowi się poprawić.
Czy potrzebuję telefonu z czujnikiem LiDAR do dokładnego śledzenia porcji?
Nie. Choć telefony wyposażone w LiDAR mogą zapewnić dokładniejsze informacje o głębokości, nowoczesne modele AI potrafią całkiem dobrze oszacować głębokość na podstawie standardowego obrazu kamery. Różnica w dokładności między telefonami z LiDAR a standardowymi zbliża się, ponieważ poprawiła się estymacja głębokości oparta na oprogramowaniu. Nutrola działa dokładnie na każdym nowoczesnym smartfonie.
Jak system radzi sobie z jedzeniem, które jest ułożone w stosy lub warstwy?
W przypadku widocznie ułożonych pokarmów, takich jak naleśniki czy kanapki warstwowe, system może zliczać warstwy i oszacować grubość na podstawie profilu bocznego. W przypadku pokarmów z ukrytymi warstwami, takich jak lasagne czy burrito, system polega na wyuczonych modelach kompozycji, które szacują typową wewnętrzną strukturę na podstawie widocznego zewnętrznego kształtu i rodzaju naczynia.
Gotowy, aby przeksztalcic sledzenie zywienia?
Dolacz do tysiecy osob, ktore przeksztalcily swoja podroz zdrowotna z Nutrola!