Výzkum za technologií rozpoznávání potravin Nutrola
Jak Nutrola identifikuje jídlo z fotografie za méně než 3 sekundy? Podrobný pohled na výzkum počítačového vidění, hlubokého učení a nutriční vědy, který pohání naši AI.
Když vyfotíte svou večeři a Nutrola vám vrátí kompletní nutriční přehled za méně než tři sekundy, za tímto okamžikem se skrývá desetiletí výzkumu v oblasti počítačového vidění, nutriční vědy a inženýrství AI. To, co se zdá jako jediné okamžité rozpoznání, je ve skutečnosti kaskáda specializovaných modelů, z nichž každý řeší specifický vědecký problém. Od chvíle, kdy spustíte závěrku fotoaparátu, až po okamžik, kdy se na obrazovce objeví hodnoty makroživin, vaše fotografie prochází potrubím postaveným na základním výzkumu institucí jako Stanford, MIT, Google DeepMind a ETH Zurich Computer Vision Lab.
Tento článek sleduje toto potrubí krok za krokem a uvádí skutečný výzkum a technické koncepty, které umožňují rozpoznávání potravin Nutrola.
Počítačové vidění
Rozpoznávání potravin Nutrola není jedním modelem. Je to vícestupňové potrubí, kde každý stupeň zpracovává samostatný úkol a výstup jednoho stupně přechází do dalšího.
Stupeň 1 -- Předzpracování obrázků. Než jakákoliv neuronová síť uvidí vaši fotografii, surový obrázek prochází normalizací. To zahrnuje změnu velikosti na standardní vstupní rozlišení, úpravu vyvážení bílé a expozice a aplikaci transformací datové augmentace během tréninku. Výzkum Krizhevského, Sutskevera a Hintona ve jejich přelomovém článku o ImageNet z roku 2012 prokázal, že předzpracování a augmentace dramaticky zlepšují generalizaci v hlubokých konvolučních neuronových sítích (CNN). Moderní potrubí tuto techniku rozšiřují o metody jako CutMix (Yun et al., 2019) a RandAugment (Cubuk et al., 2020), které učí model být odolný vůči zakrytí a změnám barev, které jsou běžné v potravinové fotografii.
Stupeň 2 -- Detekce a segmentace potravin. Jakmile je obrázek předzpracován, prochází modelem detekce objektů, který identifikuje a lokalizuje každou jednotlivou potravinu na talíři. Tento stupeň se silně opírá o výzkum regionálně založených konvolučních neuronových sítí. Faster R-CNN (Ren et al., 2015) zavedl paradigmu sítí pro návrh regionů, zatímco novější architektury jako DETR (Carion et al., 2020) od Facebook AI Research používají transformátorovou pozornost, aby zcela eliminovaly ručně navržené komponenty jako kotvící boxy. Pro přesnost na úrovni pixelů modely pro semantickou segmentaci založené na architekturách jako DeepLab (Chen et al., 2017) přiřazují každému pixelu v obrázku kategorii potravin, což je klíčové pro smíšená jídla, kde se ingredience překrývají.
Stupeň 3 -- Klasifikace potravin. Každá detekovaná oblast potravin je poté klasifikována. Základ moderních klasifikátorů potravin vychází z architektur ověřených na ImageNet (Deng et al., 2009), což je dataset 14 milionů označených obrázků, který katalyzoval revoluci hlubokého učení. Specifické datasety jako Food-101 (Bossard et al., 2014), který obsahuje 101 000 obrázků napříč 101 kategoriemi, a UECFOOD-256 (Kawano a Yanai, 2015), který pokrývá 256 kategorií potravin se zaměřením na japonskou kuchyni, poskytují doménově specifická tréninková data potřebná k doladění těchto architektur pro rozpoznávání potravin.
Stupeň 4 -- Odhad porcí. Po identifikaci toho, co je na talíři, systém odhaduje, kolik každé položky je přítomno. To je nejtěžší nevyřešený problém v oblasti výzkumu rozpoznávání potravin a zahrnuje odhad hloubky a objemové uvažování z jediného 2D obrázku.
Stupeň 5 -- Nutriční mapování. Nakonec jsou klasifikovaná potravina a její odhadovaná velikost porce mapovány na ověřenou nutriční databázi, aby se získaly hodnoty kalorií, bílkovin, sacharidů, tuků a mikroživin.
Každý z těchto stupňů představuje specifickou oblast aktivního výzkumu. Následující části podrobně zkoumají nejtěžší technické fáze.
Klasifikace potravin: Více než "To je salát"
Rozlišit salát od steak je pro jakýkoliv moderní klasifikátor snadné. Skutečná výzva nastává, když systém musí rozlišit mezi vizuálně podobnými pokrmy: chicken tikka masala versus butter chicken, pad thai versus drunken noodles, nebo řecký salát versus fattoush. Tyto pokrmy sdílejí barvy, textury a struktury, ale významně se liší v ingrediencích a hustotě kalorií.
Přenosové učení a adaptace na doménu
Standardní přístup k klasifikaci potravin se spoléhá na přenosové učení, techniku, kterou formalizovali Yosinski et al. (2014), kde je model předtrénován na velkém obecném datasetu jako ImageNet a poté doladěn na specifických datech o potravinách. Nižší vrstvy sítě, které detekují hrany, textury a základní tvary, se dobře přenášejí mezi doménami. Vyšší vrstvy, které kódují sémantický význam, jsou přeškoleny, aby se naučily specifické rysy potravin, jako je rozdíl mezi lesklým povrchem smaženého jídla a matným povrchem dušeného.
Výzkum Hassannejad et al. (2016) prokázal, že doladění InceptionV3 na Food-101 dosáhlo přesnosti top-1 88,28 procenta, což je významný skok oproti dřívějším přístupům založeným na ručně navržených znacích. Novější práce využívající Vision Transformers (Dosovitskiy et al., 2020) a jejich potravinové varianty posunuly přesnost na Food-101 nad 93 procent.
Klasifikace s více štítky pro složité talíře
Skutečná jídla zřídka obsahují jedinou položku. Typický talíř večeře může obsahovat grilovaného lososa, pečené chřesty, quinou a citronovo máslovou omáčku. Klasifikace s více štítky, kde může jeden obrázek obdržet více nezávislých štítků, tento problém řeší. Výzkum Wang et al. (2016) na architekturách CNN-RNN pro klasifikaci obrázků s více štítky stanovil rámce, které zachycují vzory koexistence štítků. V oblasti potravin to znamená, že model se učí, že rýže a kari se často objevují společně, což slouží jako kontextový signál, který zlepšuje přesnost jednotlivých položek potravin.
Nutrola to rozšiřuje pomocí hierarchického klasifikačního systému. Místo předpovídání plochého štítku systém nejprve klasifikuje širokou kategorii potravin (obiloviny, bílkoviny, zelenina, omáčka) a poté se zúží na konkrétní položku v rámci této kategorie. Tento dvoustupňový přístup snižuje zmatek mezi vizuálně podobnými položkami z různých kategorií a odráží způsob, jakým jsou organizovány nutriční databáze.
Odhad porcí: Výzva 3D
Identifikace toho, co je na talíři, řeší pouze polovinu problému. 100-gramová porce kuřecího prsa obsahuje 165 kalorií. 250-gramová porce obsahuje 412 kalorií. Bez přesného odhadu porcí dokonce i dokonalá identifikace potravin produkuje nespolehlivé počty kalorií.
Odhad hloubky z jednoho oka
Odhad objemu potravin z jediného 2D fotografie vyžaduje, aby systém odhadoval hloubku, což je problém známý jako odhad hloubky z jednoho oka. Eigen, Puhrsch a Fergus (2014) publikovali základní práci, která prokázala, že CNN mohou předpovídat mapy hloubky na úrovni pixelů z jednotlivých obrázků. Novější výzkum od Ranftl et al. (2021) představil MiDaS, model trénovaný na smíšených datasetech, který produkuje robustní relativní odhady hloubky napříč různými scénami.
Pro aplikace v oblasti potravin umožňuje odhad hloubky systému rozlišovat mezi tenkou vrstvou omáčky rozloženou po talíři a hlubokou miskou polévky. V kombinaci se známou geometrií běžných referenčních objektů, jako jsou talíře, mísy a příbory, lze hloubkové mapy převést na přibližné odhady objemu.
Geometrické přístupy k odhadu objemu
Výzkum z Tokijské univerzity (Okamoto a Yanai, 2016) prokázal, že objem potravin lze odhadnout přizpůsobením geometrických primitiv, jako jsou válce, polokoule a obdélníkové kvádry, k segmentovaným oblastem potravin. Hromada rýže se přibližně rovná půl-ellipsoidu. Sklenice mléka se přibližně rovná válci. Plátek chleba se přibližně rovná obdélníkovému kvádru.
Tyto geometrické aproximace, kombinované s naučenými hustotními priora (systém ví, že daný objem bramborové kaše váží více než stejný objem popcornu), produkují odhady hmotnosti, které výzkum prokázal, že se pohybují v rozmezí 15 až 20 procent od skutečné hodnoty pro většinu běžných potravin. Nutrola tyto odhady dále zpřesňuje pomocí proprietárního přístupu, který kombinuje geometrické uvažování s naučenými regresními modely trénovanými na desítkách tisíc obrázků potravin s známými hmotnostmi.
Kalibrace referenčních objektů
Některé systémy pro rozpoznávání potravin používají známé referenční objekty ve scéně pro kalibraci měřítka. Standardní talíř na večeři má průměr přibližně 26 centimetrů. Kreditní karta měří 85,6 na 53,98 milimetrů. Když systém detekuje takové objekty, může stanovit reálné měřítko, které významně zlepšuje odhady objemu a hmotnosti. Výzkum Fang et al. (2016) na Purdue University ukázal, že kalibrace na základě talířů snížila chybu odhadu porcí přibližně o 25 procent ve srovnání s nekalibrovanými přístupy.
Ověřená databázová vrstva
Samotné rozpoznávání AI nestačí k tomu, aby poskytlo přesné počty kalorií. I když model dosáhne 99 procentní přesnosti při identifikaci grilovaného kuřecího prsa, konečný nutriční výstup závisí výhradně na kvalitě databáze, na kterou je mapován.
Tady se přístup Nutrola liší od mnoha konkurentů. Většina aplikací pro sledování potravin spoléhá na crowdsourced databáze, kde může jakýkoliv uživatel zaslat nutriční informace. Studie zjistily, že crowdsourced databáze potravin obsahují chybovost mezi 15 a 30 procenty, přičemž některé záznamy se liší od laboratorně ověřených hodnot o více než 50 procent pro klíčové makroživiny.
Nutrola udržuje 100 procentně ověřenou nutriční databázi. Každý záznam je křížově ověřen s autoritativními zdroji, včetně USDA FoodData Central, tabulek složení McCance a Widdowson používaných britskou Národní zdravotní službou a recenzovaných nutričních analýz. To znamená, že i když vrstva AI pro rozpoznávání zavádí malou chybu v identifikaci potravin nebo odhadu porcí, nutriční data, na která se mapuje, jsou spolehlivá.
Ověřovací vrstva také zohledňuje jemnost, kterou čisté přístupy AI přehlížejí: způsob přípravy ovlivňuje nutriční obsah. 150-gramové kuřecí prso, které je grilované, obsahuje přibližně 165 kalorií, ale stejné prso smažené na olivovém oleji obsahuje přibližně 230 kalorií. Databáze Nutrola zachycuje tyto variace závislé na přípravě a model rozpoznávání je trénován k rozlišení mezi metodami vaření, když jsou přítomny vizuální signály, jako je rozdíl mezi grilovaným a smaženým povrchem.
Kontinuální učení a zlepšování
Rozpoznávání potravin není problém, který je jednou vyřešen a nasazen. Kuchyně se vyvíjejí, nové pokrmy se objevují a očekávání uživatelů rostou. Systém Nutrola je navržen pro kontinuální zlepšování prostřednictvím několika mechanismů založených na výzkumu strojového učení.
Aktivní učení
Aktivní učení, formalizované Settlesem (2009), je strategie, kde model identifikuje příklady, u kterých má nejmenší jistotu, a upřednostňuje je pro lidskou revizi a označování. Když systém Nutrola narazí na pokrm, který nemůže s vysokou jistotou klasifikovat, tato fotografie je označena pro odbornou revizi. Jakmile je označena, vstupuje do tréninkového potrubí a model se zlepšuje přesně v těch případech, kde byl nejslabší.
Tento přístup je mnohem efektivnější na data než náhodné shromažďování dalších tréninkových obrázků. Výzkum konzistentně ukázal, že aktivní učení může dosáhnout ekvivalentní přesnosti modelu s 30 až 60 procenty méně označených dat ve srovnání s náhodným vzorkováním.
Řešení nových potravin a regionálních kuchyní
Jednou z nejvýznamnějších výzev v rozpoznávání potravin je pokrytí regionálních a kulturně specifických pokrmů. Model trénovaný převážně na západní kuchyni může mít potíže s dezerty jihovýchodní Asie, západoafrickými dušenými pokrmy nebo skandinávskými fermentovanými potravinami. Nutrola to řeší prostřednictvím cílených sběrných kampaní zaměřených na nedostatečně zastoupené kuchyně, kombinovaných s technikami few-shot learning (Wang et al., 2020), které umožňují modelu naučit se nové kategorie potravin z relativně malého počtu příkladů.
Zpětná vazba od uživatelů je kritickým vstupem do tohoto procesu. Když uživatel opraví nesprávně identifikovanou potravinu, tato oprava se vrací do tréninkového potrubí. Agregováno napříč miliony jídel zaznamenaných globálně vytváří tyto opravy kontinuální tok dat pravdy, který pokrývá přesně ty potraviny, které lidé skutečně jedí ve svém každodenním životě.
Jak se to promítá na vašem talíři
Výzkum popsaný výše přináší konkrétní výhody, které zažíváte pokaždé, když otevřete Nutrola.
Záznam za tři sekundy. Celé potrubí, od předzpracování obrázků po nutriční vyhledávání, se provádí za méně než tři sekundy na moderním smartphonu. Techniky optimalizace modelu, včetně kvantizace (Jacob et al., 2018) a vyhledávání neuronových architektur (Zoph a Le, 2017), umožňují složitým modelům běžet efektivně na mobilním hardwaru bez ztráty přesnosti.
Zpracování složitých jídel. Detekce s více štítky a semantická segmentace znamenají, že nemusíte fotografovat každou potravinovou položku zvlášť. Jediná fotografie nabitého talíře produkuje jednotlivé nutriční přehledy pro každou složku.
Přesnost napříč kuchyněmi. Kontinuální učení a cílené sběrné kampaně zajišťují, že systém funguje, ať už jíte sushi v Tokiu, tacos v Mexico City, injera v Addis Abebě nebo nedělní pečeni v Londýně. Model se zlepšuje s každým jídlem zaznamenaným napříč globální uživatelskou základnou Nutrola.
Postupné zlepšování přesnosti. Čím více Nutrolu používáte, tím lépe se zlepšuje, jak pro vás jednotlivě, tak pro všechny uživatele kolektivně. Aktivní učení zajišťuje, že se model zaměřuje na zlepšení přesně v těch případech, kde to nejvíce potřebuje.
Ověřená nutriční data. Na rozdíl od aplikací, které se spoléhají na crowdsourced databáze s neznámými chybovostmi, každé číslo kalorií, které Nutrola vrací, je podloženo laboratorně ověřenými nutričními daty. AI identifikuje jídlo; ověřená databáze zajišťuje, že čísla jsou správná.
Často kladené otázky
Jak AI Nutrola rozpoznává jídlo z fotografie?
Nutrola používá vícestupňové potrubí počítačového vidění. Vaše fotografie nejprve prochází předzpracováním obrázků, poté prochází modelem detekce hlubokého učení, který identifikuje a segmentuje každou potravinovou položku na talíři. Každá položka je klasifikována pomocí konvolučních neuronových sítí doladěných na specifických datasetech o potravinách, její porce je odhadována pomocí hloubkového a objemového uvažování a výsledek je mapován na ověřenou nutriční databázi Nutrola, aby se získaly hodnoty kalorií a makroživin.
Jak přesná je technologie rozpoznávání potravin Nutrola?
Klasifikační modely Nutrola dosahují přesnosti top-1 nad 90 procent na standardních benchmarkech rozpoznávání potravin, přičemž přesnost top-5 přesahuje 95 procent. U odhadu porcí se systém obvykle pohybuje v rozmezí 15 až 20 procent skutečné hmotnosti, což je srovnatelné nebo lepší než přesnost odhadu vyškolených dietologů. V kombinaci s ověřenou databází Nutrola to produkuje odhady kalorií, které jsou výrazně spolehlivější než manuální sledování, které podle výzkumu podhodnocuje příjem o 10 až 45 procent.
Jaký výzkum a datasety pohánějí AI pro rozpoznávání potravin Nutrola?
Technologie Nutrola vychází ze základního výzkumu počítačového vidění, včetně konvolučních neuronových sítí ověřených na ImageNet, architektur detekce objektů jako Faster R-CNN a DETR, a specifických datasetech o potravinách, včetně Food-101 a UECFOOD-256. Systém také čerpá z výzkumu odhadu hloubky z jednoho oka pro velikost porcí a výzkumu aktivního učení pro kontinuální zlepšování modelu. Všechna nutriční data jsou ověřena proti autoritativním zdrojům, jako je USDA FoodData Central.
Může Nutrola rozpoznat více potravin na jednom talíři?
Ano. Nutrola používá detekci s více štítky a semantickou segmentaci k identifikaci a samostatné analýze každé jednotlivé potravinové položky na jediné fotografii. Ať už váš talíř obsahuje dvě položky nebo osm, systém izoluje každou z nich, klasifikuje ji nezávisle, odhaduje její porci a vrací nutriční přehled pro každou položku spolu s celkovým součtem jídla.
Jak Nutrola zachází s potravinami z různých kuchyní a kultur?
Nutrola kombinuje široce pokrývající tréninková data s cíleným sběrem dat pro nedostatečně zastoupené kuchyně a technikami few-shot learning, které umožňují modelu naučit se nové kategorie potravin z relativně malého počtu příkladů. Opravy od uživatelů z globální uživatelské základny Nutrola se neustále vracejí do tréninkového potrubí, což zajišťuje, že přesnost se zlepšuje pro specifické pokrmy, které lidé skutečně jedí v každém regionu a potravinové kultuře.
Zlepšuje se rozpoznávání potravin Nutrola v průběhu času?
Ano. Nutrola používá aktivní učení, strategii strojového učení, kde systém identifikuje obrázky, u kterých má nejmenší jistotu, a upřednostňuje je pro odbornou revizi a přeškolení. V kombinaci s agregovanou zpětnou vazbou uživatelů z milionů jídel zaznamenaných globálně to znamená, že se model neustále zlepšuje. Každé jídlo, které zaznamenáte, přispívá k tomu, aby bylo rozpoznávání Nutrola přesnější pro všechny uživatele.
Připraveni proměnit sledování výživy?
Přidejte se k tisícům, kteří svou cestu ke zdraví proměnili s Nutrola!