Nutrolaの食品認識技術の背後にある研究
Nutrolaは、写真から3秒以内に食品をどのように特定するのでしょうか?私たちのAIを支えるコンピュータビジョン、深層学習、栄養科学の研究を深掘りします。
夕食の写真を撮ると、Nutrolaが3秒以内に完全な栄養情報を返してくれる。その背後には、数十年にわたるコンピュータビジョンの研究、栄養科学、AIエンジニアリングが存在しています。一見すると瞬時に認識されているように見えますが、実際にはそれぞれ異なる科学的課題を解決するための専門的なモデルが連携しています。カメラのシャッターが切られた瞬間から、マクロ栄養素の値が画面に表示されるまで、あなたの画像はスタンフォード大学、MIT、Google DeepMind、ETHチューリッヒのコンピュータビジョンラボなどの基礎研究に基づいたパイプラインを通過します。
この記事では、そのパイプラインをステップごとに追い、Nutrolaの食品認識を可能にする実際の研究や技術的概念を紹介します。
コンピュータビジョンパイプライン
Nutrolaの食品認識は単一のモデルではありません。これは、各ステージが特定のタスクを処理し、1つのステージの出力が次のステージに渡される多段階のパイプラインです。
ステージ1 -- 画像前処理。 どのニューラルネットワークもあなたの写真を見る前に、生の画像は正規化されます。これには、標準的な入力解像度へのリサイズ、ホワイトバランスや露出の調整、トレーニング中のデータ拡張変換が含まれます。Krizhevsky、Sutskever、Hintonによる2012年の画期的なImageNet論文では、前処理と拡張が深層畳み込みニューラルネットワーク(CNN)の一般化を劇的に改善することが示されました。現代のパイプラインでは、CutMix(Yun et al., 2019)やRandAugment(Cubuk et al., 2020)などの技術が拡張され、食品写真において一般的な遮蔽や色の変化に対してモデルを頑健にすることが教えられています。
ステージ2 -- 食品検出とセグメンテーション。 前処理が完了した画像は、皿の上の各食品アイテムを特定し、位置を特定するオブジェクト検出モデルを通過します。このステージは、領域ベースの畳み込みニューラルネットワークに関する研究に大きく依存しています。Faster R-CNN(Ren et al., 2015)は領域提案ネットワークのパラダイムを確立し、Facebook AI ResearchのDETR(Carion et al., 2020)などの最近のアーキテクチャは、アンカーボックスのような手作りのコンポーネントを完全に排除するためにトランスフォーマーベースのアテンションを使用しています。ピクセル単位の精度を求めるため、DeepLab(Chen et al., 2017)などのアーキテクチャに基づくセマンティックセグメンテーションモデルは、画像内のすべてのピクセルを食品カテゴリに割り当てます。これは、材料が重なり合う混合料理において重要です。
ステージ3 -- 食品分類。 検出された各食品領域は分類されます。現代の食品分類器のバックボーンは、ImageNet(Deng et al., 2009)で検証されたアーキテクチャに由来し、これは1400万のラベル付き画像からなるデータセットで、深層学習革命を引き起こしました。Food-101(Bossard et al., 2014)などの食品特化データセットは、101のカテゴリにわたる101,000枚の画像を含み、UECFOOD-256(Kawano and Yanai, 2015)は、日本料理に焦点を当てた256の食品カテゴリをカバーしています。これらは、食品認識のためにこれらの汎用アーキテクチャを微調整するために必要なドメイン特化のトレーニングデータを提供します。
ステージ4 -- ポーション推定。 皿の上に何があるかを特定した後、システムは各アイテムの量を推定します。これは食品認識研究における最も難解な未解決問題であり、単一の2D画像から深さ推定と体積推論を含みます。
ステージ5 -- 栄養マッピング。 最後に、分類された食品アイテムとその推定ポーションサイズが確認済みの栄養データベースにマッピングされ、カロリー、タンパク質、炭水化物、脂肪、微量栄養素の値が生成されます。
これらの各ステージは、活発な研究の異なる分野を表しています。以下のセクションでは、最も技術的に難しいステージを詳しく見ていきます。
食品分類:「サラダだ」と言うだけではない
サラダとステーキを区別することは、現代の分類器にとっては簡単です。本当の課題は、視覚的に似た料理を区別しなければならないときに始まります:チキンティッカマサラとバターチキン、パッタイと酔っ払いヌードル、ギリシャサラダとファトゥーシュなどです。これらの料理は色、テクスチャ、構造パターンを共有していますが、材料やカロリー密度には大きな違いがあります。
転移学習とドメイン適応
食品分類の標準的なアプローチは、Yosinskiら(2014)によって形式化された転移学習に依存しています。これは、大規模な一般データセット(ImageNetなど)で事前学習されたモデルを食品特化データで微調整する技術です。ネットワークの下層はエッジ、テクスチャ、基本的な形状を検出し、ドメインを超えてうまく転送されます。上層は、揚げた表面の光沢と蒸した表面のマットな仕上がりの違いなど、食品特有の特徴を学ぶために再訓練されます。
Hassannejadら(2016)の研究では、Food-101でInceptionV3を微調整することで、トップ1の精度が88.28パーセントに達し、従来の手作り特徴アプローチに比べて大幅な飛躍を遂げました。最近の研究では、Vision Transformers(Dosovitskiy et al., 2020)とその食品特化バリエーションを使用することで、Food-101の精度が93パーセントを超えています。
複雑な皿のためのマルチラベル分類
実際の食事には単一のアイテムしか含まれていないことは稀です。典型的なディナープレートには、グリルサーモン、ローストアスパラガス、キヌア、レモンバターソースが載っていることがあります。マルチラベル分類では、単一の画像が複数の独立したラベルを受け取ることができます。この問題を解決するために、Wangら(2016)のCNN-RNNアーキテクチャに関する研究は、ラベルの共起パターンを捉えるフレームワークを確立しました。食品の領域では、モデルがご飯とカレーが一緒に出現することが多いことを学習し、これが個々の食品アイテムの精度を向上させる文脈的信号として機能します。
Nutrolaは、階層的分類システムを拡張しています。平面的なラベルを予測するのではなく、最初に広範な食品カテゴリ(穀物、タンパク質、野菜、ソース)を分類し、その後、そのカテゴリ内の特定のアイテムに絞り込みます。この二段階のアプローチは、異なるカテゴリの視覚的に似たアイテム間の混乱を減らし、栄養データベースの組織方法を反映しています。
ポーション推定:3Dの課題
皿の上に何があるかを特定することは、問題の半分を解決するだけです。100グラムの鶏むね肉には165カロリーが含まれていますが、250グラムのサービングには412カロリーが含まれています。正確なポーション推定がなければ、完璧な食品特定でも信頼できるカロリー数は得られません。
単眼深度推定
単一の2D写真から食品の体積を推定するには、システムが深さを推測する必要があります。これは単眼深度推定として知られる問題です。Eigen、Puhrsch、Fergus(2014)の基礎的な研究では、CNNが単一の画像からピクセル単位の深度マップを予測できることが示されました。Ranftlら(2021)の最近の研究では、MiDaSというモデルが混合データセットで訓練され、多様なシーンで堅牢な相対深度推定を生成します。
食品アプリケーションにおいて、深度推定はシステムが皿の上に広がった薄いソースの層と深いスープのボウルを区別できるようにします。皿、ボウル、器具などの一般的な参照オブジェクトの既知の幾何学と組み合わせることで、深度マップは近似体積推定に変換できます。
体積推定の幾何学的アプローチ
東京大学の研究(Okamoto and Yanai, 2016)では、食品の体積をセグメント化された食品領域に幾何学的原始(円柱、半球、直方体など)をフィッティングすることで推定できることが示されました。ご飯の山は半楕円体に近似され、牛乳のグラスは円柱に近似され、パンのスライスは直方体に近似されます。
これらの幾何学的近似と学習した密度の事前知識(システムは、マッシュポテトの特定の体積がポップコーンの同じ体積よりも重いことを知っています)を組み合わせることで、研究により、ほとんどの一般的な食品に対して実際の重さの15〜20パーセントの範囲内に収まる重量推定が得られます。Nutrolaは、数万の食品画像を用いて訓練された独自のアンサンブルアプローチを使用して、これらの推定をさらに洗練させています。
参照オブジェクトのキャリブレーション
一部の食品認識システムは、シーン内の既知の参照オブジェクトを使用してスケールキャリブレーションを行います。標準的なディナープレートの直径は約26センチメートルです。クレジットカードは85.6×53.98ミリメートルです。このようなオブジェクトが検出されると、システムは実世界のスケールを確立でき、体積や重量の推定が大幅に改善されます。パデュー大学のFangら(2016)の研究によると、プレートベースのキャリブレーションは、キャリブレーションされていないアプローチに比べてポーション推定誤差を約25パーセント削減しました。
確認済みデータベース層
AIによる認識だけでは正確なカロリー数を提供するには不十分です。たとえモデルがグリルした鶏むね肉を99パーセントの精度で特定できたとしても、最終的な栄養出力は、それがマッピングされるデータベースの質に完全に依存します。
ここでNutrolaのアプローチは多くの競合他社と異なります。ほとんどの食品追跡アプリは、誰でも栄養情報を提出できるクラウドソースのデータベースに依存しています。研究によると、クラウドソースの食品データベースには15〜30パーセントのエラー率が含まれており、一部のエントリは主要なマクロ栄養素に関してラボで確認された値と50パーセント以上異なることがあります。
Nutrolaは100パーセント確認済みの栄養データベースを維持しています。すべてのエントリは、USDA FoodData Central、英国国民保健サービスが使用するMcCanceとWiddowsonの成分表、査読済みの栄養分析などの権威あるソースと照合されています。これにより、AI認識層が食品の特定やポーション推定に小さな誤差を導入しても、それがマッピングされる栄養データは信頼できます。
確認層は、純粋なAIアプローチが見逃す微妙な点も扱います:調理方法は栄養成分に影響を与えます。150グラムの鶏むね肉がグリルされると約165カロリーですが、同じむね肉がオリーブオイルで炒められると約230カロリーになります。Nutrolaのデータベースは、これらの調理法に依存する変動を捉え、認識モデルは、グリルされた表面と揚げられた表面の違いなど、視覚的な手がかりがある場合に調理法を区別するように訓練されています。
継続的な学習と改善
食品認識は、一度解決して展開される問題ではありません。料理は進化し、新しい料理が登場し、ユーザーの期待は高まります。Nutrolaのシステムは、機械学習研究に基づいたいくつかのメカニズムを通じて、継続的な改善のために設計されています。
アクティブラーニング
アクティブラーニングは、Settles(2009)によって形式化された戦略で、モデルが自信のない例を特定し、それらを人間のレビューとラベリングの優先対象とします。Nutrolaのシステムが高い自信を持てない料理に出会った場合、その画像は専門家のレビューのためにフラグが立てられます。ラベリングが完了すると、それはトレーニングパイプラインに入り、モデルはまさに弱点だったケースで改善されます。
このアプローチは、ランダムにトレーニング画像を収集するよりもデータ効率がはるかに高いです。研究は一貫して、アクティブラーニングがランダムサンプリングに比べて30〜60パーセント少ないラベル付きデータで同等のモデル精度を達成できることを示しています。
新しい食品や地域料理への対応
食品認識における最も重要な課題の1つは、地域や文化特有の料理のカバレッジです。西洋料理を中心に訓練されたモデルは、東南アジアのデザート、西アフリカのシチュー、スカンジナビアの発酵食品に苦労するかもしれません。Nutrolaは、過小評価された料理に焦点を当てたデータ収集キャンペーンと、少数ショット学習技術(Wang et al., 2020)を組み合わせて、新しい食品カテゴリを比較的少数の例から学習できるようにしています。
ユーザーからのフィードバックは、このプロセスにとって重要な入力です。ユーザーが誤って特定された食品を修正すると、その修正がトレーニングパイプラインにフィードバックされます。世界中で数百万の食事が記録される中で、これらの修正は、実際に人々が日常的に食べる食品をカバーする継続的な真実データの流れを生み出します。
これがあなたの皿にどのように反映されるか
上記の研究は、Nutrolaを開くたびにあなたが体験する具体的な利点を生み出します。
3秒のログ記録。 画像前処理から栄養検索までの全パイプラインは、現代のスマートフォンで3秒以内に実行されます。量子化(Jacob et al., 2018)やニューラルアーキテクチャ検索(Zoph and Le, 2017)などのモデル最適化技術により、複雑なモデルがモバイルハードウェア上で効率的に動作し、精度を犠牲にすることなく実行されます。
複雑な食事の処理。 マルチラベル検出とセマンティックセグメンテーションにより、各食品アイテムを別々に写真に撮る必要はありません。満載のディナープレートの1枚の写真が、各コンポーネントの個別の栄養内訳を生成します。
異文化間の精度。 継続的な学習とターゲットを絞ったデータ収集により、東京で寿司を食べているときでも、メキシコシティでタコスを食べているときでも、アディスアベバでインジェラを食べているときでも、ロンドンで日曜日のローストを食べているときでも、システムは機能します。モデルは、Nutrolaのグローバルユーザーベースでログされたすべての食事とともに改善されます。
段階的な精度向上。 Nutrolaを使用すればするほど、あなた自身にとっても、すべてのユーザーにとっても、より良くなります。アクティブラーニングにより、モデルは最も必要なケースに焦点を当てて改善します。
確認済みの栄養データ。 不明なエラー率を持つクラウドソースのデータベースに依存するアプリとは異なり、Nutrolaが返すすべてのカロリー数は、ラボで確認された栄養データに裏打ちされています。AIが食品を特定し、確認済みのデータベースが数値の正確性を保証します。
FAQ
NutrolaのAIはどのように写真から食品を認識しますか?
Nutrolaは、多段階のコンピュータビジョンパイプラインを使用しています。あなたの写真はまず画像前処理を経て、次に深層学習検出モデルを通過し、皿の上の各食品アイテムを特定し、セグメント化します。各アイテムは、食品特化データセットで微調整された畳み込みニューラルネットワークを使用して分類され、そのポーションは深度と体積推論を使用して推定され、結果はNutrolaの確認済み栄養データベースにマッピングされ、カロリーとマクロ栄養素の値が生成されます。
Nutrolaの食品認識技術の精度はどのくらいですか?
Nutrolaの分類モデルは、標準的な食品認識ベンチマークで90パーセント以上のトップ1精度を達成し、トップ5精度は95パーセントを超えています。ポーション推定においては、システムは通常、実際の重量の15〜20パーセントの範囲内に収まります。これは、訓練を受けた栄養士の推定精度と同等かそれ以上です。Nutrolaの確認済みデータベースと組み合わせることで、これは手動記録よりもはるかに信頼性の高いカロリー推定を生成します。研究によると、手動記録は摂取量を10〜45パーセント過小評価することが示されています。
Nutrolaの食品認識AIを支える研究やデータセットは何ですか?
Nutrolaの技術は、ImageNetで検証された畳み込みニューラルネットワークを含む基礎的なコンピュータビジョン研究、Faster R-CNNやDETRのようなオブジェクト検出アーキテクチャ、Food-101やUECFOOD-256などの食品特化データセットに基づいています。また、ポーションサイズのための単眼深度推定研究や、継続的なモデル改善のためのアクティブラーニング研究も活用しています。すべての栄養データは、USDA FoodData Centralなどの権威あるソースに照合されています。
Nutrolaは一つの皿に複数の食品を認識できますか?
はい。Nutrolaはマルチラベル検出とセマンティックセグメンテーションを使用して、単一の写真内のすべての異なる食品アイテムを特定し、個別に分析します。あなたの皿に2つのアイテムが含まれている場合でも8つのアイテムが含まれている場合でも、システムはそれぞれを分離し、独立して分類し、ポーションを推定し、アイテムごとの栄養内訳と食事全体の合計を返します。
Nutrolaは異なる料理や文化の食品をどのように扱いますか?
Nutrolaは、広範なカバレッジのトレーニングデータと、過小評価された料理のためのターゲットデータ収集、少数ショット学習技術を組み合わせて、新しい食品カテゴリを比較的少数の例から学習できるようにしています。Nutrolaのグローバルユーザーベースからのユーザーの修正は、トレーニングパイプラインに継続的にフィードバックされ、特定の料理に対する精度が向上します。
Nutrolaの食品認識は時間とともに改善されますか?
はい。Nutrolaはアクティブラーニングを使用しており、これはシステムが自信のない画像を特定し、それらを専門家のレビューと再訓練の優先対象とする機械学習戦略です。全世界でログされた数百万の食事からの集約されたユーザーフィードバックと組み合わせることで、モデルは継続的に改善されます。あなたがログするすべての食事が、Nutrolaの認識をすべてのユーザーにとってより正確にすることに貢献します。