Zephyrnet-Logo

Wie erstellt man mit GenAI eine Kalorienberater-App?

Datum:

Einleitung

Artificial Intelligence Es gibt viele Anwendungsfälle, und einige der besten liegen in der Gesundheitsbranche. Es kann Menschen wirklich dabei helfen, ein gesünderes Leben zu führen. Mit dem zunehmenden Boom in generative KIBestimmte Anwendungen werden heutzutage mit weniger Komplexität erstellt. Eine sehr nützliche Anwendung, die erstellt werden kann, ist die Calorie Advisor App. In diesem Artikel werden wir uns nur damit befassen, inspiriert von der Sorge um unsere Gesundheit. Wir werden eine einfache Kalorienberater-App erstellen, in die wir die Bilder des Lebensmittels eingeben können, und die App wird uns dabei helfen, die Kalorien jedes im Lebensmittel enthaltenen Artikels zu berechnen. Dieses Projekt ist Teil von NutriGen und konzentriert sich auf Gesundheit durch KI.

NutriGenie

Lernziel

  • Die App, die wir in diesem Artikel erstellen werden, basiert auf grundlegenden Techniken der Prompt-Entwicklung und Bildverarbeitung.
  • Für unseren Anwendungsfall verwenden wir die Google Gemini Pro Vision API.
  • Anschließend erstellen wir die Struktur des Codes, in der wir die Bildverarbeitung und das Prompt Engineering durchführen. Abschließend werden wir mit Streamlit an der Benutzeroberfläche arbeiten.
  • Danach werden wir unsere App auf dem bereitstellen Gesicht umarmen Plattform kostenlos.
  • Wir werden auch einige der Probleme sehen, mit denen wir in der Ausgabe konfrontiert werden, wenn Gemini ein Lebensmittel nicht darstellt und die falsche Kalorienzahl für dieses Lebensmittel angibt. Wir werden auch verschiedene Lösungen für dieses Problem diskutieren.

Voraussetzungen

Beginnen wir mit der Umsetzung unseres Projekts, aber stellen Sie vorher bitte sicher, dass Sie über ein grundlegendes Verständnis von generativer KI und LLMs verfügen. Es ist in Ordnung, wenn Sie nur sehr wenig wissen, denn in diesem Artikel werden wir Dinge von Grund auf implementieren.

Für Essential Python Prompt Engineering sind grundlegende Kenntnisse der generativen KI und Vertrautheit mit Google Gemini erforderlich. Darüber hinaus Grundkenntnisse in Stromlit, Github und Gesicht umarmen Bibliotheken sind notwendig. Auch die Kenntnis von Bibliotheken wie PIL für Bildvorverarbeitungszwecke ist von Vorteil.

Dieser Artikel wurde als Teil des veröffentlicht Data Science-Blogathon.

Inhaltsverzeichnis

Projektpipeline

In diesem Artikel arbeiten wir an der Entwicklung eines KI-Assistenten, der Ernährungswissenschaftler und Einzelpersonen dabei unterstützt, fundierte Entscheidungen über ihre Lebensmittelauswahl zu treffen und einen gesunden Lebensstil aufrechtzuerhalten.

Der Ablauf sieht so aus: Eingabebild -> Bildverarbeitung -> Eingabeaufforderung -> letzter Funktionsaufruf, um die Ausgabe des Eingabebildes des Lebensmittels zu erhalten. Dies ist ein kurzer Überblick darüber, wie wir diese Problemstellung angehen werden.

Übersicht über Gemini Pro Vision

Zwillinge Pro ist ein Multimodal LLM von Google erstellt. Es wurde von Grund auf auf Multimodalität trainiert. Es kann bei verschiedenen Aufgaben gut funktionieren, einschließlich Bildunterschriften, Einstufung, Zusammenfassung, Beantwortung von Fragen usw. Eine der faszinierenden Tatsachen daran ist, dass es unsere berühmte Transformer-Decoder-Architektur verwendet. Es wurde auf mehreren Arten von Daten trainiert, wodurch die Komplexität der Lösung multimodaler Eingaben reduziert und qualitativ hochwertige Ergebnisse bereitgestellt wurden.

Schritt 1: Erstellen der virtuellen Umgebung

Das Erstellen einer virtuellen Umgebung ist eine gute Vorgehensweise, um unser Projekt und seine Abhängigkeiten so zu isolieren, dass sie nicht mit anderen übereinstimmen, und wir können immer über verschiedene Versionen von Bibliotheken verfügen, die wir in verschiedenen virtuellen Umgebungen benötigen. Daher werden wir jetzt eine virtuelle Umgebung für das Projekt erstellen. Befolgen Sie dazu die unten aufgeführten Schritte:

  • Erstellen Sie auf dem Desktop einen leeren Ordner für das Projekt.
  • Öffnen Sie diesen Ordner in VS Code.
  • Öffnen Sie das Terminal.

Schreiben Sie den folgenden Befehl:

pip install virtualenv
python -m venv genai_project

Sie können den folgenden Befehl verwenden, wenn Sie den Fehler „Sa et Execution Policy“ erhalten:

Set-ExecutionPolicy RemoteSigned -Scope Process

Jetzt müssen wir unsere virtuelle Umgebung aktivieren. Verwenden Sie dazu den folgenden Befehl:

.genai_projectScriptsactivate

Wir haben unsere virtuelle Umgebung erfolgreich erstellt.

Schritt: Erstellen Sie eine virtuelle Umgebung in Google Colab

Wir können unsere virtuelle Umgebung auch in Google Colab erstellen; Hier ist die Schritt-für-Schritt-Anleitung dazu:

  • Erstellen Sie ein neues Colab-Notizbuch
  • Verwenden Sie die folgenden Befehle Schritt für Schritt
!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

Daher haben wir auch unsere virtuelle Umgebung in Google Colab erstellt. Sehen wir uns nun an, wie wir dort eine einfache .py-Datei erstellen können.

!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

Dadurch wird „Hello World“ für uns in der Ausgabe gedruckt. Das war's. Dabei ging es um die Arbeit mit virtuellen Umgebungen in Google Colab. Fahren wir nun mit dem Projekt fort.

Schritt 2: Notwendige Bibliotheken importieren

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

Wenn Sie Probleme beim Importieren einer der oben genannten Bibliotheken haben, können Sie sie jederzeit mit dem Befehl „pip install Bibliotheksname“ installieren.

Wir verwenden die Streamlit-Bibliothek, um die grundlegende Benutzeroberfläche zu erstellen. Der Benutzer kann ein Bild hochladen und die auf diesem Bild basierenden Ausgaben erhalten.

Wir verwenden Google Generative, um das LLM zu erhalten und das Bild zu analysieren, um die Kalorienanzahl pro Artikel in unserem Essen zu ermitteln.

Das Bild wird verwendet, um einige grundlegende Bildvorverarbeitungen durchzuführen.

Schritt 3: Einrichten des API-Schlüssels

Erstellen Sie eine neue .env-Datei im selben Verzeichnis und speichern Sie Ihren API-Schlüssel. Sie können das Google bekommen Gemini-API Schlüssel von Google MakerSuite.

Schritt 4: Antwortgeneratorfunktion

Hier erstellen wir eine Antwortgeneratorfunktion. Lassen Sie es uns Schritt für Schritt aufschlüsseln:

Erstens haben wir Gene verwendet. Konfigurieren, um die API zu konfigurieren, die wir auf der Google MakerSuite-Website erstellt haben. Dann haben wir die Funktion get_gemini_response erstellt, die zwei Eingabeparameter aufnimmt: die Eingabeaufforderung und das Bild. Dies ist die primäre Funktion, die die Ausgabe in Textform zurückgibt.

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

Hier verwenden wir das „Gemini-pro-vision“-Modell, weil es multimodal ist. Nachdem wir unser Modell über die genie.GenerativeModel-Abhängigkeit aufgerufen haben, übergeben wir lediglich unsere Eingabeaufforderung und die Bilddaten an das Modell. Basierend auf den Anweisungen in der Eingabeaufforderung und den von uns eingegebenen Bilddaten gibt das Modell schließlich die Ausgabe in Form eines Textes zurück, der die Kalorienzahl der verschiedenen im Bild vorhandenen Lebensmittel darstellt.

Schritt 5: Bildvorverarbeitung

Diese Funktion prüft, ob der Parameter uploaded_file None ist, was bedeutet, dass der Benutzer eine Datei hochgeladen hat. Wenn eine Datei hochgeladen wurde, liest der Code den Dateiinhalt mithilfe der getvalue()-Methode des uploaded_file-Objekts in Bytes ein. Dadurch werden die Rohbytes der hochgeladenen Datei zurückgegeben.

Die aus der hochgeladenen Datei erhaltenen Byte-Daten werden in einem Wörterbuchformat unter dem Schlüssel-Wert-Paar „mime_type“ und „data“ gespeichert. Der Schlüssel „mime_type“ speichert den MIME-Typ der hochgeladenen Datei, der den Typ des Inhalts angibt (z. B. Bild/JPEG, Bild/PNG). Der „Daten“-Schlüssel speichert die Rohbytes der hochgeladenen Datei.

Die Bilddaten werden dann in einer Liste namens image_parts gespeichert, die ein Wörterbuch mit dem MIME-Typ und den Daten der hochgeladenen Datei enthält.

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")

Schritt 6: Erstellen der Benutzeroberfläche

Nun ist es endlich an der Zeit, die Benutzeroberfläche für unser Projekt zu erstellen. Wie bereits erwähnt, werden wir die Streamlit-Bibliothek verwenden, um den Code für das Frontend zu schreiben.

## 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")

Zunächst haben wir die Seitenkonfiguration mit set_page_config eingerichtet und der App einen Titel gegeben. Anschließend haben wir eine Kopfzeile erstellt und ein Feld zum Hochladen von Dateien hinzugefügt, in das Benutzer Bilder hochladen können. St. Image zeigt das Bild, das der Benutzer auf die Benutzeroberfläche hochgeladen hat. Schließlich gibt es eine Schaltfläche zum Senden, über die wir die Ausgaben unseres großen Sprachmodells Gemini Pro Vision erhalten.

Schritt 7: Schreiben der Systemaufforderung

Jetzt ist es an der Zeit, kreativ zu sein. Hier erstellen wir unsere Eingabeaufforderung und bitten das Modell, als erfahrener Ernährungsberater zu fungieren. Es ist nicht notwendig, die Eingabeaufforderung unten zu verwenden. Sie können auch Ihre individuelle Eingabeaufforderung bereitstellen. Wir fordern unser Modell auf, sich vorerst auf eine bestimmte Art und Weise zu verhalten. Basierend auf dem Eingabebild des bereitgestellten Lebensmittels bitten wir unser Modell, diese Bilddaten zu lesen und die Ausgabe zu generieren, die uns die Kalorienzahl der im Bild vorhandenen Lebensmittel liefert und eine Beurteilung darüber ermöglicht, ob das Lebensmittel gesund ist oder ungesund. Wenn das Lebensmittel schädlich ist, bitten wir es, nährstoffreichere Alternativen zu den Lebensmitteln in unserem Bild anzubieten. Sie können es individueller an Ihre Bedürfnisse anpassen und erhalten eine hervorragende Möglichkeit, den Überblick über Ihre Gesundheit zu behalten.

Manchmal kann es sein, dass die Bilddaten nicht richtig gelesen werden können. Lösungen hierzu werden wir ebenfalls am Ende dieses Artikels besprechen.

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)

Abschließend prüfen wir, ob wir die Bilddaten vom Benutzer erhalten, wenn er auf die Schaltfläche „Senden“ klickt

input_image_setup-Funktion, die wir zuvor erstellt haben. Anschließend übergeben wir unsere Eingabeaufforderung und diese Bilddaten an die Funktion get_gemini_response, die wir zuvor erstellt haben. Wir rufen alle Funktionen auf, die wir zuvor erstellt haben, um die endgültige Ausgabe als Antwort zu speichern.

Schritt 8: Bereitstellen der App auf Hugging Face

Jetzt ist die Zeit für den Einsatz gekommen. Lass uns anfangen.

Erläutert die einfachste Möglichkeit zur Bereitstellung dieser von uns erstellten App. Es gibt zwei Optionen, die wir prüfen können, wenn wir unsere App bereitstellen möchten: eine ist Streamlit Share und die andere ist Hugging Face. Hier verwenden wir Hugging Face für die Bereitstellung; Wenn Sie möchten, können Sie versuchen, die Bereitstellung auf Streamlit Share iFaceu zu erkunden. Hier ist der Referenzlink dafür – Bereitstellung auf Streamlit Share

Erstellen wir zunächst schnell die Datei „requirements.txt“, die wir für die Bereitstellung benötigen.

Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um eine Datei „requirements.txt“ zu erstellen.

pip freeze > requirements.txt1plainText

Dadurch wird eine neue Textdatei mit dem Namen „Anforderungen“ erstellt. Dort sind alle Projektabhängigkeiten verfügbar. Wenn dies einen Fehler verursacht, ist das in Ordnung. Sie können jederzeit eine neue Textdatei in Ihrem Arbeitsverzeichnis erstellen und die Datei „requirements.txt“ über den GitHub-Link, den ich als Nächstes bereitstelle, kopieren und einfügen.

Stellen Sie nun sicher, dass Sie diese Dateien zur Hand haben (denn diese benötigen wir für die Bereitstellung):

  • app.py.
  • .env (für die API-Anmeldeinformationen)
  • requirements.txt

Wenn Sie noch keins haben, nehmen Sie alle diese Dateien und erstellen Sie ein Konto auf dem umarmenden Gesicht. Erstellen Sie dann einen neuen Bereich und laden Sie die Dateien dort hoch. Das ist alles. Ihre App wird auf diese Weise automatisch bereitgestellt. Sie können auch in Echtzeit sehen, wie die Bereitstellung erfolgt. Wenn ein Fehler auftritt, können Sie ihn jederzeit über die einfache Benutzeroberfläche und natürlich über die Community mit den umarmenden Gesichtern herausfinden, die viele Inhalte zur Behebung einiger häufiger Fehler während der Bereitstellung bereithält.

Nach einiger Zeit werden Sie sehen, dass die App funktioniert. Juhuu! Wir haben endlich unsere Kalorienvorhersage-App erstellt und bereitgestellt. Herzlichen Glückwunsch!! Sie können den Arbeitslink der App mit den Freunden und der Familie teilen, die Sie gerade erstellt haben.

Hier ist der funktionierende Link zu der App, die wir gerade erstellt haben – The Alorcalorieisor Applikation

Testen wir unsere App, indem wir ihr ein Eingabebild bereitstellen:

Vor:

NutriGenie

Nach:

NutriGenie

Hier ist das komplette Github-Repository-Link Dazu gehören Quellcode und andere hilfreiche Informationen zum Projekt.

Sie können das Repository klonen und es entsprechend Ihren Anforderungen anpassen. Versuchen Sie, Ihre Eingabeaufforderung kreativer und klarer zu formulieren, da dies Ihrem Modell mehr Möglichkeiten gibt, korrekte und ordnungsgemäße Ausgaben zu generieren.

Umfang der Verbesserung

Probleme, die bei den vom Modell generierten Ausgaben auftreten können, und deren Lösungen:

Manchmal kann es Situationen geben, in denen Sie vom Modell nicht die korrekte Ausgabe erhalten. Dies kann passieren, weil das Modell das Bild nicht richtig vorhersagen konnte. Wenn Sie beispielsweise Eingabebilder Ihres Lebensmittels angeben und Ihr Lebensmittel eingelegte Gurken enthält, betrachtet unser Modell es möglicherweise als etwas anderes. Dies ist hier das Hauptanliegen.

  • Eine Möglichkeit, dieses Problem anzugehen, sind effektive Prompt-Engineering-Techniken, wie z. B. Few-Shot-Prompt-Engineering, bei dem Sie das Modell mit Beispielen füttern können und es dann die Ergebnisse basierend auf den Erkenntnissen aus diesen Beispielen und dem von Ihnen bereitgestellten Prompt generiert.
  • Eine weitere Lösung, die hier in Betracht gezogen werden kann, ist die Erstellung unserer benutzerdefinierten Daten und deren Feinabstimmung. Wir können Daten erstellen, die in einer Spalte ein Bild des Lebensmittels und in der anderen Spalte eine Beschreibung der vorhandenen Lebensmittel enthalten. Dies wird unserem Modell helfen, die zugrunde liegenden Muster zu lernen und die Elemente im bereitgestellten Bild korrekt vorherzusagen. Daher ist es wichtig, korrektere Ergebnisse der Kalorienzahl für die Bilder der Lebensmittel zu erhalten.
  • Wir können noch weiter gehen, indem wir den Benutzer nach seinen Ernährungszielen fragen und das Modell bitten, darauf basierend Ergebnisse zu generieren. (Auf diese Weise können wir die vom Modell generierten Ausgaben anpassen und benutzerspezifischere Ausgaben liefern.)

Zusammenfassung

Wir haben uns mit der praktischen Anwendung generativer KI im Gesundheitswesen befasst und uns dabei auf die Entwicklung der Calorie Advisor App konzentriert. Dieses Projekt zeigt das Potenzial von KI, Einzelpersonen dabei zu unterstützen, fundierte Entscheidungen über ihre Lebensmittelauswahl zu treffen und einen gesunden Lebensstil aufrechtzuerhalten. Von der Einrichtung unserer Umgebung bis zur Implementierung von Bildverarbeitungs- und Prompt-Engineering-Techniken haben wir die wesentlichen Schritte abgedeckt. Die Bereitstellung der App auf Hugging Face demonstriert ihre Zugänglichkeit für ein breiteres Publikum. Herausforderungen wie Ungenauigkeiten bei der Bilderkennung wurden mit Lösungen wie effektivem Prompt Engineering angegangen. Zusammenfassend lässt sich sagen, dass die Calorie Advisor App ein Beweis für die transformative Kraft der generativen KI bei der Förderung des Wohlbefindens ist.

Key Take Away

  • Wir haben bisher viel besprochen, angefangen mit der Projektpipeline und dann einer grundlegenden Einführung in das große Sprachmodell Gemini Pro Vision.
  • Dann begannen wir mit der praktischen Umsetzung. Wir haben unsere virtuelle Umgebung und unseren API-Schlüssel von Google MakerSuite erstellt.
  • Anschließend führten wir die gesamte Codierung in der erstellten virtuellen Umgebung durch. Darüber hinaus haben wir besprochen, wie die App auf mehreren Plattformen bereitgestellt werden kann, beispielsweise Hugging Face und Streamlit Share.
  • Darüber hinaus haben wir die möglichen Probleme betrachtet, die auftreten können, und Lösungen für diese Probleme besprochen.
  •  Daher hat es Spaß gemacht, an diesem Projekt zu arbeiten. Vielen Dank, dass Sie bis zum Ende dieses Artikels geblieben sind. Ich hoffe, du hast etwas Neues lernen können.

Häufig gestellte Fragen

Q1. Was ist das Google Gemini Pro Vision-Modell?

Google hat Gemini Pro Vision entwickelt, ein renommiertes LLM, das für seine multimodalen Fähigkeiten bekannt ist. Es führt Aufgaben wie Bildbeschriftung, Generierung und Zusammenfassung aus. Benutzer können auf der MakerSuite-Website einen API-Schlüssel erstellen, um auf Gemini Pro Vision zuzugreifen.

Q2. Wie kann generative KI auf den Bereich Gesundheitswesen/Ernährung angewendet werden?

A. Generative KI hat großes Potenzial zur Lösung realer Probleme. Es kann unter anderem auf den Gesundheits-/Ernährungsbereich angewendet werden, indem es Ärzten hilft, auf der Grundlage der Symptome Medikamente zu verschreiben, und als Ernährungsberater fungiert, von dem Benutzer gesunde Empfehlungen für ihre Ernährung erhalten können.

Q3. Wie löst Prompt Engineering den Anwendungsfall der generativen KI?

A. Schnelles Engineering ist heutzutage eine wesentliche Fähigkeit, die es zu beherrschen gilt. Der beste Ort, um Trompt Engineering von Grundkenntnissen bis zu Fortgeschrittenen zu erlernen, ist hier – https://www.promptingguide.ai/

Q4. Wie kann die Fähigkeit des Modells erhöht werden, korrektere Ausgaben zu generieren?

A. Um die Fähigkeit des Modells zu erhöhen, korrektere Ausgaben zu generieren, können wir die folgenden Taktiken verwenden: Effektive Eingabeaufforderung, Feinabstimmung und Retrieval-Augmented Generation (RAG).

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

spot_img

Neueste Intelligenz

spot_img