Soba

Проверка точности · октябрь 2026

Мы проверили оценку углеводов Soba на 400 фото еды

Фото взяты из двух открытых научных датасетов, где углеводы каждого блюда взвешены или записаны. Ниже результаты, методика и блюда, где оценка Soba разошлась с реальностью.

68,5%блюд в пределах 10 г от реальных углеводов, по одному фото

+4пункта к этой доле, когда подсказка точно называла продукты из записи исследования

5,2 гмедианная ошибка по одному фото

400 фото, каждое распознано один раз с подсказкой и один раз без неё. В подсказке перечислены основные продукты без количеств, например «steak; cauliflower; chicken» (на английском, как в датасетах). Сбоев не было. Медианное время 3,1 секунды на фото.

Что получилось

Цифры в этом разделе показывают первую оценку Soba только по фото, без подсказки и до правки веса. 49% оценок отличаются от реальных углеводов не больше чем на 5 г. 95-процентный доверительный интервал для доли в пределах 10 г: от 64,0 до 72,9%.

Ближе всего оценки для небольших блюд. Если в блюде меньше 15 г углеводов, 89% оценок попадают в пределы 10 г.

Большие порции Soba обычно занижает. В 38 из 42 блюд, где углеводов 60 г и больше, оценка оказалась ниже реальной, в медиане 64% от реального количества. Главная причина в весе порции: в 30 из этих 38 блюд вес оценён минимум на 15% ниже настоящего, а углеводы на 100 г обычно близки к правде.

Как учитывать это в приложении

Что добавляет приложение

Результаты выше получены по одному фото без других данных. В приложении к фото можно добавить пару слов о блюде, а на iPhone с камерой глубины Soba ещё и измеряет расстояние до еды. Мы повторили тест с каждым из этих способов.

Доля блюд в пределах 10 г от реальных углеводов

Все 400 фото

Только фото68,5%
Фото и подсказка72,8%

200 фото из столовой с данными глубины

Только фото77,5%
Фото и глубина82,0%
Фото, глубина и подсказка78,5%

Текстовая подсказка

Несколько слов, например «сладкий чай» или «это гречка», добавляют то, чего не видно на фото. В тесте к каждому из 400 фото добавлена подсказка: названия основных продуктов из записи датасета без количеств, например «Coffee, brewed; Coffee creamer, liquid, fat free». Доля в пределах 10 г выросла с 68,5 до 72,8% (95-процентный интервал прироста от 0,7 до 7,9 пункта), медианная ошибка снизилась с 5,2 до 4,5 г.

Больше всего подсказка помогла там, где фото можно понять по-разному. Без неё Soba приняла этот кофе со сливками за карамельный соус и насчитала 162 г углеводов. С подсказкой оценка составила 5,5 г, по дневнику питания там 2,7 г. На фото SNAPMe, которые люди снимали сами, доля в пределах 10 г выросла с 59,5 до 67,5%. На фото из столовой, где продукты хорошо видны, она почти не изменилась: с 77,5 до 78,0%.

Подсказка называет продукт, а количество Soba по-прежнему оценивает по фото. Большие блюда занижены в 37 случаях из 42 с подсказкой и в 38 без неё. В тесте подсказки точно повторяли записи датасетов. Почти весь прирост дал первый набор из 200 блюд, 8,0 пункта; на втором наборе прирост составил 0,5. Ваша подсказка, скорее всего, даст меньше.

Расстояние от камеры глубины

Если снимать камерой Soba на iPhone со сканером LiDAR или с двумя и более задними камерами, Soba измеряет расстояние до еды и сообщает модели ширину кадра в сантиметрах. В Nutrition5k к каждому фото есть запись камеры глубины, поэтому мы повторили его 200 блюд с этим измерением. Доля в пределах 10 г выросла с 77,5 до 82,0% (95-процентный интервал прироста от 1,0 до 8,3 пункта), медианная ошибка снизилась с 3,9 до 3,1 г. Большие блюда по-прежнему занижались, в 12 случаях из 13. Эти фото сняты строго сверху с одной высоты. Фото под углом мы пока не измеряли.

С измерением глубины и подсказкой вместе получилось 78,5%. На фото из столовой подсказке почти нечего добавить, и 95-процентный интервал разницы с одной глубиной, от −8,8 до +1,5 пункта, включает ноль.

Ваши правки

Если вы знаете вес порции, введите его, и все цифры пересчитаются. В этом тесте вес порции был главной причиной больших ошибок.

Рядом с оценкой Soba показывает диапазон веса. На 200 взвешенных тарелках Nutrition5k реальный вес тарелки попал в этот диапазон в 97 случаях, примерно в половине. Диапазон показывает, где модель ожидает вес. Надёжнее всего проверить вес кухонными весами.

Результаты по размеру блюда

Углеводы в блюдеБлюдВ пределах 10 гВ пределах 20 гМедианная ошибка
Меньше 15 г16788,6%98,8%2,0 г
От 15 до 30 г9469,1%88,3%6,2 г
От 30 до 60 г9754,6%84,5%8,4 г
60 г и больше4219,0%38,1%25,4 г

Общий результат зависит от состава выборки: в 42% блюд теста было меньше 15 г углеводов. Если вы обычно едите большими порциями, типичная ошибка будет больше.

Эти группы построены по реальным углеводам, а их приложение при скане не знает. Если группировать по оценке Soba, 84 блюда получили оценку от 40 г, и у 55 из них ошибка больше 10 г: 32 завышены, 23 занижены. Поэтому при оценке от 40 г приложение советует взвесить продукт, в котором больше всего углеводов.

Диаграмма рассеяния 400 блюд: по горизонтали реальные углеводы, по вертикали оценка Soba. Примерно до 50 г большинство точек лежит в полосе ±10 г. Выше 60 г большинство точек лежит ниже полосы.
Все блюда теста. Точки в закрашенной полосе отличаются не больше чем на 10 г. Точки ниже пунктирной линии означают заниженную оценку. Один напиток, кофе со сливками, принятый за карамельный соус, получил 162 г и нарисован у верхнего края.

Четыре блюда из теста

Две близкие оценки и два промаха. Названия и вес продуктов взяты из ответов Soba.

Тарелка с двумя кусками кукурузы в початке, белым рисом, цветной капустой и яблоком.
Реально 49,7 г · Soba 49,7 гКукуруза, рис, цветная капуста и яблоко. Яблоко оценено в 130 г (на весах 117 г), кукуруза в 60 г (на весах 74 г). Ошибки в весе компенсировали друг друга.
Запечённый картофель с киноа и овощами на белой тарелке.
Реально 46,0 г · Soba 40,8 гЗапечённый картофель с киноа. Киноа распознана как кускус. Углеводов в них примерно поровну, поэтому итог остался близким.
Кусок сырной пиццы и шоколадное печенье на белой тарелке.
Реально 33,3 г · Soba 46,6 гКусок пиццы и печенье. Оба оценены тяжелее, чем были: пицца 85 г (на весах 47 г), печенье 35 г (на весах 27 г).
Четыре куска пиццы с ананасом, нарезанная курица и помидоры черри на белой тарелке.
Реально 85,1 г · Soba 59,8 гПицца с курицей, ананасом и помидорами. Пицца весила 233 г, оценка 180 г. Из 23 ошибок больше 30 г на блюда с 60 г углеводов и больше пришлось 16.

Фото: датасет Nutrition5k, Google Research, CC BY 4.0. Размер уменьшен для этой страницы.

Два датасета, два вида фото

Датасет, по 200 блюдВ пределах 10 гМедианная ошибкаСредняя ошибка
Nutrition5k77,5%3,9 г6,8 г
SNAPMe59,5%6,8 г12,2 г

Тарелки Nutrition5k собраны в столовых Google. Каждый ингредиент взвешен, а каждое фото сделано неподвижной камерой строго сверху. Условия здесь чистые, и результат Soba на этом датасете лучший.

SNAPMe собрали Министерство сельского хозяйства США и Калифорнийский университет в Дейвисе. 95 человек в США фотографировали свои блюда перед тем, как поесть, и вели дневник питания в ASA24, инструменте для оценки рациона. Эти фото похожи на те, что делают в Soba. Реальные значения здесь взяты из дневников участников, а в дневниках бывают свои ошибки. Разница между датасетами объясняется и самими фото, и точностью исходных значений.

Сравнение с опубликованным исследованием

Родригес-Хименес с соавторами (Nutrients, 2025) проверили ChatGPT-5 на 74 блюдах SNAPMe только по фото. Средняя абсолютная ошибка по углеводам у них 12,99 г, медиана 8,75 г.

Только фотоБлюдСредняя ошибкаМедианная ошибка
ChatGPT-5 (опубликовано)7412,99 г8,75 г
Soba20012,2 г6,8 г

Авторы отбирали блюда по-другому и часть исходных значений исправили вручную, поэтому сравнивать две строки можно только приблизительно. Уровень ошибки у них близкий. В том же исследовании короткая заметка о жире, сахаре и мясе в блюде снизила среднюю ошибку до 11,29 г. В Soba подсказка с названиями продуктов снизила среднюю ошибку на 200 блюдах SNAPMe из нашего теста с 12,2 до 10,2 г.

Какую модель использует Soba

Мы прогнали восемь моделей на первых 200 блюдах с инструкциями Soba.

МодельВ пределах 10 гМедианное время
Google Gemini 3.7 Flash73,0%3,7 с
Google Gemini 3.8 Flash71,5%4,8 с
Google Gemini 3.5 Flash-Lite69,0%2,1 с
Google Gemini 3.6 Flash67,5%3,3 с
OpenAI GPT-6 Luna65,0%6,9 с
OpenAI GPT-6 Luna Pro63,0%11,7 с
OpenAI GPT-6.1 Sol58,0%13,1 с
Anthropic Claude Sonnet 5.553,0%6,0 с

Каждая модель прогнана один раз через OpenRouter с настройками запроса, которые были в Soba до октября 2026 года. Claude Sonnet 5.5 у провайдера, которого выбрал OpenRouter, вернула пустой продукт для 41 фото из 200. На остальных фото у неё 66,7%. GPT-6.1 Sol в среднем завышала углеводы на 10 г.

На этих 200 блюдах лидировала Gemini 3.7 Flash. Когда восемь моделей сравнивают на одних и тех же блюдах, лучший результат отчасти объясняется везением, поэтому мы проверили её на втором наборе из 200 блюд. Там она набрала столько же, сколько Gemini 3.6 Flash, по 70,5%, и стоит дороже. Soba остаётся на Gemini 3.6 Flash.

Ещё мы дали Gemini 3.6 Flash больше времени на рассуждение. На 400 блюдах доля в пределах 10 г выросла на 4,1 пункта, а доля в пределах 5 г и число ошибок больше 30 г не изменились. Каждый скан шёл вдвое дольше, 6,6 секунды вместо 3,5. Мы оставили быструю настройку.

Как проводилась проверка

Отбор блюд

Исходный набор: 505 тарелок из официальной тестовой части Nutrition5k со снимками сверху и 1457 фото SNAPMe, сделанных до еды. Перед этим мы убрали 22 записи: тарелки и блюда с некорректными значениями и фото SNAPMe, которые нельзя однозначно связать с одной записью дневника.

Скрипт с фиксированным случайным зерном взял по 100 блюд из каждого датасета, по 25 из каждой четверти диапазона углеводов. Тарелки, снятые в столовой в пределах одних и тех же десяти минут, часто похожи, поэтому скрипт ограничил число тарелок из одного десятиминутного окна. Затем тем же способом был выбран второй набор из 200 блюд, без общих фото и блюд с первым.

Два набора

Ошибки мы разбирали и инструкции Soba меняли только на первых 200 блюдах. Второй набор служил для проверки, держится ли результат. Так выяснилось, что преимущество Gemini 3.7 Flash не подтвердилось.

Запуск Soba

Каждое фото прошло через тот же серверный код, что и в приложении: те же инструкции, модель и настройки. Фото уменьшены до 1024 пикселей по длинной стороне, как это делает приложение перед отправкой. В основном прогоне подсказок, данных камеры глубины и последующих правок не было. Прогоны с подсказкой или глубиной шли на том же коде, менялись только эти данные. Язык приложения: русский.

Как считалась ошибка

Soba показывает чистые углеводы (без клетчатки) и клетчатку отдельно. В датасетах указаны общие углеводы, поэтому мы сравнивали с ними сумму чистых углеводов и клетчатки из ответа Soba. Главная мера: доля блюд, где разница не больше 10 г. Сбой скана засчитывался бы как промах, сбоев не было. 95-процентный интервал получен бутстрепом с 10 000 повторов, где блюда одного участника SNAPMe или одного десятиминутного окна столовой берутся вместе.

Ограничения

Soba не является медицинским изделием. Цифры в приложении дают оценку. Сверяйте их с едой на тарелке и этикетками и следуйте своему плану лечения диабета.

Что изменилось после проверки

Данные и источники

Результаты по каждому блюду (CSV, 400 строк): идентификатор в датасете, реальные углеводы, оценка Soba только по фото, текст подсказки и оценки с подсказкой и с глубиной. Файл распространяется по лицензии SNAPMe, CC BY-SA 4.0.