手動による食事評価アプローチに関連する問題とコストのために、自動化されたソリューションは、作業を容易かつ迅速化し、その品質を向上させるために必要とされます。今日、自動化されたソリューションは、スマートフォンのカメラで画像を撮るなど、はるかに簡単な方法で人の食事摂取量を記録することができます。本稿では、この分野における最先端のニューラルネットワークを用いた、このような画像ベースのアプローチに焦点を当てます。
特に、食品画像認識用、食品レプリカの画像セグメンテーション用、偽食品用、本物の食品の画像セグメンテーション用の3つのソリューションを紹介します。食品画像認識モデルの出力となるさまざまな食品や飲料のリストを収集します。食品や飲料のリストを TXT や CSV などのテキスト ファイルに保存します。
この記事の作者が使用するテキスト ファイルは、食品ドット TXT の下の補足ファイルに含まれており、520 スロベニアの食品のリストが含まれていることに注意してください。Google カスタム検索 API を使用して、各食品の画像をリストからダウンロードし、各食品アイテムの個別のフォルダに保存する Python スクリプトを作成またはダウンロードします。この記事の作者が使用する Python スクリプトは、ダウンロードイメージドット pi の下の補助ファイルにあります。
このスクリプトを使用する場合、Python スクリプト コードの開発者キー変数開発者キー行 8 と、Python スクリプト コードのカスタム検索エンジン ID 変数 CX 行 28 を使用している Google アカウントに固有の値に置き換える必要があります。ステップ 1.1.3 から Python スクリプトを実行します。CLoDSA ライブラリを使用して、90 度回転して、食品画像データ セットから各画像の新しいバージョンを作成します。
この記事の作者が使用するすべての CLoDSA コマンドを含む Python スクリプトは、NutriNet アンダースコア拡張ドット pi の補足ファイルに含まれるファイルに含まれていることに注意してください。CLoDSA ライブラリを使用して、食品画像データ セットから 180 度回転して、各画像の新しいバージョンを作成します。CLoDSA ライブラリを使用して、食品画像データ セットから 270 度回転して、各画像の新しいバージョンを作成します。
CLoDSA ライブラリを使用して、水平方向に反転して、食品画像データ セットから各画像の新しいバージョンを作成します。CLoDSA ライブラリを使用して、ランダムカラーノイズを追加して、食品画像データセットから各画像の新しいバージョンを作成します。CLoDSA ライブラリを使用して 25% 拡大して、食品画像データ セットから各画像の新しいバージョンを作成します。
手順 1.3.1 ~ 1.3.6 の画像を元の画像と共に新しい食品画像データ セットに保存します。合計で、食品画像あたり7つの変種。ステップ 1.3.7 から食品画像データ・セットを NVIDI 桁環境にインポートし、データ・セットをトレーニング、検証、およびテストのサブセットに分割します。
NutriNet アーキテクチャの定義テキストをコピーして NVIDIA の数字に貼り付けます。NutriNet アーキテクチャ定義は、NutriNet ドット proto TXT の補足ファイルにあります。必要に応じて、NVIDIA の数字でトレーニングハイパーパラメーターを定義するか、デフォルト値を使用します。
この記事の作者が使用するハイパーパラメータは、NutriNetの下の補足ファイルに含まれるファイルに含まれています ハイパーパラメータードット proto TXT.ニュートリネットモデルのトレーニングを実行します。トレーニングが完了したら、最もパフォーマンスの高い NutriNet モデルのイテレーションを取ります。
このモデルは、このアプローチのパフォーマンスをテストするために使用されます。最適なモデルイテレーションを決定する方法は複数あります。詳細については、記事のテキストを参照してください。
偽の食品画像のデータセットを取得します。この記事の著者は、ラボ環境で収集された偽の食品の画像を受け取りました。ピクセルレベルのすべての食品画像に手動でコメントを付けます。
画像の各ピクセルには、そのピクセルがどの食品クラスに属しているかに関する情報が含まれている必要があります。これを実現するための多くのツールがあることに注意してください。この記事の著者は、JavaScript セグメントアノターを使用しました。
このステップの結果は、食品画像データセットの各画像に対して1つの注釈画像となり、各ピクセルは食品クラスの1つを表します。セクション 1.3 と同じ手順を実行しますが、食品画像データ セットのトレーニング サブセットからのイメージに対してのみ実行します。ステップ 1.3.5 を除き、対応する注釈イメージに対するすべてのデータ拡張手順も実行する必要があります。
ステップ 1.4.2 を除いて、セクション 1.4 と同じステップを実行します。そのステップの代わりに、ステップ 2.3.2 および 2.3.3 を実行します。この記事の作者が使用するトレーニングハイパーパラメータは、FCN-8Sアンダースコアのハイパーパラメータドットproto TXTの下の補助ファイルに含まれているファイルに含まれていることに注意してください。
FCN-8S アーキテクチャの定義テキストをコピーして、NVIDIA の数字に貼り付けます。事前トレーニング済み FCN-8S モデルの重みを NVIDIA の数字に入力します。これらのモデルの重みは、Pascal ビジュアルオブジェクトクラスのデータセットで事前にトレーニングされており、インターネット上で見つけることができます。
食品認識チャレンジのウェブサイトから、食品画像のデータセットをダウンロードしてください。ステップ 1.3.1 から 1.3.4 を実行します。この記事の作者が使用するすべての CLoDSA コマンドを含む Python スクリプトは、FRC アンダースコアオーグメントドット pi の補足ファイルに含まれているファイルに含まれていることに注意してください。
CLoDSA ライブラリを使用して、ガウス ブラーを追加して、食品画像データ セットから各画像の新しいバージョンを作成します。CLoDSA ライブラリを使用して、シャープ化して、食品画像データ セットから各画像の新しいバージョンを作成します。CLoDSA ライブラリを使用して、食品画像データ セットから新しいバージョンの各画像を作成し、ガンマ補正を適用します。
ステップ 3.2.1 から 3.2.4 までの画像を元の画像と共に新しい食品画像データ セットに保存します。合計で、食品画像あたり8つの変種。ステップ 3.2.2 ~ 3.2.4 の画像を元の画像と共に、新しい食品画像データ セットに保存します。
合計で、食品画像ごとに4つの変種。既存の HTC ResNet 101 アーキテクチャ定義を MM 検出ライブラリから変更して、手順 3.1.1、3.2.5、および 3.2.6 の食品イメージ データ セットを受け入れるようにします。必要に応じて、ステップ 3.3.1 から HTC ResNet 101 アーキテクチャ定義を変更して、トレーニングハイパーパラメーターを定義するか、デフォルト値を使用します。
変更された HTC ResNet 101 アーキテクチャ定義は、HTC アンダースコア ResNet 101 ドット pi の下の補足ファイルに含まれています。MM検出ライブラリを使用して、ステップ3.1.1から食品画像データセットに対してHTC ResNet 101モデルのトレーニングを実行します。ステップ 3.3.3 からのトレーニングが完了したら、最もパフォーマンスの高い HTC ResNet 101 モデルの反復処理を行い、ステップ 3.2.5 から食品画像データ セットに対する次の段階のトレーニングを実行して微調整します。
最適なモデルイテレーションを決定する方法は複数あります。詳細については、記事のテキストを参照してください。これは、次の手順にも関連しています。
ステップ 3.3.4 からのトレーニングが完了したら、最もパフォーマンスの高い HTC ResNet 101 モデルの反復処理を行い、ステップ 3.2.6 から食品画像データ セットの次の段階のトレーニングを実行して微調整します。ステップ 3.3.5 からのトレーニングが完了したら、最もパフォーマンスの高い HTC ResNet 101 モデルの反復処理を行い、ステップ 3.2.5 から食品画像データ セットの次の段階のトレーニングを再度実行して微調整します。ステップ 3.3.6 からのトレーニングが完了したら、最もパフォーマンスのよい HTC ResNet 101 モデルの反復を取ります。
このモデルは、このアプローチのパフォーマンスをテストするために使用されます。手順 3.3.3 ~ 3.3.7 は、この記事の作者が定義した目的に最適な結果を得られたことに注意してください。各データ セットで、トレーニングとデータ拡張の最適な順序を見つけるためには、実験が必要です。
トレンドモデルのテスト後、NutriNetは認識データセットで86.72%の分類精度を達成しました。FCN-8S偽食品画像セグメンテーションモデルの精度を測定するために、画素精度測定を用いた。訓練されたFCN-8Sモデルの精度は92.18%食品画像セグメンテーションのためのResNetベースのソリューションは、食品認識チャレンジで定義された精度測定を使用して評価されました。
この測定を用いて、列車モデルは食品認識チャレンジで2位にランクされた59.2%の平均精度を達成しました。近年、ディープニューラルネットワークは、食品画像を認識するための適切なソリューションとして複数回検証されています。この記事で紹介した私たちの仕事は、これをさらに証明するのに役立ちます。
単一出力の食品画像認識アプローチは簡単で、簡単なアプリケーションに使用できます。食品画像のセグメンテーションアプローチでは、コメント付き画像を作成する作業が増えますが、実際の画像にははるかに適用可能です。今後の目標は、現実世界の画像に関する開発された手順をさらに評価することです。
現実世界の検証に向けた最初のステップは、現実世界の食品画像のデータセットを含む食品認識チャレンジによって提供されました。しかし、世界中の食べ物のイメージと栄養士と協力して、このアプローチを検証するために、さらなる作業を行う必要があります。