Test dokładności · październik 2026
Przetestowaliśmy szacunki węglowodanów Soba na 400 zdjęciach posiłków
Zdjęcia pochodzą z dwóch publicznych zbiorów danych badawczych, w których węglowodany każdego posiłku ustalono przez ważenie lub zapis. Poniżej są wyniki, metoda i posiłki, przy których Soba się pomyliła.
68,5%posiłków w granicach 10 g od rzeczywistej ilości węglowodanów, z jednego zdjęcia
+4punkty procentowe więcej w granicach 10 g, gdy podpowiedź nazywała produkty dokładnie tak, jak zapisano je w badaniu
5,2 gmediana błędu z jednego zdjęcia
Co ustaliliśmy
Liczby w tej części to pierwsze szacunki Soba z samego zdjęcia, zanim ktokolwiek poprawił wagę lub dodał podpowiedź. 49% szacunków mieściło się w granicach 5 g od rzeczywistej ilości węglowodanów. Przedział ufności 95% dla odsetka w granicach 10 g wynosi od 64,0% do 72,9%.
Najbliżej rzeczywistości były małe i średnie posiłki. Dla posiłków poniżej 15 g węglowodanów 89% szacunków mieściło się w granicach 10 g.
Duże posiłki były zwykle niedoszacowane. W 38 z 42 posiłków z 60 g węglowodanów lub więcej szacunek Soba był za niski. Mediana szacunku wyniosła 64% rzeczywistej ilości. Główną przyczyną jest waga porcji: w 30 z tych 38 posiłków Soba oceniła wagę jedzenia na co najmniej 15% mniejszą od rzeczywistej, a węglowodany na 100 g podawała zwykle blisko prawdy.
Co to oznacza, gdy korzystasz z Soba
- Przy dużym talerzu chleba, ryżu, makaronu, ziemniaków lub pizzy zważ główny produkt z węglowodanami, jeśli możesz. Szacunki 40 g lub więcej myliły się w obie strony: z 84 posiłków 32 wyszły o ponad 10 g za wysoko, a 23 za nisko.
- Pojedyncze małe produkty, takie jak ciastko lub kawałek pizzy, czasem wychodzą cięższe, niż są.
- Cukru rozpuszczonego w napoju nie widać na zdjęciu. W teście słodka mrożona herbata została odczytana jako niesłodzona. Dodaj krótką podpowiedź, na przykład „słodka herbata”, albo zeskanuj kod kreskowy.
- Przy produktach paczkowanych kod kreskowy daje wartości z etykiety.
Co możesz dodać w aplikacji
Powyższe wyniki pochodzą wyłącznie z jednego zdjęcia. W aplikacji możesz dodać kilka słów o posiłku, a na iPhone’ach z aparatem głębi Soba mierzy też odległość do jedzenia. Powtórzyliśmy test z każdą z tych opcji.
Wszystkie 400 zdjęć
200 zdjęć ze stołówki z danymi o głębi
Podpowiedź tekstowa
Kilka słów, takich jak „słodka herbata” albo „kasza gryczana”, dodaje to, czego zdjęcie nie pokaże. W teście każde z 400 zdjęć dostało podpowiedź z nazwami głównych produktów z zapisu w zbiorze danych, bez ilości, na przykład „Coffee, brewed; Coffee creamer, liquid, fat free”. Odsetek w granicach 10 g wzrósł z 68,5% do 72,8% (przedział 95% dla przyrostu: od 0,7 do 7,9 punktu), a mediana błędu spadła z 5,2 do 4,5 g.
Podpowiedź pomogła najbardziej tam, gdzie zdjęcie dało się odczytać na więcej niż jeden sposób. Bez niej Soba wzięła tę kawę z zabielaczem za sos karmelowy i oszacowała 162 g węglowodanów. Z podpowiedzią oszacowała 5,5 g, a zapis żywieniowy podaje 2,7 g. Na zdjęciach SNAPMe, które ludzie robili własnym posiłkom, odsetek w granicach 10 g wzrósł z 59,5% do 67,5%. Na zdjęciach ze stołówki, gdzie produkty łatwo rozpoznać, prawie się nie zmienił: z 77,5% do 78,0%.
Podpowiedź nazywa produkt, a ilość Soba nadal ocenia ze zdjęcia. Duże posiłki były niedoszacowane w 37 z 42 przypadków z podpowiedzią i w 38 bez niej. Podpowiedzi testowe dokładnie kopiowały zapisy ze zbiorów danych. Większość przyrostu przypadła na pierwszy zestaw 200 posiłków, 8,0 punktu; w drugim zestawie było to 0,5. Podpowiedź wpisana przez ciebie prawdopodobnie doda mniej.
Odległość z aparatu głębi
Gdy robisz zdjęcie aparatem w Soba na iPhonie ze skanerem LiDAR lub co najmniej dwoma tylnymi aparatami, Soba mierzy odległość do jedzenia i przekazuje modelowi szerokość kadru w centymetrach. Nutrition5k zawiera nagranie z kamery głębi dla każdego zdjęcia, więc powtórzyliśmy jego 200 posiłków z tym pomiarem. Odsetek w granicach 10 g wzrósł z 77,5% do 82,0% (przedział 95% dla przyrostu: od 1,0 do 8,3 punktu), a mediana błędu spadła z 3,9 do 3,1 g. Duże posiłki nadal były niedoszacowane, w 12 z 13 przypadków. Te zdjęcia zrobiono prosto z góry, ze stałej wysokości. Zdjęć robionych pod kątem jeszcze nie mierzyliśmy.
Z pomiarem głębi i podpowiedzią jednocześnie wynik wyniósł 78,5%. Na tych zdjęciach ze stołówki podpowiedź miała niewiele do dodania, a przedział 95% dla różnicy względem samej głębi, od −8,8 do +1,5 punktu, obejmuje zero.
Twoje poprawki
Jeśli znasz wagę porcji, wpisz ją, a wszystkie liczby się przeliczą. W tym teście waga porcji była główną przyczyną dużych błędów.
Soba pokazuje zakres wagi przy każdym szacunku. Na 200 zważonych talerzach z Nutrition5k prawdziwa waga talerza mieściła się w tym zakresie w 97 przypadkach, czyli mniej więcej w połowie. Zakres pokazuje, gdzie według modelu powinna być waga. Najpewniej sprawdzisz ją wagą kuchenną.
Wyniki według wielkości posiłku
| Rzeczywiste węglowodany | Posiłki | W granicach 10 g | W granicach 20 g | Mediana błędu |
|---|---|---|---|---|
| Poniżej 15 g | 167 | 88,6% | 98,8% | 2,0 g |
| Od 15 do 30 g | 94 | 69,1% | 88,3% | 6,2 g |
| Od 30 do 60 g | 97 | 54,6% | 84,5% | 8,4 g |
| 60 g lub więcej | 42 | 19,0% | 38,1% | 25,4 g |
Wynik ogólny zależy od tego składu: 42% posiłków w teście miało mniej niż 15 g węglowodanów. Jeśli zwykle jesz większe posiłki, spodziewaj się większego typowego błędu.
Te grupy opierają się na rzeczywistych węglowodanach, których aplikacja w chwili skanu nie zna. W grupach według szacunku Soba 84 posiłki wyszły na 40 g lub więcej, a 55 z nich różniło się o ponad 10 g: 32 za wysoko i 23 za nisko. Dlatego aplikacja proponuje zważenie głównego produktu z węglowodanami, gdy szacunek osiąga 40 g.
Cztery posiłki z testu
Dwa bliskie szacunki i dwa chybione. Nazwy produktów i wagi pochodzą z odpowiedzi Soba.
Zdjęcia: zbiór danych Nutrition5k, Google Research, CC BY 4.0. Zmniejszone na potrzeby tej strony.
Dwa zbiory danych, dwa rodzaje zdjęć
| Zbiór danych, po 200 posiłków | W granicach 10 g | Mediana błędu | Średni błąd |
|---|---|---|---|
| Nutrition5k | 77,5% | 3,9 g | 6,8 g |
| SNAPMe | 59,5% | 6,8 g | 12,2 g |
Talerze z Nutrition5k pochodzą ze stołówek Google. Każdy składnik zważono, a każde zdjęcie zrobił nieruchomy aparat prosto z góry. To czyste warunki i tutaj Soba wypadła najlepiej.
SNAPMe to badanie Departamentu Rolnictwa USA i UC Davis. 95 osób w USA fotografowało własne posiłki przed jedzeniem i prowadziło dziennik żywieniowy w ASA24, narzędziu do oceny sposobu żywienia. Zdjęcia wyglądają jak te, które ludzie robią w Soba. Wartości referencyjne pochodzą z dzienników żywieniowych uczestników, które same zawierają błędy. Część różnicy między zbiorami wynika ze zdjęć, a część z wartości referencyjnych.
Porównanie z opublikowanym badaniem
Rodríguez-Jiménez i współpracownicy (Nutrients, 2025) przetestowali ChatGPT-5 na 74 posiłkach z SNAPMe, używając wyłącznie zdjęć. Podają średni błąd bezwzględny 12,99 g węglowodanów i medianę 8,75 g.
| Tylko zdjęcie | Posiłki | Średni błąd | Mediana błędu |
|---|---|---|---|
| ChatGPT-5 (opublikowane) | 74 | 12,99 g | 8,75 g |
| Soba | 200 | 12,2 g | 6,8 g |
Autorzy wybrali posiłki inaczej i część wartości referencyjnych poprawili ręcznie, więc oba wiersze można porównywać tylko w przybliżeniu. Pokazują podobny poziom błędu. W tym samym badaniu krótka notatka o tłuszczu, cukrze i mięsie w posiłku obniżyła średni błąd do 11,29 g. W Soba podpowiedź z nazwami produktów obniżyła średni błąd na 200 posiłkach z SNAPMe z 12,2 do 10,2 g.
Jakiego modelu używa Soba
Uruchomiliśmy osiem modeli na pierwszych 200 posiłkach z instrukcjami Soba.
| Model | W granicach 10 g | Mediana czasu |
|---|---|---|
| Google Gemini 3.7 Flash | 73,0% | 3,7 s |
| Google Gemini 3.8 Flash | 71,5% | 4,8 s |
| Google Gemini 3.5 Flash-Lite | 69,0% | 2,1 s |
| Google Gemini 3.6 Flash | 67,5% | 3,3 s |
| OpenAI GPT-6 Luna | 65,0% | 6,9 s |
| OpenAI GPT-6 Luna Pro | 63,0% | 11,7 s |
| OpenAI GPT-6.1 Sol | 58,0% | 13,1 s |
| Anthropic Claude Sonnet 5.5 | 53,0% | 6,0 s |
Jeden przebieg na model przez OpenRouter, z ustawieniami zapytań, których Soba używała przed październikiem 2026. Claude Sonnet 5.5 zwrócił pusty produkt dla 41 z 200 zdjęć u dostawcy wybranego przez OpenRouter. Na pozostałych zdjęciach osiągnął 66,7%. GPT-6.1 Sol zawyżał węglowodany średnio o 10 g.
Gemini 3.7 Flash prowadził na tych 200 posiłkach. Model, który wygrywa jedno porównanie z ośmiu, często wygląda lepiej, niż jest naprawdę, więc sprawdziliśmy go na drugim zestawie 200 posiłków. Tam uzyskał ten sam wynik co Gemini 3.6 Flash, po 70,5%, przy wyższej cenie. Soba zostaje przy Gemini 3.6 Flash.
Sprawdziliśmy też wariant, w którym Gemini 3.6 Flash ma więcej czasu na rozumowanie. Na 400 posiłkach odsetek w granicach 10 g wzrósł o 4,1 punktu, a odsetek w granicach 5 g i liczba błędów powyżej 30 g pozostały takie same. Każdy skan trwał dwa razy dłużej, 6,6 sekundy zamiast 3,5. Zostawiliśmy szybsze ustawienie.
Pełne porównanie z przedziałami 95%, danymi dla każdego posiłku i skryptem, który przelicza każdą tabelę: osiem modeli AI na zdjęciach posiłków (po angielsku).
Jak przeprowadziliśmy test
Wybór posiłków
Pula początkowa obejmowała 505 talerzy Nutrition5k z oficjalnego podziału testowego zbioru dla zdjęć z góry i 1457 zdjęć SNAPMe zrobionych przed jedzeniem. Wcześniej usunęliśmy 22 pozycje: talerze i posiłki z błędnymi wartościami oraz zdjęcia SNAPMe, których nie dało się przypisać do dokładnie jednego zapisu żywieniowego.
Skrypt ze stałym ziarnem losowania wybrał po 100 posiłków z każdego zbioru: po 25 z każdej ćwiartki zakresu węglowodanów. Talerze ze stołówki sfotografowane w ciągu tych samych dziesięciu minut często wyglądają podobnie, więc skrypt ograniczał liczbę talerzy z jednego dziesięciominutowego okna. Potem w ten sam sposób wybrał drugi zestaw 200 posiłków, bez zdjęć i posiłków wspólnych z pierwszym zestawem.
Dwa zestawy
Błędy analizowaliśmy i zmiany w instrukcjach Soba testowaliśmy tylko na pierwszych 200 posiłkach. Drugie 200 służyło do sprawdzenia, czy wynik się utrzymuje. W ten sposób wyłapaliśmy opisany wyżej wynik Gemini 3.7 Flash.
Uruchomienie Soba
Każde zdjęcie przeszło przez ten sam kod serwera, którego używa aplikacja: te same instrukcje, model i ustawienia. Zdjęcia zmniejszono do 1024 pikseli na dłuższym boku, tak jak robi to aplikacja przed wysłaniem. Główny przebieg odbył się bez podpowiedzi tekstowej, bez danych z aparatu głębi i bez późniejszych poprawek. Przebiegi z podpowiedzią lub danymi o głębi używały tego samego kodu i zmieniały tylko te dane wejściowe. Język aplikacji był ustawiony na rosyjski.
Pomiar błędu
Soba podaje węglowodany netto (bez błonnika) i osobno błonnik. Zbiory danych podają węglowodany ogółem, więc porównaliśmy sumę węglowodanów netto i błonnika z Soba z wartością ogólną. Główną miarą jest odsetek posiłków, w których różnica wynosi 10 g lub mniej. Nieudany skan liczyłby się jako chybiony; takich skanów nie było. Przedział 95% pochodzi z metody bootstrap z 10 000 powtórzeń losowania, która trzyma razem posiłki jednego uczestnika SNAPMe lub jednego dziesięciominutowego okna stołówki.
Ograniczenia tego testu
- Wszystkie posiłki pochodzą z USA. Talerze Nutrition5k fotografowano prosto z góry przy jednym ustawieniu aparatu.
- Wartości referencyjne zawierają błędy. Wartości SNAPMe pochodzą z dzienników żywieniowych prowadzonych przez samych uczestników. Część talerzy Nutrition5k ma opisy, w których brakuje widocznego jedzenia.
- Testowaliśmy rozpoznawanie ze zdjęć. Opisy tekstowe, wyszukiwanie po kodzie kreskowym i wpis ręczny były poza testem.
- Podpowiedzi testowe nazywały produkty dokładnie tak, jak zapisano je w zbiorach danych, a ich przyrost bardzo się różnił między dwoma zestawami posiłków (zobacz „Podpowiedź tekstowa”).
- Wynik z głębią obejmuje tylko 200 zdjęć Nutrition5k, wszystkie zrobione prosto z góry.
- Mierzyliśmy węglowodany. Białko, tłuszcz i kalorie są poza zakresem tej strony.
- Dostawcy modeli aktualizują swoje modele. Wyniki opisują Soba w październiku 2026.
Soba nie jest wyrobem medycznym. Jej liczby to szacunki. Porównuj je z jedzeniem na talerzu i z etykietami produktów oraz stosuj się do swojego planu leczenia cukrzycy.
Zmiany po teście
- Zapasowy model Soba od OpenAI nie mógł działać. Jednego ustawienia zapytania, temperatury, modele OpenAI nie przyjmują, a zapytanie dopuszczało tylko dostawców, którzy przyjmują wszystkie ustawienia. Usunęliśmy to ustawienie. Główny model uzyskał 68,9% z nim i 68,5% bez niego, co mieści się w zwykłym rozrzucie powtarzanych przebiegów. Zapasowymi modelami są teraz Gemini 3.7 Flash i GPT-6 Luna.
- W 9 z 3614 zapytań testowych (0,25%) Gemini powtarzał jedną frazę w kółko, a skan trwał od 35 do 87 sekund. Soba ogranicza teraz długość odpowiedzi, co wcześniej przerywa taką pętlę.
Dane i źródła
Wyniki dla każdego posiłku (CSV, 400 wierszy): identyfikator w zbiorze danych, węglowodany referencyjne, szacunek Soba z samego zdjęcia, tekst podpowiedzi oraz szacunki z podpowiedzią i z danymi o głębi. Plik jest udostępniony na licencji SNAPMe, CC BY-SA 4.0.
- Thames Q, Karpur A, Norris W, et al. Nutrition5k: Towards Automatic Nutritional Understanding of Generic Food. CVPR 2021. arXiv:2103.03375. Zbiór danych: github.com/google-research-datasets/Nutrition5k, CC BY 4.0.
- Larke JA, Chin EL, Bouzid YY, et al. Surveying Nutrient Assessment with Photographs of Meals (SNAPMe): A Benchmark Dataset of Food Photos for Dietary Assessment. Nutrients. 2023;15(23):4972. PMC10708545. Dane: USDA Ag Data Commons, CC BY-SA 4.0.
- Rodríguez-Jiménez et al. Image-Based Dietary Energy and Macronutrients Estimation with ChatGPT-5: Cross-Source Evaluation Across Escalating Context Scenarios. Nutrients. 2025;17(22):3613. PMC12655113.