Soba

精度テスト・2026年10月

Sobaの糖質の推定を食事写真400枚でテストしました

写真は、各食事の糖質が計量または記録されている2つの公開研究データセットから選びました。以下に、結果、テストの方法、Sobaの推定が外れた食事を示します。

68.5%写真1枚だけで、実際の糖質との差が10 g以内だった食事の割合

+4研究の記録どおりに食品名を補足したときの、10 g以内の割合の増加(ポイント)

5.2 g写真1枚だけの場合の誤差の中央値

写真は400枚で、それぞれ補足ありとなしで1回ずつ解析しました。補足には、主な食品の名前を量なしで記載しました。例:「steak; cauliflower; chicken」。解析の失敗はありませんでした。1枚あたりの所要時間の中央値は3.1秒です。

わかったこと

このセクションの数値は、重さの修正や補足を加える前の、写真だけからのSobaの最初の推定値です。推定値の49%が、実際の糖質との差5 g以内でした。10 g以内の割合の95%信頼区間は64.0%〜72.9%です。

小さめと中くらいの食事で、推定は実際の値に最も近くなりました。糖質15 g未満の食事では、推定値の89%が10 g以内でした。

量の多い食事は、たいてい少なめに推定されました。糖質60 g以上の42食のうち38食で、Sobaの推定値は実際より低くなりました。推定値の中央値は実際の量の64%でした。主な原因は重さです。この38食のうち30食で、Sobaは食品の重さを実際より15%以上軽く見積もりました。一方、100 gあたりの糖質はたいてい実際に近い値でした。

Sobaを使うときのポイント

アプリで追加できる情報

上の結果は、写真1枚だけから得たものです。アプリでは食事について短い補足を入力でき、深度カメラを搭載したiPhoneではSobaが食品までの距離も測ります。それぞれを加えて、テストを繰り返しました。

実際の糖質との差が10 g以内だった食事の割合

写真400枚すべて

写真のみ68.5%
写真と補足72.8%

深度データのある食堂の写真200枚

写真のみ77.5%
写真と深度82.0%
写真、深度、補足78.5%

文章による補足

「甘いお茶」や「そばの実」のような短い言葉で、写真に写らない情報を補えます。テストでは、400枚の写真それぞれに、データセットの記録にある主な食品名を量なしで補足として添えました。例:「Coffee, brewed; Coffee creamer, liquid, fat free」。10 g以内の割合は68.5%から72.8%に上がり(増加分の95%区間:0.7〜7.9ポイント)、誤差の中央値は5.2 gから4.5 gに下がりました。

補足が最も役立ったのは、写真を複数の意味に読める場合です。補足なしでは、Sobaはクリーム入りのコーヒーをキャラメルソースと判断し、糖質を162 gと推定しました。補足ありの推定は5.5 gで、食事記録の値は2.7 gです。参加者が自分の食事を撮影したSNAPMeの写真では、10 g以内の割合が59.5%から67.5%に上がりました。食品が見分けやすい食堂の写真では、77.5%から78.0%とほとんど変わりませんでした。

補足で食品名はわかりますが、量はSobaが写真から判断します。糖質60 g以上の42食のうち、補足ありでは37食、補足なしでは38食が少なめに推定されました。テストの補足はデータセットの記録をそのまま写したものです。増加分の大部分は最初の200食で生じ、8.0ポイントでした。2つ目の200食では0.5ポイントでした。ご自身で入力する補足の効果は、これより小さくなる可能性が高いです。

深度カメラによる距離

LiDARスキャナまたは2つ以上の背面カメラを搭載したiPhoneでSobaのカメラを使って撮影すると、Sobaが食品までの距離を測り、画面に写る範囲の幅をセンチメートル単位でモデルに伝えます。Nutrition5kにはすべての写真に深度カメラの記録があるため、その200食にこの測定値を加えてテストを繰り返しました。10 g以内の割合は77.5%から82.0%に上がり(増加分の95%区間:1.0〜8.3ポイント)、誤差の中央値は3.9 gから3.1 gに下がりました。量の多い食事は、13食のうち12食で引き続き少なめに推定されました。これらの写真は、決まった高さから真上に向けて撮影されています。斜めから撮った写真は、まだ測定していません。

深度の測定値と補足の両方を加えた結果は78.5%でした。この食堂の写真では補足で加わる情報が少なく、深度のみとの差の95%区間(−8.8〜+1.5ポイント)はゼロを含みます。

ご自身による修正

食品の重さがわかる場合は入力してください。すべての数値が再計算されます。このテストでは、重さが大きな誤差の主な原因でした。

Sobaは、推定値ごとに重さの推定範囲を表示します。計量済みのNutrition5kの皿200枚では、皿の実際の重さがこの範囲に入ったのは97枚で、約半分でした。範囲は、モデルが重さがあると見込む幅を示します。最も確実に確かめるには、キッチンスケールで量ってください。

食事の量ごとの結果

実際の糖質食事数10 g以内20 g以内誤差の中央値
15 g未満16788.6%98.8%2.0 g
15〜30 g9469.1%88.3%6.2 g
30〜60 g9754.6%84.5%8.4 g
60 g以上4219.0%38.1%25.4 g

全体の結果は、この内訳によって変わります。テストした食事の42%は糖質15 g未満でした。普段の食事の量が多い場合は、一般的な誤差も大きくなると考えてください。

これらのグループは実際の糖質で分けています。解析の時点では、アプリは実際の糖質を知りません。Sobaの推定値で分けると、84食が40 g以上と推定され、そのうち55食で10 gを超える差がありました。32食は多め、23食は少なめでした。そのため、推定が40 gに達すると、アプリは主な糖質源の食品を量るように案内します。

400食の散布図。横軸は実際の糖質、縦軸はSobaの推定値。約50 gまでは、ほとんどの点が±10 gの帯の中にあります。60 gを超えると、ほとんどの点が帯より下にあります。
テストしたすべての食事です。網掛けの帯の中の点は、差が10 g以内です。破線より下の点は、少なめに推定された食事です。クリーム入りのコーヒーをキャラメルソースと判断した飲み物1件は162 gと推定され、グラフの上端に描いています。

テストした4つの食事

推定が近かった2例と、外れた2例です。Sobaの食品名と重さは、Sobaの回答から引用しています。

とうもろこし2切れ、白ご飯、カリフラワー、りんごがのった皿。
実際 49.7 g・Soba 49.7 gとうもろこし、ご飯、カリフラワー、りんご。Sobaはりんごを130 g(実際は117 g)、とうもろこしを60 g(実際は74 g)と推定しました。重さの誤差が打ち消し合いました。
白い皿にのったローストポテト、キヌア、野菜。
実際 46.0 g・Soba 40.8 gローストポテトとキヌア。Sobaはキヌアをクスクスと判断しました。両者の糖質は近いため、合計も近い値になりました。
白い皿にのったチーズピザ1切れとチョコレートクッキー。
実際 33.3 g・Soba 46.6 gピザ1切れとクッキー。Sobaはどちらも実際より重く推定しました。ピザは85 g(実際は47 g)、クッキーは35 g(実際は27 g)です。
白い皿にのった、パイナップル、角切りの鶏肉、ミニトマトのピザ4切れ。
実際 85.1 g・Soba 59.8 g鶏肉、パイナップル、トマトのピザ。ピザの重さは233 gで、Sobaの推定は180 gでした。30 gを超える誤差23件のうち16件は、糖質60 g以上の食事でした。

写真:Nutrition5kデータセット、Google Research、CC BY 4.0。このページ用にサイズを変更しています。

2つのデータセットと2種類の写真

データセット(各200食)10 g以内誤差の中央値誤差の平均
Nutrition5k77.5%3.9 g6.8 g
SNAPMe59.5%6.8 g12.2 g

Nutrition5kの皿は、Googleの社員食堂のものです。すべての食材が計量され、固定したカメラで各皿を真上から撮影しています。条件が整っており、Sobaの結果が最もよかったのはこちらです。

SNAPMeは、米国農務省とカリフォルニア大学デービス校による研究です。米国在住の95人が食べる前に自分の食事を撮影し、食事評価ツールASA24で食事記録をつけました。写真は、利用者がSobaで撮る写真に近いものです。基準値は参加者の食事記録によるもので、記録そのものにも誤差があります。2つのデータセットの差は、一部は写真の違い、一部は基準値の違いによるものです。

公表された研究との比較

Rodríguez-Jiménezらの研究(Nutrients、2025年)は、SNAPMeの74食の写真だけでChatGPT-5をテストしました。糖質の平均絶対誤差は12.99 g、中央値は8.75 gと報告されています。

写真のみ食事数誤差の平均誤差の中央値
ChatGPT-5(論文の値)7412.99 g8.75 g
Soba20012.2 g6.8 g

著者らは食事の選び方が異なり、一部の基準値を手作業で修正しているため、2行はおおまかにしか比較できません。誤差の水準は同程度です。同じ研究では、食事の脂質、糖分、肉についての短いメモを加えると、誤差の平均が11.29 gに下がりました。Sobaでは、SNAPMeの200食で食品名の補足を加えると、誤差の平均が12.2 gから10.2 gに下がりました。

Sobaが使うモデル

最初の200食で、Sobaの指示を使って8つのモデルを実行しました。

モデル10 g以内所要時間の中央値
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経由で1回ずつ実行し、Sobaが2026年10月より前に使っていたリクエスト設定を使いました。Claude Sonnet 5.5は、OpenRouterが選んだプロバイダー経由で、200枚のうち41枚に対して空の食品項目を返しました。残りの写真では66.7%でした。GPT-6.1 Solは、糖質を平均10 g多く推定しました。

この200食ではGemini 3.7 Flashが最も高い結果でした。8つのモデルを比べて1位になったモデルは、実力より良く見えることがよくあります。そこで、2つ目の200食で確かめました。そこではGemini 3.6 Flashと同じく70.5%で、料金はより高くなりました。Sobaは引き続きGemini 3.6 Flashを使います。

Gemini 3.6 Flashに推論の時間を長く与える設定も試しました。400食で10 g以内の割合は4.1ポイント上がりましたが、5 g以内の割合と30 gを超える誤差の件数は変わりませんでした。解析1回の時間は3.5秒から6.6秒と2倍になりました。Sobaでは速い設定を使っています。

95%区間、食事ごとのデータ、各表を再計算するスクリプトを含む比較の全文:食事写真で比べた8つのAIモデル(英語)。

テストの方法

食事の選び方

候補は、Nutrition5kの真上からの写真の公式テスト分割にある505皿と、食べる前に撮影されたSNAPMeの写真1,457枚です。その前に22件を除外しました。値が無効な皿と食事、および1つの食事記録に一意に対応づけられないSNAPMeの写真です。

乱数シードを固定したスクリプトで、各データセットから100食ずつ選びました。糖質の範囲を4等分し、それぞれから25食です。同じ10分間に撮影された食堂の皿は似ていることが多いため、スクリプトは1つの10分間から選ぶ皿の数を制限しました。続いて同じ方法で2つ目の200食を選び、最初のセットとは写真も食事も重ならないようにしました。

2つのセット

誤差の分析とSobaの指示の変更は、最初の200食だけで行いました。2つ目の200食は、結果が再現するかの確認に使いました。上で述べたGemini 3.7 Flashの結果は、この方法で見抜きました。

Sobaの実行

各写真は、アプリと同じサーバーのコードで処理しました。指示、モデル、設定もアプリと同じです。写真は、アプリが送信前に行うのと同じように、長辺1,024ピクセルに縮小しました。メインの実行では、文章の補足、深度カメラのデータ、後からの修正はいずれも使っていません。補足や深度データを使った実行も同じコードで行い、変えたのはその入力だけです。アプリの言語はロシア語に設定しました。

誤差の測り方

Sobaは糖質(食物繊維を除いた値)と食物繊維を別々に返します。データセットには炭水化物の総量が記載されているため、Sobaの糖質と食物繊維の合計を総量と比較しました。主な指標は、差が10 g以下の食事の割合です。解析に失敗した場合は外れとして数える予定でしたが、失敗はありませんでした。95%区間は10,000回の再標本化によるブートストラップで求め、SNAPMeの同じ参加者の食事や、食堂の同じ10分間の皿は1つのまとまりとして扱いました。

このテストの限界

Sobaは医療機器ではありません。数値は推定です。お皿の上の料理や食品の表示と照らして確認し、ご自身の糖尿病の療養計画に従ってください。

テスト後の変更

データと出典

食事ごとの結果(CSV、400行、英語):データセットのID、基準となる糖質、写真だけからのSobaの推定値、補足の文章、補足ありと深度データありの推定値。このファイルはSNAPMeのライセンスCC BY-SA 4.0に従います。