ゼファーネットのロゴ

GenAI を使用してカロリー アドバイザー アプリを構築するにはどうすればよいですか?

日付:

概要

Artificial Intelligence には多くのユースケースがあり、最も優れたユースケースのいくつかは医療業界にあります。それは人々がより健康的な生活を維持するのに本当に役立ちます。ブームが高まる中、 generative AI、最近では、特定のアプリケーションがそれほど複雑ではなく作成されています。構築できる非常に便利なアプリケーションの 1 つは、カロリー アドバイザー アプリです。この記事では、健康に気を配ることからインスピレーションを受けて、これについてのみ説明します。私たちは、食品の画像を入力できるシンプルなカロリー アドバイザー アプリを構築します。このアプリは、食品に含まれる各項目のカロリーを計算するのに役立ちます。このプロジェクトは、AI による健康に焦点を当てた NutriGen の一環です。

ニュートリジェン

学習目標

  • この記事で作成するアプリは、基本的な Prompt エンジニアリングと画像処理技術に基づいています。
  • このユースケースでは Google Gemini Pro Vision API を使用します。
  • 次に、画像処理とプロンプト エンジニアリングを実行するコードの構造を作成します。最後に、Streamlit を使用してユーザー インターフェイスに取り組みます。
  • その後、アプリを ハグ顔 無料のプラットフォーム。
  • また、Gemini が食品の描写に失敗し、その食品のカロリー数が間違っているという出力で直面する問題のいくつかも確認します。この問題に対するさまざまな解決策についても説明します。

前提条件

プロジェクトの実装から始めましょう。その前に、生成 AI と LLM についての基本を理解していることを確認してください。この記事ではゼロから実装していきますので、あまり知識がなくても大丈夫です。

Essential Python Prompt Engineering では、Generative AI の基本的な理解と Google Gemini に精通していることが必要です。さらに、基礎知識としては、 ストリームライト, githubの, ハグ顔 ライブラリは必要です。画像の前処理を目的とした PIL などのライブラリに精通していることも有益です。

この記事は、の一部として公開されました データサイエンスブログ。

目次

プロジェクトパイプライン

この記事では、栄養士や個人が情報に基づいて食品の選択を決定し、健康的なライフスタイルを維持できるように支援する AI アシスタントの構築に取り組みます。

流れは次のようになります。入力画像 -> 画像処理 -> プロンプトエンジニアリング -> 食品の入力画像の出力を取得するための最終関数呼び出し。これは、この問題ステートメントにどのようにアプローチするかについての簡単な概要です。

Gemini Pro Vision の概要

ジェミニプロ マルチモーダルです LLM Googleによって構築されました。基礎からマルチモーダルになるように訓練されました。画像キャプション、 分類これに関する興味深い事実の 1 つは、有名なトランス デコーダ アーキテクチャを使用していることです。複数の種類のデータでトレーニングされ、マルチモーダルな入力を解決する複雑さを軽減し、高品質の出力を提供します。

ステップ1: 仮想環境の作成

仮想環境を作成することは、プロジェクトとその依存関係を分離して他のプロジェクトと重複しないようにするための良い方法であり、異なる仮想環境に必要なライブラリの異なるバージョンを常に存在させることができます。そこで、プロジェクト用の仮想環境を作成します。これを行うには、以下の手順に従います。

  • デスクトップにプロジェクト用の空のフォルダーを作成します。
  • VS Code でこのフォルダーを開きます。
  • ターミナルを開きます。

次のコマンドを記述します。

pip install virtualenv
python -m venv genai_project

sa et 実行ポリシー エラーが発生した場合は、次のコマンドを使用できます。

Set-ExecutionPolicy RemoteSigned -Scope Process

次に、仮想環境をアクティブ化する必要があります。そのためには、次のコマンドを使用します。

.genai_projectScriptsactivate

仮想環境の作成に成功しました。

ステップ Google Colab で仮想環境を作成する

Google Colab で仮想環境を作成することもできます。これを行うための段階的な手順は次のとおりです。

  • 新しい Colab ノートブックを作成する
  • 以下のコマンドを段階的に使用してください
!which python
!python --version
#to check if python is installed or not
%env PYTHONPATH=
# setting python path environment variable in empty value ensuring that python
# won't search for modules and packages in additional directory. It helps
# in avoiding conflicts or unintended module loading.
!pip install virtualenv 
# create virtual environment 
!virtualenv genai_project
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

#This will help download the miniconda installer script which is used to create
# and manage virtual environments in python
!chmod +x Miniconda3-latest-Linux-x86_64.sh
# this command is making our mini conda installer script executable within
# the colab environment. 
!./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
# this is used to run miniconda installer script and 
# specify the path where miniconda should be installed
!conda install -q -y --prefix /usr/local python=3.8 ujson
#this will help install ujson and python 3.8 installation in our venv.
import sys
sys.path.append('/usr/local/lib/python3.8/site-packages/')
#it will allow python to locate and import modules from a venv directory
import os
os.environ['CONDA_PREFIX'] = '/usr/local/envs/myenv'

# used to activate miniconda enviornment 
!python --version
#checks the version of python within the activated miniconda environment

したがって、仮想環境も Google Colab で作成しました。ここで、基本的な .py ファイルを作成する方法を確認してみましょう。

!source myenv/bin/activate
#activating the virtual environment
!echo "print('Hello, world!')" >> my_script.py
# writing code using echo and saving this code in my_script.py file
!python my_script.py
#running my_script.py file

これにより、出力に Hello World が表示されます。それで、それだけです。以上が、Google Colab での仮想環境の操作に関する説明でした。さて、プロジェクトを続けましょう。

ステップ2: 必要なライブラリをインポートする

import streamlit as st
import google.generativeaias genai 
import os 
from dotenv import load_dotenv
load_dotenv()
from PIL import Image

上記のライブラリのインポートで問題が発生した場合は、いつでも「pip install library_name」コマンドを使用してインストールできます。

基本的なユーザー インターフェイスを作成するために Streamlit ライブラリを使用しています。ユーザーは画像をアップロードし、その画像に基づいた出力を取得できます。

Google ジェネレーティブを使用して LLM を取得し、画像を分析して食品の品目ごとのカロリー数を取得します。

画像は、いくつかの基本的な画像前処理を実行するために使用されます。

ステップ3: APIキーの設定

同じディレクトリに新しい .env ファイルを作成し、API キーを保存します。 Googleを取得できます ジェミニ API からのキー Google MakerSuite.

Step4: レスポンスジェネレーター機能

ここでは、レスポンスジェネレータ関数を作成します。段階的に見てみましょう。

まず、遺伝子を利用しました。 Google MakerSuite Web サイトから作成した API を構成するために設定します。次に、入力プロンプトと画像という 2 つの入力パラメーターを受け取る関数 get_gemini_response を作成しました。これは、出力をテキストで返す主要な関数です。

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def get_gemini_response(input_prompt, image):

    model = genai.GenerativeModel('gemini-pro-vision')

    response = model.generate_content([input_prompt, image[0]])

    return response

ここでは、マルチモーダルであるため、「Gemini-pro-vision」モデルを使用しています。 genie.GenerativeModel 依存関係からモデルを呼び出した後は、プロンプトと画像データをモデルに渡すだけです。最後に、プロンプトで提供された指示と供給した画像データに基づいて、モデルは画像内に存在するさまざまな食品のカロリー数を表すテキストの形式で出力を返します。

ステップ5: 画像の前処理

この関数は、uploaded_file パラメータが None であるかどうか、つまりユーザーがファイルをアップロードしたかどうかを確認します。ファイルがアップロードされている場合、コードは、uploaded_file オブジェクトの getvalue() メソッドを使用して、ファイルの内容をバイト単位で読み取ります。これにより、アップロードされたファイルの生のバイトが返されます。

アップロードされたファイルから取得されたバイト データは、キーと値のペア「mime_type」と「data」の下に辞書形式で保存されます。 「mime_type」キーには、アップロードされたファイルの MIME タイプが格納されます。これは、コンテンツのタイプ (image/jpeg、image/png など) を示します。 「data」キーには、アップロードされたファイルの生のバイトが保存されます。

次に、画像データは image_parts という名前のリストに保存されます。このリストには、アップロードされたファイルの MIME タイプとデータを含む辞書が含まれています。

def input_image_setup(uploaded_file):
    if uploaded_file isnotNone:
        #Read the file into bytes
        bytes_data = uploaded_file.getvalue()
        image_parts = [
            {
                "mime_type":uploaded_file.type, 
                "data":bytes_data
            }
        ]
        return image_parts
    else:
        raise FileNotFoundError("No file uploaded")

ステップ6: UIの作成

さて、いよいよプロジェクトのユーザー インターフェイスを作成します。前に述べたように、Streamlit ライブラリを使用してフロントエンドのコードを記述します。

## initialising the streamlit app
st.set_page_config(page_title="Calories Advisor App")
st.header("Calories Advisor App")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image = ""
if uploaded_file isnotNone:
    image = Image.open(uploaded_file)
    st.image(image, caption="Uploaded Image", use_column_width=True)
submit = st.button("Tell me about the total calories")

最初に、set_page_config を使用してページ構成をセットアップし、アプリにタイトルを付けました。次に、ヘッダーを作成し、ユーザーが画像をアップロードできるファイル アップローダー ボックスを追加しました。 St. Image には、ユーザーが UI にアップロードした画像が表示されます。最後に送信ボタンがあり、その後、大規模な言語モデルである Gemini Pro Vision から出力を取得します。

ステップ7: システムプロンプトの作成

今こそクリエイティブになるときです。ここでは、モデルに専門の栄養士として機能するよう依頼する入力プロンプトを作成します。以下のプロンプトを使用する必要はありません。カスタム プロンプトを提供することもできます。今のところ、モデルに特定の動作をするように依頼しています。提供された食品の入力画像に基づいて、モデルにその画像データを読み取って出力を生成するように依頼しています。これにより、画像内に存在する食品のカロリー数が得られ、その食品が健康的かどうかを判断できます。または不健康です。食品が有害な場合は、画像にある食品のより栄養価の高い代替品を提供するよう求めます。ニーズに応じてさらにカスタマイズし、健康状態を追跡する優れた方法を得ることができます。

画像データを正しく読み取れない場合があります。これについてもこの記事の最後で解決策について説明します。

input_prompt = """

You are an expert nutritionist where you need to see the food items from the 
image and calculate the total calories, also give the details of all 
the food items with their respective calorie count in the below fomat.

        1. Item 1 - no of calories

        2. Item 2 - no of calories

        ----

        ----

Finally you can also mention whether the food is healthy or not and also mention 
the percentage split ratio of carbohydrates, fats, fibers, sugar, protein and 
other important things required in our diet. If you find that food is not healthy 
then you must provide some alternative healthy food items that user can have 
in diet.

"""
if submit:

    image_data = input_image_setup(uploaded_file)

    response = get_gemini_response(input_prompt, image_data)

    st.header("The Response is: ")

    st.write(response)

最後に、ユーザーが送信ボタンをクリックすると、画像データが

先ほど作成した input_image_setup 関数。次に、入力プロンプトとこの画像データを、前に作成した get_gemini_response 関数に渡します。先ほど作成したすべての関数を呼び出して、応答として保存された最終出力を取得します。

ステップ8: ハグフェイスにアプリを展開する

さあ、展開の時間です。さぁ、始めよう。

私たちが作成したこのアプリをデプロイする最も簡単な方法を説明します。アプリをデプロイする場合に検討できるオプションは 2 つあります。1 つは Streamlit Share で、もう 1 つは Hugging Face です。ここでは、デプロイメントに Hugging Face を使用します。必要に応じて、Streamlit Share iFaceu での展開を試してみることができます。そのための参照リンクは次のとおりです – Streamlit Share へのデプロイメント

まず、展開に必要なrequirements.txtファイルを簡単に作成しましょう。

ターミナルを開き、以下のコマンドを実行してrequirements.txtファイルを作成します。

pip freeze > requirements.txt1plainText

これにより、requirements という名前の新しいテキスト ファイルが作成されます。すべてのプロジェクトの依存関係がそこで利用可能になります。これでエラーが発生しても問題ありません。いつでも作業ディレクトリに新しいテキスト ファイルを作成し、次に提供する GitHub リンクからrequirements.txt ファイルをコピーして貼り付けることができます。

ここで、これらのファイルが手元にあることを確認してください (これがデプロイメントに必要なものであるため)。

  • app.py
  • .env (API 認証情報用)
  • Requirements.txt

お持ちでない場合は、これらのファイルをすべて取得し、ハグ面でアカウントを作成してください。次に、新しいスペースを作成し、そこにファイルをアップロードします。それだけです。アプリはこの方法で自動的にデプロイされます。また、展開がリアルタイムでどのように行われているかを確認することもできます。何らかのエラーが発生した場合は、シンプルなインターフェイスと、もちろんハグフェイス コミュニティを使用すれば、いつでも問題を解決できます。このコミュニティには、展開中の一般的なバグの解決に関する多くのコンテンツが含まれています。

しばらくすると、アプリが動作していることが確認できるようになります。うおおおお!ついにカロリー予測アプリを作成してデプロイしました。おめでとうございます!! 作成したばかりのアプリの作業リンクを友人や家族と共有できます。

これが、先ほど作成したアプリへの有効なリンクです – The Alorcolourisor App

入力画像を提供してアプリをテストしてみましょう。

前:

ニュートリジェン

後:

ニュートリジェン

これが完全です githubリポジトリのリンク これには、ソース コードやプロジェクトに関するその他の役立つ情報が含まれます。

リポジトリのクローンを作成し、要件に応じてカスタマイズできます。これにより、モデルが正しく適切な出力を生成する能力が強化されるため、プロンプトではより創造的かつ明確になるようにしてください。

改善の範囲

モデルによって生成された出力で発生する可能性のある問題とその解決策:

場合によっては、モデルから正しい出力が得られない状況が発生する可能性があります。これは、モデルが画像を正しく予測できなかったために発生する可能性があります。たとえば、食品の入力画像を与え、その食品にピクルスが含まれている場合、モデルはそれを別のものとみなす可能性があります。これがここでの最大の懸念事項です。

  • これに取り組む 1 つの方法は、少数ショット プロンプト エンジニアリングなどの効果的なプロンプト エンジニアリング手法を使用することです。モデルにサンプルを入力すると、モデルはそれらのサンプルと提供したプロンプトからの学習に基づいて出力を生成します。
  • ここで検討できるもう 1 つの解決策は、カスタム データを作成し、それを微調整することです。 1 つの列に食品の画像を、もう 1 つの列に食品の説明を含むデータを作成できます。これは、モデルが基礎となるパターンを学習し、提供された画像内のアイテムを正しく予測するのに役立ちます。したがって、食べ物の写真のカロリー計算をより正確に出力することが不可欠です。
  • ユーザーに栄養目標について尋ね、それに基づいて出力を生成するようにモデルに依頼することで、さらに進めることができます。 (このようにして、モデルによって生成された出力を調整し、よりユーザー固有の出力を提供できるようになります。)

まとめ

私たちは、カロリー アドバイザー アプリの作成に焦点を当てて、ヘルスケアにおける生成 AI の実践的な応用を掘り下げてきました。このプロジェクトは、個人が食品の選択について十分な情報に基づいた決定を下し、健康的なライフスタイルを維持できるよう支援する AI の可能性を示しています。環境のセットアップから画像処理と迅速なエンジニアリング技術の実装まで、重要な手順を説明しました。このアプリの Hugging Face への展開は、より幅広い視聴者へのアクセシビリティを示しています。画像認識の不正確さなどの課題は、効果的な即時エンジニアリングなどのソリューションで解決されました。結論として、カロリー アドバイザー アプリは、健康を促進するジェネレーティブ AI の変革力を証明しています。

主要な取り組み

  • これまで、プロジェクト パイプラインから始めて、大規模言語モデル Gemini Pro Vision の基本的な概要について多くのことを説明してきました。
  • 次に、ハンズオン実装を開始しました。仮想環境と API キーは Google MakerSuite から作成しました。
  • 次に、作成した仮想環境ですべてのコーディングを実行しました。さらに、Hugging Face や Streamlit Share などの複数のプラットフォームにアプリをデプロイする方法についても説明しました。
  • それとは別に、発生する可能性のある問題を検討し、それらの問題に対する soluFaces について議論しました。
  •  したがって、このプロジェクトに取り組むのは楽しかったです。この記事を最後までお読みいただきありがとうございます。何か新しいことを学んでいただければ幸いです。

よくある質問

Q1 Google Gemini Pro ビジョン モデルとは何ですか?

Google は、マルチモーダル機能で知られる有名な LLM である Gemini Pro Vision を開発しました。画像のキャプション、生成、要約などのタスクを実行します。ユーザーは MakerSuite Web サイトで API キーを作成し、Gemini Pro Vision にアクセスできます。

Q2 ジェネレーティブ AI はヘルスケア/栄養分野にどのように適用できますか?

A. 生成 AI には、現実世界の問題を解決する多くの可能性があります。健康/栄養の分野に応用できる方法としては、医師が症状に基づいて薬を処方したり、栄養アドバイザーとして機能したりして、ユーザーが自分の食事に関する健康的な推奨事項を得るのに役立つことが挙げられます。

Q3 プロンプト エンジニアリングは Generative AIuse のケースをどのように解決しますか?

A. 最近では、迅速なエンジニアリングを習得することが不可欠なスキルです。 Trompt エンジニアリングを基礎から高度まで学ぶのに最適な場所はここです – https://www.promptingguide.ai/

Q4 より正確な出力を生成するモデルの能力を高めるにはどうすればよいでしょうか?

A. より正確な出力を生成するモデルの能力を高めるために、効果的なプロンプト、微調整、検索拡張生成 (RAG) という戦術を使用できます。

この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。

スポット画像

最新のインテリジェンス

スポット画像