食事写真からAIでカロリー推定する仕組みと限界
食事写真から表示されるkcalは、写真そのものがエネルギー量を測定しているわけではありません。Mototoreでは、画像から食品候補を認識し、食品カタログまたはAI推定値を使ってkcalの目安を作り、ユーザーが確認・修正してから次の計算へ進みます。
Mototoreの写真解析は6段階
- 写真を選ぶ
カメラで撮影するか、端末のライブラリから画像を選びます。 - 画像をAI解析へ送る
現在の実装では画像をBase64化し、認証済みの分析APIへ送信します。 - 食品候補と推定値を受け取る
AIには食品名、confidence、推定kcal、カテゴリ、カタログ一致フラグをJSONで返すよう求めています。 - 低confidence項目を除外
現在の実装ではconfidenceが0.5を超える項目だけを有効な候補として扱います。 - カタログ照合またはAI推定値を使う
食品カタログに一致する場合は登録値を使い、一致しない食品はAIが返した推定kcalを使います。 - ユーザーが確認・修正
結果画面で食品ごとのkcalを編集でき、不要な食品項目は削除できます。
写真だけでは分からない情報がある
一枚の写真に写っている見た目だけでは、食品のエネルギー量を決めるために必要な情報が不足することがあります。Mototoreがユーザー修正を前提にしているのは、このような不確実性があるためです。
量・大きさが分かりにくい
同じ皿でも撮影距離や角度で大きさの見え方が変わります。器の深さや食品の厚みが分からなければ、実際の量を正確に推定するのは難しくなります。
隠れた材料が見えない
油、砂糖、ドレッシング、ソース、チーズなど、写真から量を判断しにくい材料はkcal差につながります。
混ざった料理は分解しにくい
丼、カレー、炒め物、スープなどは、見えている食品名を特定できても、それぞれの材料量や調理油まで写真だけで分かるとは限りません。
食品名の取り違え
見た目が似た料理や、地域・商品ごとに配合が違う食品では、食品名の推定自体がずれる可能性があります。
confidenceは「正解率」ではない
Mototoreの現在の解析では、AI応答のconfidenceが0.5以下の項目を除外します。しかし、この数値を「50%以上の確率で正しい」「0.9なら90%正解」と解釈することはできません。
confidenceは解析結果を絞るための実装上の指標であり、Mototore独自の精度検証試験による正解率ではありません。
研究全体でも「写真AIは精度○%」と一つの数字にまとめにくい
画像ベースの食事評価AIについては研究が進んでいますが、研究ごとに食品画像、料理の複雑さ、正解データ、評価方法が大きく異なります。2024年に公開されたsystematic reviewでは、2010〜2023年の52研究を対象に、AIによる食品画像からの量・エネルギー・栄養推定を検討しています。
そのレビューでは、カロリー推定の平均相対誤差として報告・算出できた研究に広い幅があり、画像データベースや結果報告の違いが大きいため、研究全体を一つの精度へ統合するmeta-analysisはできなかったとされています。単品など比較的単純な食品画像の方が誤差が小さい傾向も報告されています。
したがって、このサイトでは他研究の数字をMototoreへ流用して「精度90%」などと表示しません。Mototore自身の再現可能な検証データが得られるまでは、食品名・量・kcalをユーザーが確認できることを重視します。
カタログ一致とAI推定は扱いが違う
現在のMototoreは、AIが返した食品名をアプリ内の食品カタログと照合します。
- 一致した食品: カタログに登録されたkcal値を使います。
- 一致しない食品: AIが画像から返した推定kcalを使い、「推定値」として扱います。
部分一致を使う経路もありますが、いずれにしても「カタログにあるから写真中の量まで正確」という意味ではありません。料理の量がカタログの想定と異なれば、修正が必要になることがあります。
なぜ編集・削除機能があるのか
Mototoreの結果画面では、食品ごとのkcalを編集し、不要な項目を削除できます。これはAIの推定結果を確定値として扱わず、ユーザーが実際の食事内容と照らして調整するためです。
写真を使うときに確認材料を増やすには
特定の撮り方で精度が保証されるわけではありませんが、AIが判断できる情報が写真から欠けないようにすることはできます。
- 主な料理がフレームから切れないようにする。
- 食品同士が完全に隠れないよう、見える範囲を確保する。
- 暗すぎる写真や強い反射で食品が見えない写真を避ける。
- 写真から分からない油・ドレッシング・飲料などは、結果画面で抜けがないか確認する。
- 量が明らかに違うと感じたら、表示されたkcalを確定値として扱わず修正する。
これは「この撮り方なら正確になる」という保証ではありません。写真だけでは取得できない重量・レシピ・隠れた材料が残るため、最終的にはユーザー確認が必要です。
現在のMototoreはPFCを写真推定しない
現在のAIプロンプトでは、タンパク質・脂質・炭水化物を推定しないよう明示しています。したがって、Mototoreを「写真からPFCまで自動計算するアプリ」と説明するのは現在仕様と一致しません。
主な目的は、食品とkcalの推定値を確認し、その合計を運動時間の目安へつなげることです。
修正したkcalは、その後の運動時間に影響する
Mototoreでは、選択された食品のkcal合計を使って運動時間を計算します。そのため、写真解析で出たkcalをユーザーが修正すると、その後のウォーキングやランニングなどの時間目安も変わります。
計算の仕組みは食べたカロリーを運動時間に換算するには?で説明しています。
画像の保存・外部提供についてこのページで断定しない理由
現在確認できているアプリコードでは、画像が認証済みの分析APIへ送信されることまでは確認できます。一方、その先のバックエンド処理や下流サービスでの保持条件まで、このSEO監査では確認していません。
そのため「画像は絶対に保存されない」「直接特定のAI事業者だけへ送られる」といった未検証の説明はしません。プライバシーに関する強い表現は、バックエンドと実際の運用を別途確認してから扱います。
写真AIを使うときの考え方
- AI結果を「測定値」ではなく入力候補として見る。
- 目で確認できる食品名・量と照らして修正する。
- 写真から見えない材料があり得ることを前提にする。
- confidenceを正解率として読まない。
- 他研究の精度数字をMototoreへそのまま当てはめない。
- 運動時間へ換算した後も、その時間を「食事の完全な相殺」と考えない。
よくある質問
写真1枚だけで正確なカロリーが分かりますか?
正確な測定値とは言えません。写真に写らない重量、油、調味料、レシピなどがあり、Mototoreも推定結果を編集できる設計です。
confidence 0.9なら90%正しいですか?
そのようには解釈できません。現在のconfidenceは解析候補を絞るための指標で、Mototoreの検証試験による正解率ではありません。
研究ではAIカロリー推定はどの程度正確ですか?
研究条件が大きく異なるため一つの数字へ統合できません。systematic reviewでも画像データや評価方法の差が大きく、meta-analysisができなかったとされています。
PFCも写真から出ますか?
現在のMototoreの写真解析フローではPFC推定を行わない仕様です。