Jak wizja komputerowa rozpoznaje jedzenie: Technologia stojąca za śledzeniem kalorii przez AI
Odkryj, jak konwolucyjne sieci neuronowe i klasyfikacja obrazów napędzają rozpoznawanie jedzenia przez AI, umożliwiając aplikacjom takim jak Nutrola zamianę prostego zdjęcia w dokładne dane kaloryczne.
Za każdym razem, gdy kierujesz aparat telefonu na talerz jedzenia i natychmiast otrzymujesz rozkład kaloryczny, za kulisami uruchamia się złożony łańcuch procesów sztucznej inteligencji. To, co wydaje się prostym dotknięciem, angażuje konwolucyjne sieci neuronowe, wieloetykietową klasyfikację obrazów i lata badań w dziedzinie wizji komputerowej. Zrozumienie działania tej technologii pomaga wyjaśnić, dlaczego śledzenie kalorii wspierane przez AI stało się tak dokładne i dlaczego wciąż się poprawia.
Ten artykuł omawia kluczową technologię stojącą za rozpoznawaniem jedzenia przez AI — od podstawowych elementów budulcowych sieci neuronowych po konkretne wyzwania inżynieryjne związane z identyfikacją tego, co znajduje się na Twoim talerzu.
Czym jest wizja komputerowa i dlaczego ma znaczenie dla żywienia?
Wizja komputerowa to gałąź sztucznej inteligencji, która uczy maszyny interpretowania i rozumienia informacji wizualnych ze świata rzeczywistego. Podczas gdy ludzie bez trudu odróżniają miskę owsianki od talerza makaronu, nauczenie komputera tego samego wymaga przetworzenia milionów oznaczonych obrazów i zbudowania matematycznych modeli wzorców wizualnych.
W kontekście śledzenia żywienia wizja komputerowa rozwiązuje największy problem samomonitorowania diety: kwestię ręcznego wprowadzania danych. Badania opublikowane w Journal of the Academy of Nutrition and Dietetics wykazały, że ręczne rejestrowanie posiłków prowadzi do zaniżania spożycia kalorii o 10 do 45 procent. Zastąpienie wpisywanych opisów zdjęciem pozwala wizji komputerowej usunąć tarcie, które sprawia, że większość ludzi porzuca śledzenie jedzenia w ciągu pierwszych dwóch tygodni.
Skala problemu
Rozpoznawanie jedzenia jest uważane za jedno z trudniejszych wyzwań klasyfikacji obrazów ze względu na ogromną różnorodność:
- Istnieją tysiące odrębnych potraw w kuchniach z całego świata
- To samo jedzenie może wyglądać diametralnie inaczej w zależności od sposobu przygotowania
- Oświetlenie, kąt i sposób podania wpływają na wygląd
- Na jednym talerzu często znajduje się wiele potraw, wymagających jednoczesnej identyfikacji
- Rozmiary porcji zmieniają się w sposób ciągły, zamiast wpadać w schludne kategorie
Pomimo tych wyzwań nowoczesne systemy rozpoznawania jedzenia osiągają dokładność top-5 powyżej 90 procent na standardowych benchmarkach, co oznacza, że prawidłowa potrawa pojawia się wśród pięciu najlepszych propozycji systemu częściej niż dziewięć razy na dziesięć.
Konwolucyjne sieci neuronowe: Fundament rozpoznawania jedzenia
Sercem niemal każdego systemu rozpoznawania jedzenia jest rodzaj architektury głębokiego uczenia zwany konwolucyjną siecią neuronową, czyli CNN. Zrozumienie CNN jest kluczem do zrozumienia, jak Twój telefon może spojrzeć na zdjęcie i powiedzieć Ci, że jesz kurczaka tikka masala z ryżem basmati.
Jak CNN przetwarza obraz
CNN przetwarza obraz poprzez szereg warstw, z których każda jest zaprojektowana do wykrywania coraz bardziej złożonych cech wizualnych:
Warstwa 1 — Wykrywanie krawędzi: Pierwsza warstwa konwolucyjna uczy się wykrywać proste krawędzie i gradienty kolorów. Może rozpoznać zakrzywioną krawędź miski lub granicę między kawałkiem mięsa a sosem.
Warstwa 2 — Rozpoznawanie tekstur: Głębsze warstwy łączą krawędzie w tekstury. Sieć zaczyna rozróżniać ziarnistą teksturę brązowego ryżu od gładkiej powierzchni białego ryżu lub włóknistą teksturę grillowanego kurczaka od błyszczącego połysku smażonego kurczaka.
Warstwa 3 — Rozpoznawanie kształtów i wzorów: Wyższe warstwy składają tekstury w rozpoznawalne kształty i wzory. Okrągły kształt o określonej teksturze może zostać sklasyfikowany jako tortilla, podczas gdy podłużny kształt o innej teksturze staje się paluszkiem chlebowym.
Warstwa 4 — Rozpoznawanie obiektów: Ostatnie warstwy konwolucyjne łączą wszystkie poprzednie informacje, aby rozpoznać kompletne produkty spożywcze. Sieć nauczyła się, że określona kombinacja koloru, tekstury, kształtu i kontekstu odpowiada konkretnemu jedzeniu.
Rola poolingu i map cech
Między warstwami konwolucyjnymi warstwy poolingu zmniejszają wymiary przestrzenne danych, zachowując jednocześnie najważniejsze cechy. Służy to dwóm celom: sprawia, że obliczenia stają się wykonalne i zapewnia pewien stopień niezmienności translacyjnej, co oznacza, że sieć może rozpoznać jedzenie niezależnie od tego, w którym miejscu kadru się pojawia.
Wynik każdej warstwy konwolucyjnej nazywany jest mapą cech. Wczesne mapy cech rejestrują informacje niskopoziomowe, takie jak krawędzie i kolory, podczas gdy późniejsze mapy cech kodują koncepcje wysokopoziomowe, jak „ten region zawiera spaghetti". Typowy model rozpoznawania jedzenia generuje setki takich map cech na każdej warstwie.
Popularne architektury CNN stosowane w rozpoznawaniu jedzenia
| Architektura | Rok | Kluczowa innowacja | Typowe zastosowanie w AI żywieniowym |
|---|---|---|---|
| AlexNet | 2012 | Udowodnił, że głębokie CNN działają na dużą skalę | Wczesne badania nad rozpoznawaniem jedzenia |
| VGGNet | 2014 | Pokazał, że głębokość ma znaczenie | Ekstrakcja cech dla zbiorów danych żywności |
| GoogLeNet/Inception | 2014 | Przetwarzanie wieloskalowe | Wydajne rozpoznawanie jedzenia na urządzeniach mobilnych |
| ResNet | 2015 | Połączenia rezydualne dla bardzo głębokich sieci | Wysoka dokładność klasyfikacji jedzenia |
| EfficientNet | 2019 | Zrównoważone skalowanie głębokości, szerokości, rozdzielczości | Nowoczesne mobilne aplikacje do rozpoznawania jedzenia |
| Vision Transformers | 2020 | Mechanizm self-attention dla fragmentów obrazu | Najnowocześniejsze badania nad rozpoznawaniem jedzenia |
Od klasyfikacji do wieloetykietowej detekcji
Wczesne systemy rozpoznawania jedzenia traktowały zadanie jako prosty problem klasyfikacji: na podstawie jednego obrazu przewidzieć jedną etykietę jedzenia. Ale prawdziwe posiłki rzadko są tak proste. Typowy lunch może zawierać główne źródło białka, porcję warzyw, produkt zbożowy i sos — wszystko na jednym talerzu.
Detekcja obiektów dla złożonych talerzy
Nowoczesne systemy rozpoznawania jedzenia wykorzystują frameworki detekcji obiektów, które potrafią identyfikować i lokalizować wiele produktów spożywczych na jednym obrazie. Systemy te rysują ramki ograniczające wokół każdego odrębnego produktu spożywczego i klasyfikują je niezależnie.
Architektury takie jak YOLO (You Only Look Once) i Faster R-CNN zostały zaadaptowane do detekcji jedzenia. Modele te dzielą obraz na siatkę i jednocześnie przewidują zarówno lokalizację, jak i kategorię produktów spożywczych, umożliwiając przetwarzanie w czasie rzeczywistym na urządzeniach mobilnych.
Segmentacja semantyczna dla precyzyjnych granic
Dla jeszcze większej precyzji niektóre systemy wykorzystują segmentację semantyczną, która klasyfikuje każdy piksel na obrazie jako należący do określonej kategorii jedzenia. Jest to szczególnie przydatne w przypadku potraw mieszanych, takich jak sałatki lub stir-fry, gdzie różne składniki nakładają się na siebie i przenikają.
Funkcja Snap & Track w Nutrola wykorzystuje kombinację tych podejść. Kiedy fotografujesz swój posiłek, system najpierw wykrywa poszczególne regiony jedzenia, następnie klasyfikuje każdy z nich, a na koniec szacuje ilość każdego obecnego produktu. Ten wieloetapowy potok pozwala systemowi obsługiwać wszystko — od prostego banana po złożony wielodaniowy posiłek.
Dane treningowe: Paliwo napędzające dokładne rozpoznawanie jedzenia
Model rozpoznawania jedzenia jest tylko tak dobry, jak dane, na których został wytrenowany. Budowanie wysokiej jakości zbioru danych obrazów jedzenia jest jednym z najbardziej wymagających i zasobochłonnych aspektów tworzenia AI żywieniowego.
Publiczne zbiory danych benchmarkowe
Kilka publicznych zbiorów danych napędzało postęp w badaniach nad rozpoznawaniem jedzenia:
- Food-101: Zawiera 101 000 obrazów w 101 kategoriach jedzenia, szeroko stosowany jako benchmark
- ISIA Food-500: Obejmuje 500 kategorii jedzenia z 400 000 obrazów, oferując szerszy zakres
- UEC Food-256: Japoński zbiór danych o jedzeniu z 256 kategoriami, ważny dla pokrycia kuchni azjatyckiej
- Nutrition5k: Łączy obrazy jedzenia z precyzyjnymi pomiarami wartości odżywczych z warunków laboratoryjnych
Wyzwanie różnorodności świata rzeczywistego
Publiczne zbiory danych, choć cenne dla badań, nie odzwierciedlają w pełni różnorodności jedzenia spożywanego przez ludzi na całym świecie. Model wytrenowany głównie na kuchni zachodniej będzie miał trudności z potrawami z Azji Południowo-Wschodniej i odwrotnie. Dlatego produkcyjne systemy rozpoznawania jedzenia uzupełniają publiczne zbiory danych własnymi danymi zbieranymi od użytkowników.
Nutrola obsługuje użytkowników w ponad 50 krajach, co oznacza, że system codziennie napotyka ogromną różnorodność kuchni. Ta globalna baza użytkowników zapewnia ciągły strumień rzeczywistych obrazów jedzenia, który pomaga modelowi z czasem poprawiać rozpoznawanie wszystkich kuchni.
Techniki augmentacji danych
Aby sztucznie rozszerzyć dane treningowe i poprawić odporność modelu, inżynierowie stosują różne techniki augmentacji danych:
- Obrót i odbijanie: Zapewnia, że model rozpoznaje jedzenie pod dowolnym kątem
- Zmiana kolorów (color jittering): Symuluje różne warunki oświetleniowe
- Losowe przycinanie: Uczy model rozpoznawania częściowych widoków jedzenia
- Cutout i mixup: Zaawansowane techniki, które zmuszają model do skupienia się na wielu rozróżniających regionach, zamiast polegać na jednej wskazówce wizualnej
Jak działa technologia Snap & Track w Nutrola
Funkcja Snap & Track w Nutrola łączy wszystkie te technologie w płynne doświadczenie użytkownika. Oto, co dzieje się w ciągu około dwóch sekund między zrobieniem zdjęcia a zobaczeniem rozkładu kalorycznego:
Przetwarzanie wstępne obrazu: Zdjęcie jest zmieniane i normalizowane do formatu oczekiwanego przez sieć neuronową. Stosowane są korekty oświetlenia i kolorów w celu standaryzacji danych wejściowych.
Detekcja jedzenia: Model detekcji obiektów identyfikuje odrębne regiony jedzenia na obrazie i rysuje wokół każdego z nich ramki ograniczające.
Klasyfikacja: Każdy wykryty region jest przepuszczany przez sieć klasyfikacyjną, która identyfikuje konkretny produkt spożywczy. System bierze pod uwagę najlepszych kandydatów i ich wskaźniki pewności.
Szacowanie porcji: Oddzielny model szacuje objętość i wagę każdego zidentyfikowanego produktu spożywczego na podstawie wskazówek wizualnych i referencyjnych rozmiarów (więcej na ten temat w naszym towarzyszącym artykule o szacowaniu wielkości porcji).
Wyszukiwanie wartości odżywczych: Zidentyfikowane produkty i szacowane porcje są dopasowywane do kompleksowej bazy danych żywieniowych w celu obliczenia kalorii, makroskładników i mikroskładników.
Weryfikacja przez użytkownika: Wyniki są prezentowane użytkownikowi, który może potwierdzić lub skorygować identyfikacje. Ta pętla zwrotna nieustannie poprawia model.
Cały ten potok działa w mniej niż dwie sekundy, co czyni go szybszym niż wpisanie „grillowana pierś z kurczaka" w pasek wyszukiwania i przewijanie dziesiątek wyników.
Wyzwania w rozpoznawaniu jedzenia przez AI
Pomimo niezwykłego postępu, AI rozpoznające jedzenie wciąż stoi przed kilkoma wyzwaniami, nad których rozwiązaniem aktywnie pracują badacze i inżynierowie.
Wizualnie podobne produkty
Niektóre produkty spożywcze wyglądają na zdjęciach niemal identycznie, ale mają bardzo różne profile odżywcze. Biały ryż i ryż z kalafiora, zwykły makaron i makaron pełnoziarnisty, ser pełnotłusty i niskotłuszczowy — to wszystko przykłady wizualnie podobnych produktów, które znacznie różnią się kalorycznością i makroskładnikami.
Obecne systemy radzą sobie z tym poprzez kombinację wskazówek kontekstowych (co jeszcze jest na talerzu), historii użytkownika (co dana osoba zazwyczaj je) oraz pytanie użytkownika o potwierdzenie, gdy pewność jest niska.
Potrawy mieszane i warstwowe
Burrito, kanapka lub warstwowa zapiekanka stanowią fundamentalny problem: większość składników jest ukryta przed wzrokiem. AI może zobaczyć tortillę, ale nie fasolę, ser, śmietanę i ryż w środku.
Aby temu zaradzić, modele uczą się typowego składu popularnych potraw. Gdy system identyfikuje burrito, może wnioskować o prawdopodobnych wewnętrznych składnikach na podstawie widocznej zewnętrznej warstwy i powszechnych metod przygotowania. Użytkownicy mogą następnie dostosować konkretne nadzienia w razie potrzeby.
Oświetlenie i warunki otoczenia
Przyciemnione oświetlenie restauracji, ostry flesz i zabarwione światło otoczenia mogą wpływać na wygląd jedzenia. Żółte oświetlenie może sprawić, że biały ryż będzie wyglądał jak ryż szafranowy, a niebieskawate oświetlenie może sprawić, że czerwone mięso będzie wyglądało na brązowe.
Nowoczesne systemy radzą sobie z tym poprzez augmentację danych treningowych oraz budowanie cech niezmiennych kolorystycznie, które skupiają się bardziej na teksturze i kształcie niż na bezwzględnych wartościach kolorów.
Przyszłość technologii rozpoznawania jedzenia
AI rozpoznające jedzenie rozwija się szybko. Kilka pojawiających się trendów wskazuje na jeszcze bardziej zaawansowane systemy w niedalekiej przyszłości:
Rozpoznawanie na podstawie wideo: Zamiast analizować pojedyncze zdjęcie, przyszłe systemy mogą analizować krótki klip wideo posiłku, rejestrując wiele kątów i poprawiając dokładność.
Nakładki rzeczywistości rozszerzonej: AR może zapewniać informacje odżywcze w czasie rzeczywistym podczas skanowania bufetu lub menu restauracji, pomagając podejmować świadome wybory przed jedzeniem.
Modele multimodalne: Łączenie rozpoznawania wizualnego z tekstem (menu, listy składników), a nawet dźwiękiem (pytanie użytkownika „czy dodałeś sos do sałatki?") dla pełniejszego zrozumienia posiłku.
Przetwarzanie na urządzeniu: Wraz ze wzrostem mocy procesorów mobilnych coraz więcej przetwarzania AI może odbywać się bezpośrednio na telefonie bez wysyłania obrazów na serwer, co poprawia szybkość i prywatność.
Rozpoznawanie na poziomie składników: Wyjście poza klasyfikację na poziomie dania do identyfikacji poszczególnych składników i ich przybliżonych ilości, umożliwiając bardziej precyzyjne obliczenia wartości odżywczych.
Dlaczego dokładność wciąż się poprawia
Jednym z najbardziej obiecujących aspektów AI rozpoznającego jedzenie jest wbudowany mechanizm doskonalenia. Za każdym razem, gdy użytkownik robi zdjęcie i potwierdza lub poprawia wynik, system otrzymuje oznaczony punkt danych. Przy milionach użytkowników rejestrujących posiłki codziennie, produkcyjne systemy takie jak Nutrola gromadzą dane treningowe w tempie, którego badania akademickie nie mogą dorównać.
Tworzy to pozytywne sprzężenie zwrotne: lepsza dokładność przyciąga więcej użytkowników, więcej użytkowników generuje więcej danych, więcej danych umożliwia lepszą dokładność. Dlatego rozpoznawanie jedzenia, którego doświadczasz dzisiaj, jest znacznie lepsze niż to, co było dostępne jeszcze rok temu — i będzie się nadal poprawiać.
FAQ
Jak dokładne jest rozpoznawanie jedzenia przez AI w porównaniu z ręcznym rejestrowaniem?
Badania wykazały, że rozpoznawanie jedzenia przez AI może osiągać wskaźniki dokładności powyżej 90 procent dla popularnych potraw, co jest porównywalne lub lepsze od dokładności wyszkolonych dietetyków ręcznie szacujących porcje. Ręczne rejestrowanie przez osoby bez specjalistycznej wiedzy zazwyczaj zaniża spożycie kalorii o 10 do 45 procent, co sprawia, że rejestrowanie wspierane przez AI jest bardziej wiarygodne dla większości ludzi.
Czy AI do rozpoznawania jedzenia działa z kuchniami z całego świata?
Tak, choć dokładność różni się w zależności od kuchni w zależności od dostępnych danych treningowych. Systemy takie jak Nutrola, obsługujące globalną bazę użytkowników w 50 lub więcej krajach, nieustannie poprawiają rozpoznawanie różnorodnych kuchni w miarę zbierania większej ilości danych od użytkowników z całego świata. Im bardziej dana kuchnia jest reprezentowana w danych treningowych, tym dokładniejsze staje się rozpoznawanie.
Czy rozpoznawanie jedzenia przez AI działa offline?
To zależy od implementacji. Niektóre aplikacje przetwarzają obrazy na urządzeniu przy użyciu zoptymalizowanych modeli, co działa offline, ale może obniżyć dokładność. Inne wysyłają obrazy na serwery w chmurze do przetworzenia, co wymaga połączenia z internetem, ale pozwala używać większych, dokładniejszych modeli. Wiele nowoczesnych aplikacji stosuje podejście hybrydowe — wstępne rozpoznawanie odbywa się na urządzeniu, a wyniki są udoskonalane przy pomocy przetwarzania w chmurze, gdy jest dostępne.
Jak AI radzi sobie z domowymi posiłkami, które nie odpowiadają daniom z restauracji?
Nowoczesne systemy rozpoznawania jedzenia są trenowane zarówno na obrazach jedzenia z restauracji, jak i domowego. Identyfikują poszczególne składniki, zamiast próbować dopasować całe danie do wpisu w bazie danych. Tak więc domowe stir-fry zostanie rozłożone na widoczne składniki (kurczak, brokuły, ryż, sos), zamiast być dopasowywane do pojedynczej pozycji z menu.
Czy moje zdjęcia jedzenia są przechowywane w sposób prywatny?
Polityki prywatności różnią się w zależności od aplikacji. Nutrola jest zobowiązana do ochrony prywatności użytkowników i wykorzystuje zdjęcia jedzenia wyłącznie w celach analizy odżywczej i doskonalenia modelu. Obrazy są przetwarzane w bezpieczny sposób i nie są udostępniane osobom trzecim. Użytkownicy mogą zapoznać się z polityką prywatności, aby uzyskać pełne informacje na temat praktyk przetwarzania danych.
Co się dzieje, gdy AI błędnie zidentyfikuje jedzenie?
Gdy AI błędnie zidentyfikuje jedzenie, użytkownicy mogą poprawić wynik, wybierając właściwy produkt z listy lub wpisując prawidłowe jedzenie. Ta korekta stanowi cenne dane treningowe, które pomagają modelowi poprawiać się z czasem. Im więcej korekt system otrzyma dla danego produktu, tym szybciej poprawia się jego dokładność dla tego elementu.
Gotowy, aby przeksztalcic sledzenie zywienia?
Dolacz do tysiecy osob, ktore przeksztalcily swoja podroz zdrowotna z Nutrola!