AIが写真からポーションサイズを推定する仕組み:技術的深掘り
AIが深度推定、参照オブジェクト、ボリュームモデリングを用いて、単一の写真から食べ物のポーションサイズを推定する方法を詳しく解説します。
AIによるカロリー追跡の課題は、食べ物が何かを特定することだけではありません。もう一つの大きな課題、そしておそらくはより難しい課題は、どれだけの量があるのかを把握することです。パスタの一人前は、ポーションによって200カロリーにも800カロリーにもなり得ます。この推定を正確に行うことが、役立つ栄養追跡ツールと単なるおもちゃを分けるポイントです。
この記事では、AIシステムが写真からポーションサイズを推定する方法について、深度推定、参照オブジェクトスケーリング、ボリュームモデリング、そしてこれらの推定をより正確にするために研究者やエンジニアが直面している課題について深く掘り下げていきます。
ポーション推定が食品認識よりも難しい理由
食品認識は基本的に分類問題です。システムは限られた食品カテゴリの中から選択しなければなりません。一方、ポーション推定は回帰問題です。システムは視覚情報だけから連続値(グラムまたはミリリットル)を予測しなければなりません。
このプロセスを特に難しくする要因はいくつかあります。
- 2Dから3Dへの問題: 写真は三次元の現実を二次元の画像に圧縮します。深度情報が失われ、薄く広がった食べ物と厚く盛られた食べ物を区別するのが難しくなります。
- 変動する密度: 一杯の葉物野菜と一杯のグラノーラは同じ体積ですが、重さやカロリーは大きく異なります。システムは体積と密度の両方を推定しなければなりません。
- 視点の歪み: 写真の撮影角度によって、食品の大きさが異なって見えます。真上から撮影した皿は、45度の角度から撮影した同じ皿とは異なります。
- あいまいなスケーリング: フレーム内に既知の参照オブジェクトがない場合、絶対的なサイズを判断することはできません。小さなクッキーのクローズアップは、遠くから撮影された大きなピザの写真と見た目が同じになることがあります。
単一画像からの深度推定
ポーション推定を可能にする重要なブレークスルーの一つが、単眼深度推定です。これは、ステレオカメラや特殊なハードウェアを必要とせず、単一の画像から深度情報を推測する能力です。
単眼深度推定の仕組み
人間の視覚システムは、さまざまな手がかりから深度を推測します。オブジェクトの重なり(近くのオブジェクトが遠くのものを隠す)、相対的なサイズ(小さなオブジェクトは通常遠くにある)、テクスチャのグラデーション(遠くのテクスチャは細かくなる)、大気の遠近法(遠くのオブジェクトはぼやけて見える)などです。
深層学習モデルは、深度マップとペアになった大量の画像データセットからこれらの手がかりを学習できます。食品写真に適用すると、これらのモデルは、食品のどの部分がカメラに近く、どの部分が遠くにあるかを推定し、平面画像から食品の三次元形状を再構築します。
深度マップと食品ボリューム
深度マップは、画像内の各ピクセルに距離値を割り当てます。食品推定においては、システムがスープのボウルの中心が一つの深度にあり、ボウルの縁が別の深度にあることを判断できることを意味します。これらの深度の違いと、食品の境界を検出することで、システムはボリュームを推定します。
最近のiPhone ProやiPad Proモデルに搭載されたLiDARセンサーを持つスマートフォンカメラは、カラー画像とともに実際の深度データをキャプチャでき、アルゴリズムによる推定だけよりもはるかに正確な深度情報を提供します。食品追跡アプリは、利用可能な場合にはこのハードウェアを活用し、深度センサーのないデバイスでは単眼推定に戻ります。
参照オブジェクトスケーリング
既知の参照点がないと、写真内のオブジェクトの絶対サイズはあいまいです。参照オブジェクトスケーリングは、既知の寸法を持つオブジェクトを使用して、画像全体のサイズスケールを確立することでこの問題を解決します。
一般的な参照オブジェクト
| 参照オブジェクト | 知られている寸法 | 精度の利点 |
|---|---|---|
| 標準ディナープレート | 25-27 cm直径 | 食事全体のスケールを確立 |
| フォークまたはスプーン | 約19 cm長さ | クローズアップショットでもスケールを提供 |
| クレジットカード | 8.56 x 5.4 cm | 正確で普遍的に標準化 |
| スマートフォン | モデルによって異なるが既知 | アルゴリズムで検出・測定可能 |
| 手 | バラつきがあるが人口統計から推定可能 | 他の参照がない場合の近似スケーリング |
自動参照検出
ユーザーが食品の横に参照カードを置く必要があると、手間が増え、使用が妨げられます。現代のシステムは、一般的な参照オブジェクトを自動的に検出しようとします。皿、ボウル、器具、テーブルなどは、食品写真に頻繁に登場し、システムがそれらを識別できればサイズの参照として機能します。
Nutrolaのポーション推定システムは、フレーム内で皿、ボウル、器具を自動的に探してスケールを確立します。これらのオブジェクトが検出されると、システムはそれらの典型的な寸法を使用して食品アイテムのサイズをキャリブレーションします。参照オブジェクトが見つからない場合、システムは典型的な食品ポーションに関する学習した事前情報に依存し、ユーザーに確認を促すことがあります。
プレートベースのキャリブレーション
特に効果的なアプローチの一つがプレートベースのキャリブレーションです。ほとんどの国の標準ディナープレートは、直径が25cmから27cmの狭いサイズ範囲に収まります。画像内でプレートの楕円形の輪郭を検出し、標準サイズを仮定することで、システムは皿の上のすべてのものの信頼できるスケールを確立できます。
このアプローチは、プレートが食事写真にほぼ常に存在し、楕円形の形状がカメラの角度に関係なく簡単に検出でき、楕円の視点の歪みが実際にカメラの角度に関する情報をエンコードしているため、食品に対する視点効果を補正するのに役立ちます。
ボリューム推定技術
システムが食品を特定し、深度を推定し、スケールを確立した後、これらの情報を組み合わせて各食品アイテムのボリュームを推定する必要があります。
幾何学的プリミティブ
一つのアプローチは、食品アイテムを単純な幾何学的形状の組み合わせとして近似することです:
- 円柱:飲み物、重ねたパンケーキ、層ケーキなどの高い食品
- 半球:ご飯の一杯、マッシュポテトの山、アイスクリームのポーションなどの丸い食品
- 直方体:スライスしたパン、チーズの塊、バーなど
- 切り詰めた円錐:スープやシリアルのボウル(ボウルの形状がボリュームを定義するのに役立つ)
- 不規則多面体:鶏の脚や丸ごとの果物など、複雑な形状の食品
システムは、検出された食品領域にこれらのプリミティブの一つまたは複数をフィットさせ、フィットした形状と確立されたスケールからボリュームを計算します。
ボクセルベースの再構築
より洗練されたアプローチは、ボクセルベースの再構築です。ここでは、食品アイテムを小さな立方体(ボクセル)の三次元グリッドとしてモデル化します。各ボクセルは、深度マップとセグメンテーションマスクに基づいて、食品を含むか空であるかに分類されます。総ボリュームは、すべての食品を含むボクセルの合計です。
この方法は、幾何学的プリミティブよりも不規則な形状を扱うのに優れていますが、より多くの計算リソースを必要とします。特に、破れたパンや不規則にスライスされた果物など、単純な形状に従わない食品に役立ちます。
ニューラルボリューム推定
最新のアプローチは、明示的な幾何学的モデリングを完全にスキップします。代わりに、ニューラルネットワークが画像から直接食品ボリュームを予測するようにエンドツーエンドで訓練されます。これらのモデルは、大規模な食品画像データセットから食品の幾何学的な暗黙の表現を学習します。
このアプローチは、液体の表面での光の反射や食品の山が cast する影のパターンなど、ボリュームに相関する微妙な視覚的手がかりを捉えることができるため、有望な結果を示しています。また、深度推定、セグメンテーション、幾何学的フィッティングを別々のステップとして行う際に発生するエラーの蓄積を回避できます。
ボリュームから重量、そしてカロリーへ
ボリュームを推定することは最終ステップではありません。カロリーを計算するためには、ボリュームを重量に変換し(食品の密度を使用)、重量をカロリーに変換する必要があります(栄養成分データを使用)。
食品密度データベース
異なる食品は非常に異なる密度を持っています。油の一杯は約220グラムですが、小麦粉の一杯は約120グラム、ポップコーンの一杯は約8グラムです。ボリューム推定を重量推定に変換するためには、正確な密度データが不可欠です。
生産システムは、調理法(生または調理済み、刻んだものまたは丸ごとのもの)や一般的な提供スタイルの変動を考慮した食品アイテムとその密度をマッピングするデータベースを維持しています。
| 食品アイテム | 密度 (g/mL) | 1カップの重量 (g) | 1カップあたりのカロリー |
|---|---|---|---|
| 水 | 1.00 | 237 | 0 |
| 牛乳 | 1.03 | 244 | 149 |
| 調理済み白米 | 0.74 | 175 | 205 |
| 生ほうれん草 | 0.13 | 30 | 7 |
| ピーナッツバター | 1.09 | 258 | 1517 |
| オリーブオイル | 0.92 | 218 | 1909 |
栄養成分
システムがグラム単位の重量推定を持つと、包括的な食品データベースからグラムあたりの栄養成分を調べます。これらのデータベースは通常、USDA FoodData Centralなどの権威あるソースから派生し、食品メーカーや地域の栄養データベースのデータで補完されています。
Nutrolaのデータベースは、ブランド製品、レストランのメニューアイテム、一般的な食品アイテムを含む130万以上の食品をカバーしており、完全なマクロおよびミクロ栄養素プロファイルを提供します。この包括的なカバレッジにより、食品アイテムとポーションが特定されると、栄養計算が正確になります。
精度の課題とその対処法
これらの技術の洗練さにもかかわらず、写真からのポーション推定は未だ不完全な科学です。エラーの原因を理解することで、現実的な期待を設定し、この分野での継続的な改善を強調できます。
知られているエラーの原因
カメラ角度の変動: 同じポーションでも、写真が上から撮影されたか、45度の角度から撮影されたか、テーブルレベル近くから撮影されたかによって見え方が異なります。真上からの写真は、視点の歪みを最小限に抑えるため、一般的に最も正確な推定を提供しますが、多くのユーザーは自然に電話を傾けて持ちます。
隠れた食品: ソースやチーズ、その他のトッピングの下に隠れた食品は、視覚的に直接測定することができません。システムは、見える皿の種類や典型的な調理法に基づいて、隠れた部分を推測しなければなりません。
不規則な容器: 非標準のボウル、マグカップ、容器は、プレートベースのスケーリングを信頼性を低下させます。大きなボウルに小さなポーションが入っている場合、見た目が似ていても、小さなボウルに大きなポーションが入っている場合とは異なります。
個々の調理の違い: 「オートミールのボウル」を作る二人が、異なる量のオートミールと水を使用する場合、見た目のボリュームは同じでも、カロリー内容は異なることがあります。
精度を向上させるための戦略
多角度キャプチャ: 一部のシステムは、ユーザーに複数の角度から写真を撮るように求め、ステレオ再構築とより正確なボリューム推定を可能にします。これにより精度が大幅に向上しますが、ログのプロセスに手間がかかります。
ユーザーフィードバックループ: ユーザーが食品を計量し、推定されたポーションを確認または修正することで、トレーニングデータが生成され、モデルが改善されます。Nutrolaは、ユーザーに時折キッチンスケールでポーションを確認することを奨励し、AIとユーザー自身のポーション意識をキャリブレーションします。
文脈的事前情報: システムは、文脈情報を使用して推定を洗練させることができます。特定のレストランチェーンにいる場合、システムは既知の提供サイズを使用できます。ユーザーが特定の朝食を定期的にログしている場合、システムはその典型的なポーションを学習できます。
信頼性を考慮した推定: 単一の数値を提示するのではなく、洗練されたシステムは信頼性の範囲を提供します。システムがポーションについて不確かである場合、推定値を範囲(例えば、300から450カロリー)として提示し、ユーザーに追加情報を提供するように求めることができます。
現在の精度ベンチマーク
国際画像分析および処理会議の研究によると、最先端の食品ボリューム推定システムは、平均絶対パーセンテージ誤差が15%から25%の範囲であることが示されています。参考までに、訓練を受けた栄養士が写真からポーションを推定する際の誤差は約10%から15%であり、訓練を受けていない個人は平均30%から50%の誤差を示します。
これは、AIによるポーション推定がすでにほとんどの人が無援助で行うことができるよりもはるかに優れており、訓練を受けた専門家の精度に近づいていることを意味します。速度と便利さの利点と相まって、AI支援の追跡は、多くのユーザーにとって手動ログよりも大幅に改善されたものとなります。
ユーザーキャリブレーションの役割
AIポーション推定の一つの過小評価されている側面は、時間をかけてのユーザーキャリブレーションの役割です。ユーザーが食事をログし、時折修正を提供することで、システムはその人の典型的なポーションサイズや食品の好みのプロファイルを構築します。
定期的なユーザーにとって、これはシステムが徐々により正確になることを意味します。もしあなたが平均よりも多くのご飯を盛る傾向があるなら、システムはご飯の推定を上方修正することを学びます。もしあなたが通常のレシピよりも少ない油を使う場合、システムはそれを考慮に入れることができます。
Nutrolaは、このパーソナライズを活用して、アプリを使用する期間が長くなるほど、ますます特化したポーション推定を提供します。新しいユーザーは人口レベルの平均から恩恵を受け、経験豊富なユーザーは特定の習慣に基づいてキャリブレーションされた個別の推定を受け取ります。
より正確なポーション推定のための実用的なヒント
AIがほとんどの重労働を処理しますが、ユーザーは以下の簡単なガイドラインに従うことで精度を向上させることができます。
- 可能な限り上から撮影する。 真上からの写真は、食品の表面積に関する情報を最も多く提供し、視点の歪みを最小限に抑えます。
- 皿全体をフレームに含める。 皿の縁は、スケーリングのための重要な参照オブジェクトとして機能します。
- 極端なクローズアップを避ける。 システムはサイズを判断するためにコンテキストが必要です。周囲のオブジェクトなしで食品だけを示す写真は、スケールの参照を提供しません。
- 混ぜる前に撮影する。 見える別々の材料があるサラダは、混ぜられたものよりも分析しやすいです。
- 良好な照明を使用する。 影や低照度は、食品の境界や深度の手がかりを隠す可能性があります。
- 時折確認または修正する。 週に一度キッチンスケールを使用してAIの推定を確認することで、システムと自身の直感の両方をキャリブレーションできます。
FAQ
AIポーション推定は、食品スケールを使用するのと比べてどれくらい正確ですか?
食品スケールは1〜2グラムの精度を提供し、視覚的推定方法の中でははるかに正確です。AIによる写真からのポーション推定は、通常、実際の重量の15%から25%の範囲内で精度を達成します。しかし、AI推定の便利さ(2秒で済むのに対し、スケールでは30秒以上かかる)により、より多くの人が実際に一貫して追跡することができ、これは長期的な結果において完璧な精度よりも重要です。
カメラの角度はポーション推定の精度に影響しますか?
はい、大きく影響します。真上からの写真(皿を真下から見る)は、視点の歪みを最小限に抑え、食品の全表面積を示すため、最も正確な推定を提供します。45度の角度から撮影された写真は最も一般的で、依然として良好な推定を生み出します。非常に低い角度(テーブルレベル近く)は、皿の前縁によってほとんどの食品が隠れるため、最も正確ではありません。
AIはスープやスムージーのような液体のポーションを推定できますか?
液体は、そのボリュームが形状ではなく容器によって決まるため、独特の課題を呈します。AIシステムは、容器の種類と充填レベルを特定することで液体のポーションを推定します。満杯のスープのボウルは、半分まで満たされたものとは異なるボリュームを持っています。容器が標準的な形状である場合、精度は一般的に良好ですが、異常な容器では信頼性が低下します。
なぜAIは時々私のポーションを過大評価または過小評価するのですか?
過大評価の一般的な理由には、見た目が大きく見える密な盛り付け、カロリーが少ない視覚的なボリュームを加えるガーニッシュ、システムがより多くの食品が存在すると仮定する大きな皿の使用が含まれます。過小評価の一般的な理由には、他の食品の下に隠れた食品、見た目が小さいがカロリーが高い食品、異常な提供スタイルが含まれます。推定が外れたときにフィードバックを提供することで、システムは改善されます。
正確なポーション追跡にはLiDARセンサーを搭載した電話が必要ですか?
いいえ。LiDARを搭載した電話はより正確な深度情報を提供できますが、現代のAIモデルは標準的なカメラ画像からも十分に深度を推定できます。LiDARを搭載した電話と標準的な電話の間の精度の違いは、ソフトウェアベースの深度推定が改善されるにつれて縮小しています。Nutrolaは、どの現代のスマートフォンでも正確に機能します。
システムは重ねられた食品や層状の食品をどのように扱いますか?
パンケーキや層状のサンドイッチのような明らかに重ねられた食品については、システムは層を数え、側面のプロファイルから厚さを推定できます。ラザニアやブリトーのような隠れた層を持つ食品については、システムは、見える外観と皿の種類に基づいて典型的な内部構造を推定する学習した構成モデルに依存します。