Jak działa pipeline AI rozpoznawania żywności: od zdjęcia do danych o odżywianiu
Szczegółowy przegląd techniczny całego procesu AI rozpoznawania żywności: od wejścia z kamery, przez ekstrakcję cech CNN, klasyfikację żywności, szacowanie porcji, przeszukiwanie bazy danych o odżywianiu, aż po ostateczne obliczenie kalorii.
Kiedy robisz zdjęcie swojego lunchu i w ciągu dwóch sekund widzisz pełne zestawienie makroskładników, łatwo jest zignorować ten wynik. Za tym pozornie natychmiastowym odczytem kryje się jednak wieloetapowy proces, który przetwarza Twoje zdjęcie przez uchwycenie obrazu, wstępne przetwarzanie, wnioskowanie sieci neuronowej, klasyfikację, szacowanie porcji, przeszukiwanie bazy danych oraz ostateczne obliczenie kalorii, zanim cokolwiek pojawi się na Twoim ekranie. Każdy etap rozwiązuje odrębny problem, opiera się na własnym zestawie algorytmów i przekazuje konkretny wynik do następnego etapu.
W tym artykule prześledzimy całą tę podróż od naciśnięcia migawki do etykiety odżywiania. Po drodze wymienimy architektury, techniki i kompromisy inżynieryjne, które sprawiają, że każdy etap działa, oraz podkreślimy, gdzie Nutrola wprowadziła swoje innowacje, aby zwiększyć dokładność i szybkość ponad normy branżowe.
Etap 1: Wejście z kamery i pozyskiwanie obrazu
Wszystko zaczyna się w momencie, gdy użytkownik otwiera wizjer kamery i ustawia talerz z jedzeniem w kadrze. Nowoczesne smartfony rejestrują obrazy w rozdzielczości od 12 do 48 megapikseli, generując surowe dane z czujnika, które kodują wartości intensywności kolorów w mozaice filtra Bayera. Procesor sygnału obrazu (ISP) w urządzeniu demosaikuje te dane, stosuje balans bieli, redukuje szumy i w ciągu ułamka sekundy generuje standardowy plik JPEG lub HEIF.
Dwa elementy sprzętowe coraz bardziej wpływają na ten etap. Po pierwsze, czujniki LiDAR w najnowszych modelach iPhone Pro oraz wybranych flagowcach Androida mogą rejestrować mapę głębokości obok obrazu RGB. Te dane głębokości stają się cenne w dalszych etapach podczas szacowania porcji. Po drugie, urządzenia z czujnikami czasu przelotu dostarczają podobne, ale mniej precyzyjne informacje o głębokości, które pipeline może wykorzystać, gdy LiDAR jest niedostępny.
Pipeline przyjmuje obraz RGB oraz, gdy jest dostępna, mapę głębokości jako sparowane wejście. Jeśli urządzenie nie oferuje czujnika głębokości, pipeline kontynuuje z samym RGB i kompensuje później, korzystając z estymacji głębokości z jednego oka.
Kluczowy wynik tego etapu
Obraz RGB o wysokiej rozdzielczości (opcjonalnie z mapą głębokości) przedstawiający scenę przed użytkownikiem.
Etap 2: Wstępne przetwarzanie obrazu
Surowe dane z kamery nie są gotowe do wnioskowania sieci neuronowej. Wstępne przetwarzanie przekształca obraz w ustandaryzowany tensor, którego model oczekuje.
Zmiana rozmiaru i przycinanie
Większość modeli rozpoznawania żywności przyjmuje wejście w stałej rozdzielczości, zazwyczaj 224x224, 384x384 lub 512x512 pikseli, w zależności od architektury. Pipeline zmienia rozmiar obrazu na tę docelową rozdzielczość, zachowując proporcje, stosując letterboxing lub przycinanie centralne w razie potrzeby. Interpolacja bicubiczna jest standardową metodą próbkowania, ponieważ lepiej zachowuje szczegóły tekstur niż alternatywy biliniowe.
Normalizacja
Wartości pikseli są konwertowane z zakresu 0-255 na liczby zmiennoprzecinkowe, a następnie normalizowane przy użyciu średniej i odchylenia standardowego kanałów zestawu danych treningowych. Dla modeli wstępnie wytrenowanych na ImageNet stosuje się kanoniczne wartości normalizacji (średnia [0.485, 0.456, 0.406] i odchylenie standardowe [0.229, 0.224, 0.225] dla kanałów R, G i B). Ta normalizacja centruje rozkład wejściowy wokół zera i skaluje go do jednostkowej wariancji, co stabilizuje przepływ gradientów podczas treningu i zapewnia spójne zachowanie wnioskowania.
Przestrzeń kolorów i artefakty augmentacji
Podczas treningu pipeline stosuje szeroką augmentację danych: losowe obroty, poziome odbicia, zmiany kolorów, rozmycie Gaussa i wycinanie fragmentów. W czasie wnioskowania te augmentacje są wyłączone, ale model nauczył się być odporny na rodzaje wizualnego szumu, które symulują. Oznacza to, że zdjęcie zrobione w ciepłym oświetleniu restauracyjnym i zdjęcie zrobione w chłodnym fluorescencyjnym oświetleniu biurowym będą obie produkować wiarygodne reprezentacje cech.
Kluczowy wynik tego etapu
Znormalizowany tensor zmiennoprzecinkowy o stałych wymiarach przestrzennych, gotowy do przetwarzania przez sieć neuronową.
Etap 3: Ekstrakcja cech CNN
To jest rdzeń obliczeniowy pipeline'u. Głęboka sieć konwolucyjna (lub coraz częściej transformator wizji) przetwarza wstępnie przetworzony tensor i produkuje gęsty wektor cech, który koduje wizualną zawartość obrazu w formie, którą downstreamowe klasyfikatory i detektory mogą zinterpretować.
Architektury Backbone
Kilka architektur backbone okazało się skutecznych w rozpoznawaniu żywności:
EfficientNet wykorzystuje skalowanie kompozytowe, aby zrównoważyć głębokość sieci, szerokość i rozdzielczość wejściową. EfficientNet-B4 i B5 są popularnymi wyborami, ponieważ oferują wysoką dokładność przy kosztach obliczeniowych, które są wykonalne na sprzęcie mobilnym, gdy są połączone z kwantyzacją. Nutrola stosuje backbone oparty na EfficientNet, który został dostosowany na podstawie własnego zestawu danych obrazów żywności, osiągając korzystny kompromis między opóźnieniem a dokładnością top-1.
Vision Transformers (ViT) dzielą obraz na stałe fragmenty (zazwyczaj 16x16 pikseli), projektują każdy fragment w osadzenie i przetwarzają sekwencję osadzeń przez warstwy wielogłownej uwagi. ViT doskonale uchwycają długozasięgowe relacje przestrzenne, na przykład rozumiejąc, że brązowy krążek obok zielonych liści to kotlet hamburgerowy, a nie ciastko czekoladowe, ponieważ otaczający kontekst zawiera bułkę i sałatę. Modele hybrydowe, takie jak DeiT (Data-efficient Image Transformer) i Swin Transformer, zredukowały wymagania dotyczące danych i koszty obliczeniowe czystych ViT, czyniąc je wykonalnymi dla produkcyjnych systemów rozpoznawania żywności.
MobileNetV3 jest zoptymalizowany do wnioskowania na urządzeniach z wykorzystaniem konwolucji separowalnych i poszukiwania architektury neuronowej dostosowanej do sprzętu. Służy jako backbone w krytycznych pod względem opóźnienia ścieżkach, gdzie model musi działać całkowicie na urządzeniu bez potrzeby komunikacji sieciowej.
Sieci Piramidalne Cech
Ponieważ produkty spożywcze mogą znacznie różnić się rozmiarem w obrębie jednego obrazu (duża pizza obok małej miseczki sosu), pipeline wykorzystuje Sieć Piramidalną Cech (FPN) do ekstrakcji cech na wielu skalach przestrzennych. FPN buduje ścieżkę od góry do dołu z bocznymi połączeniami z pośrednimi mapami cech backbone'a, produkując zestaw wieloskalaowych map cech, które są równie ekspresywne w wykrywaniu małych dodatków i dużych dań głównych.
Kluczowy wynik tego etapu
Zestaw wieloskalaowych map cech (lub pojedynczy zintegrowany wektor cech dla zadań tylko klasyfikacyjnych) kodujący wizualną semantykę każdego regionu w obrazie.
Etap 4: Klasyfikacja i detekcja żywności z wieloma etykietami
Prawdziwe posiłki rzadko zawierają tylko jeden produkt spożywczy. Typowy talerz obiadowy może zawierać grillowanego łososia, gotowaną brokułę, brązowy ryż i plasterek cytryny. Pipeline musi wykryć, zlokalizować i sklasyfikować każdy odrębny produkt spożywczy w kadrze.
Wykrywanie obiektów z YOLO i DETR
Pipeline stosuje głowicę wykrywania obiektów na wyekstrahowanych mapach cech. Dwie rodziny detektorów dominują w tej dziedzinie:
YOLO (You Only Look Once) wykonuje detekcję w jednym przebiegu, dzieląc obraz na siatkę i jednocześnie przewidując ramki ograniczające oraz prawdopodobieństwa klas dla każdej komórki siatki. YOLOv8 i jego następcy są szczególnie dobrze dostosowani do wdrożeń mobilnych, ponieważ przetwarzają cały obraz w jednym kroku, a nie proponują i następnie udoskonalają obszary. Nutrola wykorzystuje głowicę detekcyjną opartą na YOLO, dostosowaną do ponad 15 000 klas żywności obejmujących światowe kuchnie.
DETR (Detection Transformer) traktuje wykrywanie obiektów jako problem przewidywania zbioru, wykorzystując architekturę transformatora kodera-dekodera do bezpośredniego wyjścia zestawu detekcji bez potrzeby stosowania ramek kotwiczących czy tłumienia maksymalnego. DETR radzi sobie z nakładającymi się produktami spożywczymi lepiej niż metody oparte na kotwicach, ponieważ jego strata oparta na zbiorze naturalnie unika duplikatów przewidywań.
Segmentacja semantyczna dla potraw mieszanych
Dla potraw złożonych, takich jak sałatki, stir-fry i miski zbożowe, gdzie składniki nakładają się i mieszają, ramki ograniczające są zbyt ogólne. Pipeline przechodzi do gałęzi segmentacji semantycznej, często opartej na architekturze U-Net lub DeepLabv3+, która klasyfikuje każdy piksel w obrazie. Ta klasyfikacja na poziomie piksela pozwala systemowi oszacować proporcje każdego składnika w mieszanej potrawie, nawet gdy nie ma wyraźnych granic między nimi.
Ocena pewności i ranking kandydatów
Każda detekcja wiąże się z wynikiem pewności. Pipeline stosuje próg (zazwyczaj 0.5 do 0.7 w zależności od zastosowania), aby odfiltrować przewidywania o niskiej pewności. Gdy najwyższe przewidywanie jest niepewne, system może przedstawić użytkownikowi od trzech do pięciu najlepszych kandydatów do potwierdzenia, co zmniejsza wskaźniki błędów bez potrzeby ręcznego wprowadzania danych.
Silnik klasyfikacji Nutrola uwzględnia moduł kontekstu użytkownika, który bierze pod uwagę wcześniejsze posiłki, preferencje kulinarne, lokalizację geograficzną i porę dnia. Jeśli użytkownik często rejestruje kuchnię meksykańską, a model ma wątpliwości między tortillą pszenną a naanem, moduł kontekstu skłania prawdopodobieństwo w kierunku tortilli. Ta warstwa personalizacji znacząco zmniejsza wskaźniki błędów klasyfikacji w czasie.
Kluczowy wynik tego etapu
Lista wykrytych produktów spożywczych, z etykietą klasy, ramką ograniczającą lub maską pikseli oraz wynikiem pewności.
Etap 5: Szacowanie wielkości porcji
Wiedza, że talerz zawiera grillowanego kurczaka i ryż, to za mało. Pipeline musi oszacować, ile każdego produktu jest obecne, ponieważ 100 gramów piersi z kurczaka i 300 gramów piersi z kurczaka różni się o ponad 300 kalorii.
Estymacja głębokości z jednego oka
Gdy nie ma dostępnego czujnika głębokości, pipeline korzysta z modelu estymacji głębokości z jednego oka (zazwyczaj opartego na architekturze MiDaS lub DPT), aby wywnioskować mapę głębokości tylko z obrazu RGB. Modele te uczą się przewidywać głębokość na podstawie kontekstowych wskazówek, takich jak nakładanie się obiektów, względny rozmiar, gradienty tekstury i punkty zbiegu. Wywnioskowana mapa głębokości, chociaż mniej precyzyjna niż dane LiDAR, jest wystarczająca do przybliżenia trójwymiarowego kształtu jedzenia na talerzu.
Skalowanie obiektów odniesienia
Fotografia nie zawiera wbudowanej skali. Pipeline rozwiązuje to, wykrywając obiekty odniesienia o znanych wymiarach w kadrze. Talerze (zazwyczaj o średnicy 25 do 27 cm), standardowe sztućce, miski, a nawet krawędzie smartfona mogą stanowić punkt odniesienia. Dopasowując elipsę do wykrytej krawędzi talerza i stosując geometrię projektową do wywnioskowania kąta widzenia, pipeline rekonstruuje rzeczywiste odległości z pomiarów pikselowych.
Konwersja objętości na wagę
Mając oszacowany trójwymiarowy kształt jedzenia, pipeline oblicza objętość, integrując profil głębokości nad maską pikseli jedzenia. Następnie konwertuje objętość na wagę, korzystając z tabel gęstości specyficznych dla żywności. Szklanka liściastego szpinaku waży znacznie mniej niż szklanka hummusu, więc wyszukiwanie gęstości jest kluczowe dla dokładności.
Nutrola utrzymuje własną bazę danych gęstości obejmującą tysiące produktów spożywczych w różnych stanach przygotowania (surowe, gotowane, blendowane, mrożone) i wykorzystuje ją do konwersji oszacowanych objętości na wagi w gramach z wyższą precyzją niż ogólne tabele gęstości.
Kluczowy wynik tego etapu
Oszacowana waga w gramach dla każdego wykrytego produktu spożywczego.
Etap 6: Przeszukiwanie bazy danych o odżywianiu
Gdy każdy produkt spożywczy jest sklasyfikowany i zważony, pipeline przeszukuje bazę danych o odżywianiu, aby uzyskać profil makro- i mikroelementów na 100 gramów tego produktu.
Architektura bazy danych
Wysokiej jakości bazy danych o odżywianiu czerpią z rządowych źródeł, takich jak USDA FoodData Central, UK Nutrient Databank oraz krajowych odpowiedników z dziesiątek krajów. Te źródła dostarczają laboratoryjnie analizowane wartości odżywcze dla tysięcy produktów spożywczych w ustandaryzowanej formie.
Baza danych Nutrola wykracza poza te źródła rządowe, włączając dane dostarczone przez producentów z ponad 1,2 miliona produktów markowych, pozycje z menu restauracji z informacjami o odżywianiu weryfikowanymi przez partnerstwa oraz wpisy przesyłane przez społeczność, które przechodzą wielowarstwowy proces weryfikacji, w tym krzyżowe odniesienia, wykrywanie odstających wartości i przegląd dietetyków. Efektem jest zjednoczona baza danych z ponad 2 milionami wpisów żywnościowych z danymi o odżywianiu, znormalizowanymi do spójnego schematu.
Dopasowanie przybliżone i rozwiązywanie problemów z encjami
Model klasyfikacji generuje etykietę żywności, taką jak "grillowana udko z kurczaka ze skórą", którą należy dopasować do odpowiedniego wpisu w bazie danych. To nie jest trywialny problem rozwiązywania encji, ponieważ ta sama żywność może mieć dziesiątki nazw w różnych regionach i językach. Pipeline wykorzystuje osadzenia oparte na wyszukiwaniu semantycznym, aby znaleźć najbliższy wpis w bazie danych. Dostosowany enkoder tekstu mapuje zarówno przewidywaną etykietę żywności, jak i każdą nazwę wpisu w bazie danych do tej samej przestrzeni wektorowej, a najbliższy sąsiad (mierzone przez podobieństwo kosinusowe) jest wybierany.
Gdy istnieje wiele bliskich dopasowań (na przykład "udko z kurczaka, grillowane, ze skórą" w porównaniu do "udko z kurczaka, pieczone, skórka zjedzona"), system wybiera wpis, którego metoda przygotowania najlepiej odpowiada wizualnym wskazówkom wykrytym w obrazie.
Kluczowy wynik tego etapu
Pełny profil składników odżywczych (kalorie, białko, węglowodany, tłuszcz, błonnik i mikroelementy) na 100 gramów dla każdego wykrytego produktu spożywczego.
Etap 7: Obliczanie makroskładników i kalorii
Ostatni etap obliczeniowy to prosta arytmetyka, ale to tutaj błędy z każdego wcześniejszego etapu się kumulują. Pipeline mnoży wartości składników odżywczych na 100 gramów przez oszacowaną wagę każdego produktu, a następnie sumuje wyniki dla wszystkich produktów, aby uzyskać całkowite zestawienie posiłku.
Obliczenia
Dla każdego produktu spożywczego:
- Kalorie = (oszacowane gramy / 100) x kalorie na 100 g
- Białko = (oszacowane gramy / 100) x białko na 100 g
- Węglowodany = (oszacowane gramy / 100) x węglowodany na 100 g
- Tłuszcz = (oszacowane gramy / 100) x tłuszcz na 100 g
Te wartości dla poszczególnych produktów są sumowane, aby uzyskać całkowity wynik posiłku.
Propagacja błędów i przedziały pewności
Ponieważ każdy wcześniejszy etap wprowadza pewną niepewność, Nutrola nie przedstawia pojedynczego oszacowania jako pewnego. System oblicza przedziały pewności, propagując wynik pewności klasyfikacji oraz niepewność oszacowania porcji przez obliczenia. Jeśli pewność klasyfikacji jest wysoka, ale oszacowanie porcji jest niepewne (na przykład, gdy jedzenie jest ułożone w głębokiej misce, co utrudnia oszacowanie objętości), system odzwierciedla to, poszerzając zakres pewności i może poprosić użytkownika o potwierdzenie porcji.
Ta przejrzystość to świadomy wybór projektowy. Zamiast przedstawiać fałszywe poczucie precyzji, Nutrola pokazuje zakres (na przykład "420 do 510 kcal"), gdy podstawowe oszacowania to uzasadniają, pomagając użytkownikom wykształcić realistyczne zrozumienie swojego spożycia.
Kluczowy wynik tego etapu
Całkowite kalorie i podział makroskładników dla posiłku, z opcjonalnymi przedziałami pewności.
Etap 8: Wyświetlanie wyników i rejestrowanie
Ostatni etap renderuje wyniki w interfejsie użytkownika. Wykryte produkty spożywcze są wymienione z ich indywidualnymi wartościami kalorycznymi i makroskładnikami, a całkowity wynik posiłku jest wyraźnie wyświetlany. Użytkownik może dotknąć dowolnego produktu, aby go poprawić lub dostosować porcję, a te poprawki trafiają z powrotem do modeli personalizacji, aby poprawić przyszłe przewidywania.
W Nutrola wyświetlanie obejmuje wizualny nakład na oryginalnym zdjęciu, pokazujący ramki ograniczające lub podświetlenia segmentów dla każdego wykrytego produktu, co natychmiastowo wyjaśnia, co AI zidentyfikowało i gdzie. Ta wizualna informacja buduje zaufanie i ułatwia dostrzeganie oraz poprawianie błędów.
Zarejestrowany posiłek jest przechowywany w dzienniku żywienia użytkownika i przyczynia się do bieżących sum dla kalorii, białka, węglowodanów, tłuszczu i śledzonych mikroelementów. Dane synchronizują się z Apple Health, Google Fit i innymi połączonymi platformami za pośrednictwem standardowych interfejsów API danych zdrowotnych.
Kluczowy wynik tego etapu
W pełni zrealizowany wpis w dzienniku posiłków z danymi o odżywianiu dla poszczególnych produktów i całości, wizualnymi nakładkami oraz synchronizacją z platformami zdrowotnymi.
Podsumowanie pipeline'u
| Etap | Technologia rdzeniowa | Wejście | Wyjście |
|---|---|---|---|
| 1. Wejście z kamery | ISP urządzenia, czujniki LiDAR/ToF | Światło z sceny | Obraz RGB + opcjonalna mapa głębokości |
| 2. Wstępne przetwarzanie obrazu | Bicubiczne zmienianie rozmiaru, normalizacja kanałów | Surowy obraz | Znormalizowany tensor (np. 384x384x3) |
| 3. Ekstrakcja cech | EfficientNet, ViT, Swin Transformer, FPN | Znormalizowany tensor | Mapy cech wieloskalaowych |
| 4. Klasyfikacja żywności | YOLOv8, DETR, DeepLabv3+, kontekst użytkownika | Mapy cech | Oznaczone produkty spożywcze z ramkami ograniczającymi/maskami |
| 5. Szacowanie porcji | Estymacja głębokości MiDaS, skalowanie odniesienia, tabele gęstości | RGB + głębokość + maski żywności | Waga w gramach dla każdego produktu spożywczego |
| 6. Przeszukiwanie bazy danych | Wyszukiwanie semantyczne oparte na osadzeniach, bazy danych USDA/markowe | Etykiety żywności + wskazówki dotyczące przygotowania | Profile składników odżywczych na 100 g |
| 7. Obliczanie kalorii | Ważona arytmetyka, propagacja niepewności | Oszacowania gramów + profile składników odżywczych | Całkowite kalorie i makroskładniki z przedziałami pewności |
| 8. Wyświetlanie dla użytkownika | Renderowanie UI, interfejsy API synchronizacji danych zdrowotnych | Obliczone dane o odżywianiu | Wpis w dzienniku posiłków z wizualnym nakładką |
Gdzie mieszczą się innowacje Nutrola
Kilka z opisanych powyżej etapów zawiera innowacje specyficzne dla implementacji Nutrola:
Personalizowany kontekst klasyfikacji. Moduł kontekstu użytkownika w Etapie 4 wykorzystuje dane z wcześniejszych posiłków, preferencje kulinarne, lokalizację i porę dnia, aby rozwiązać niejasne przewidywania. To nie jest standardowe w większości pipeline'ów rozpoznawania żywności i przynosi wymierne poprawy w dokładności w rzeczywistych warunkach w porównaniu do modeli bez kontekstu.
Własna baza danych gęstości. Konwersja objętości na wagę w Etapie 5 opiera się na bazie danych gęstości obejmującej żywność w różnych stanach przygotowania. Ogólne systemy często używają jednej średniej gęstości dla żywności, co wprowadza systematyczny błąd dla takich produktów jak gotowane versus surowe warzywa czy odsączone versus nieodsączone produkty w puszkach.
Wyświetlanie z uwzględnieniem pewności. Zamiast pokazywać pojedynczą wartość kaloryczną, Nutrola uwzględnia niepewność, gdy ta występuje. To szczere podejście zmniejsza frustrację użytkowników, gdy oszacowania wydają się nietrafione, ponieważ sam zakres komunikuje, że system jest mniej pewny co do danego produktu.
Zjednoczona baza danych o odżywianiu z wielu źródeł. Baza danych z 2 milionami wpisów w Etapie 6 łączy dane z laboratoriów rządowych, dane produktów markowych oraz zweryfikowane wpisy społeczności w jeden znormalizowany schemat, dając pipeline'owi dostęp do znacznie większej liczby wpisów żywnościowych niż jakiekolwiek pojedyncze źródło.
Ciągłe uczenie się z poprawek. Każda poprawka użytkownika w Etapie 8 trafia z powrotem do modeli klasyfikacji i oszacowania porcji podczas okresowych cykli ponownego trenowania, tworząc efekt kuli śnieżnej, w którym dokładność poprawia się wraz ze wzrostem bazy użytkowników.
Opóźnienia i rozważania dotyczące działania na urządzeniach
Opóźnienie end-to-end ma ogromne znaczenie dla doświadczeń użytkowników. Jeśli pipeline zajmuje więcej niż dwie do trzech sekund, użytkownicy postrzegają to jako wolne i mogą wrócić do ręcznego rejestrowania. Kilka strategii inżynieryjnych utrzymuje niskie opóźnienie:
Kwantyzacja modelu konwertuje wagi zmiennoprzecinkowe 32-bitowe na liczby całkowite 8-bitowe, co zmniejsza rozmiar modelu o około 4x i przyspiesza wnioskowanie na mobilnych jednostkach przetwarzania neuronowego (NPU) przy minimalnej utracie dokładności. Nutrola stosuje kwantyzację po treningu zarówno dla backbone'a ekstrakcji cech, jak i głowicy detekcyjnej.
Wnioskowanie na urządzeniu całkowicie eliminuje potrzebę komunikacji sieciowej dla obliczeniowych etapów intensywnych (ekstrakcja cech i detekcja). Core ML Apple'a i NNAPI Androida zapewniają przyspieszone ścieżki wnioskowania, które pipeline celuje. Tylko lekkie etapy przeszukiwania bazy danych i obliczania kalorii wymagają połączenia z serwerem, a nawet te mogą korzystać z lokalnej pamięci podręcznej do pracy offline.
Spekulacyjne wykonanie rozpoczyna wstępne przetwarzanie i ekstrakcję cech, gdy podgląd kamery jest nadal aktywny, więc w momencie, gdy użytkownik naciska przycisk migawki, pipeline już częściowo przetworzył klatkę. Ta technika skraca postrzegane opóźnienie o kilka setnych sekundy.
Benchmarki dokładności i wydajność w rzeczywistych warunkach
Na standardowych benchmarkach akademickich, takich jak Food-101, ISIA Food-500 i Nutrition5k, nowoczesne pipeline'y osiągają dokładność klasyfikacji top-1 między 85 a 92 procentami, a błędy szacowania porcji mieszczą się w zakresie 15 do 25 procent w stosunku do rzeczywistej wagi. Wydajność w rzeczywistych warunkach różni się, ponieważ zdjęcia przesyłane przez użytkowników są głośniejsze niż starannie dobrane zbiory danych: słabe oświetlenie, częściowe zasłonięcia, nietypowe kąty i rzadkie regionalne potrawy obniżają dokładność.
Wewnętrzne testy Nutrola na zestawie 50 000 rzeczywistych zdjęć użytkowników pokazują dokładność klasyfikacji top-1 na poziomie 89 procent i medianę błędu szacowania porcji wynoszącą 18 procent. Gdy rozważa się trzy najlepsze kandydatury, dokładność klasyfikacji wzrasta do 96 procent, dlatego interfejs poprawy wyraźnie wyświetla alternatywne sugestie.
Te liczby nadal się poprawiają z każdym cyklem ponownego trenowania, gdy pętla informacji zwrotnej z poprawek gromadzi więcej oznakowanych danych z rzeczywistego użytkowania.
Najczęściej zadawane pytania
Jak długo trwa cały pipeline od zdjęcia do danych o odżywianiu?
Na nowoczesnych smartfonach z dedykowanym sprzętem do przetwarzania neuronowego, pipeline end-to-end zazwyczaj kończy się w czasie od 1.0 do 2.5 sekundy. Większość tego czasu spędza się na ekstrakcji cech i detekcji obiektów w Etapach 3 i 4. Wstępne przetwarzanie i obliczanie kalorii są niemal natychmiastowe, a przeszukiwanie bazy danych zajmuje tylko 50 do 150 milisekund w zależności od warunków sieciowych lub tego, czy używana jest lokalna pamięć podręczna. System spekulacyjnego wykonania Nutrola, który rozpoczyna przetwarzanie podglądu kamery przed naciśnięciem migawki przez użytkownika, może w wielu przypadkach skrócić postrzegane opóźnienie do poniżej jednej sekundy.
Jak dokładna jest klasyfikacja żywności AI w porównaniu do ręcznego rejestrowania?
Klasyfikacja żywności AI osiąga dokładność top-1 między 85 a 92 procentami na standardowych benchmarkach, a dokładność top-3 powyżej 95 procent. Ręczne rejestrowanie, chociaż teoretycznie precyzyjne, gdy jest wykonywane starannie, cierpi na systematyczne niedoinformowanie wynoszące od 10 do 45 procent według opublikowanych badań dietetycznych. W praktyce klasyfikacja AI w połączeniu z szybkim krokiem potwierdzenia użytkownika ma tendencję do produkowania bardziej spójnych i mniej stronniczych wyników niż czysto ręczne wprowadzanie, szczególnie dla użytkowników, którzy rejestrują wiele posiłków dziennie i doświadczają zmęczenia wprowadzania danych.
Co się dzieje, gdy AI nie może zidentyfikować produktu spożywczego?
Gdy najwyższe przewidywanie pewności spada poniżej progu systemu, pipeline przyjmuje łagodną strategię awaryjną. Prezentuje od trzech do pięciu najlepszych kandydatów identyfikacji i prosi użytkownika o wybór właściwego lub ręczne wpisanie nazwy. Ta poprawka użytkownika jest rejestrowana i przekazywana z powrotem do pipeline'u treningowego podczas następnego cyklu ponownego trenowania, co oznacza, że każda porażka staje się sygnałem treningowym, który poprawia przyszłe przewidywania. Z biegiem czasu, gdy te poprawki się kumulują, zasięg systemu w zakresie nietypowych i regionalnych potraw stopniowo się rozszerza.
Czy pipeline działa inaczej dla potraw mieszanych, takich jak sałatki czy curry?
Tak. Dla potraw mieszanych, w których poszczególne składniki nie są przestrzennie oddzielne, pipeline przechodzi z wykrywania za pomocą ramek ograniczających do segmentacji semantycznej przy użyciu architektur takich jak DeepLabv3+. Ta klasyfikacja na poziomie piksela szacuje proporcje każdego składnika w obrębie mieszanej przestrzeni. Dla mocno zmiksowanych potraw, takich jak koktajle czy zupy kremowe, gdzie wizualne oddzielenie jest niemożliwe, pipeline polega na dekompozycji opartej na przepisach: identyfikuje rodzaj potrawy, a następnie wykorzystuje model przepisu do oszacowania prawdopodobnych proporcji składników i ich łącznego profilu odżywczego.
Jak działa oszacowanie porcji bez czujnika głębokości?
Gdy nie ma dostępnego czujnika LiDAR lub czasu przelotu, pipeline korzysta z modelu estymacji głębokości z jednego oka (takiego jak MiDaS lub DPT), aby wywnioskować przybliżoną głębokość tylko z obrazu RGB. Modele te były trenowane na milionach par obraz-głębokość i mogą oszacować trójwymiarowy kształt jedzenia na podstawie kontekstowych wskazówek, takich jak geometria talerza, wzory cieni i gradienty tekstury. System wykrywa również obiekty odniesienia o znanych rozmiarach, szczególnie talerze i sztućce, aby ustalić skalę. Chociaż estymacja z jednego oka jest mniej precyzyjna niż pomiar głębokości sprzętowej, połączenie nauczonych wskazówek głębokości i skalowania odniesienia utrzymuje oszacowania porcji w praktycznym zakresie dokładności dla śledzenia odżywiania.
Czy pipeline radzi sobie z wieloma talerzami lub posiłkami na jednym zdjęciu?
Etap wykrywania obiektów jest zaprojektowany do obsługi dowolnej liczby produktów spożywczych, niezależnie od tego, czy znajdują się na jednym talerzu, czy na kilku. Głowy detekcyjne YOLO i DETR skanują cały obraz i generują niezależne detekcje dla każdego wykrytego produktu spożywczego, niezależnie od tego, czy znajdują się na jednym talerzu obiadowym, rozłożone na stole z wieloma daniami, czy ułożone na tacy. Każdy wykryty produkt jest przetwarzany niezależnie przez etapy szacowania porcji i obliczania kalorii. Dla najlepszej dokładności Nutrola zaleca fotografowanie każdego talerza lub miski z osobna, aby skalowanie odniesienia mogło być kalibrowane dla każdego talerza, ale system radzi sobie z wieloma talerzami w scenach, gdy to nie jest praktyczne.
Gotowy, aby przeksztalcic sledzenie zywienia?
Dolacz do tysiecy osob, ktore przeksztalcily swoja podroz zdrowotna z Nutrola!