Erfahren Sie, wie Sie mit dem neuesten Modell Germini-1.5-pro von Google eine generative KI-App zum Kalorienzählen entwickeln können.

Foto von Eingelegter Sternenstaub An Unsplash

Haben Sie sich schon einmal gefragt, wie viele Kalorien Sie beispielsweise beim Abendessen zu sich nehmen? Ich tue das ständig. Wäre es nicht wunderbar, wenn Sie einfach ein Bild Ihres Tellers durch eine App laufen lassen und eine Schätzung der Gesamtkalorienzahl erhalten könnten, bevor Sie entscheiden, wie weit Sie hineingreifen möchten?

Diese von mir erstellte Kalorienzähler-App kann Ihnen dabei helfen. Es handelt sich um eine Python-Anwendung, die Googles Gemini-1.5-Professional-Newest-Modell verwendet, um die Anzahl der Kalorien in Lebensmitteln zu schätzen.

Die App akzeptiert zwei Eingaben: eine Frage zum Essen und ein Bild des Essens oder der Lebensmittel oder einfach eines Tellers mit Essen. Sie gibt eine Antwort auf die Frage, die Gesamtkalorienzahl im Bild und eine Aufschlüsselung der Kalorien für jedes Lebensmittel im Bild aus.

In diesem Artikel erkläre ich den gesamten Finish-to-Finish-Prozess der Erstellung der App von Grund auf mithilfe von Google Gemini-1.5-pro-latest (ein von Google veröffentlichtes generatives KI-Modell für große Sprachen) und wie ich das Entrance-Finish der Anwendung mit Streamlit entwickelt habe.

Es ist hier erwähnenswert, dass es angesichts der Fortschritte in der Welt der KI die Pflicht der Datenwissenschaftler ist, schrittweise vom traditionellen Deep Studying zu generativen KI-Techniken überzugehen, um ihre Rolle zu revolutionieren. Dies ist mein Hauptziel bei der Aufklärung zu diesem Thema.

Lassen Sie mich zunächst kurz Gemini-1.5-pro-latest und das Streamlit-Framework erklären, da sie die Hauptkomponenten der Infrastruktur dieser Kalorienzähler-App sind.

Gemini-1.5-pro-latest ist ein fortschrittliches KI-Sprachmodell, das von Google entwickelt wurde. Da es sich um die neueste Model handelt, verfügt es im Vergleich zu früheren Versionen über verbesserte Fähigkeiten im Hinblick auf schnellere Reaktionszeiten und verbesserte Genauigkeit bei der Verarbeitung natürlicher Sprache und beim Erstellen von Anwendungen.

Dies ist ein multimodales Modell, das sowohl mit Texten als auch mit Bildern funktioniert – eine Weiterentwicklung des Google Gemini-Professional-Modells, das nur mit Textaufforderungen funktioniert.

Das Modell funktioniert, indem es auf der Grundlage von Eingabeaufforderungen wie Menschen Textual content versteht und generiert. In diesem Artikel wird dieses Modell verwendet, um Textual content für unsere Kalorienzähler-App zu generieren.

Gemini-1.5-pro-latest kann in andere Anwendungen integriert werden, um deren KI-Fähigkeiten zu verstärken. In dieser aktuellen Anwendung verwendet das Modell generative KI-Techniken, um das hochgeladene Bild in einzelne Lebensmittel zu zerlegen. Basierend auf seinem kontextuellen Verständnis der Lebensmittel aus seiner Nährwertdatenbank schätzt es mithilfe von Bilderkennung und Objekterkennung die Anzahl der Kalorien und addiert dann die Kalorien aller Elemente im Bild.

Streamlit ist ein Open-Supply-Python-Framework, das die Benutzeroberfläche verwaltet. Dieses Framework vereinfacht die Webentwicklung, sodass Sie während des gesamten Projekts keine HTML- und CSS-Codes für das Frontend schreiben müssen.

Lassen Sie uns mit der Erstellung der App beginnen.

Ich zeige Ihnen, wie Sie die App in 5 klaren Schritten erstellen.

1. Richten Sie Ihre Ordnerstruktur ein

Öffnen Sie zunächst Ihren bevorzugten Code-Editor (meiner ist VS Code) und starten Sie eine Projektdatei. Nennen Sie sie beispielsweise Energy-Counter. Dies ist das aktuelle Arbeitsverzeichnis. Erstellen Sie eine virtuelle Umgebung (venv), aktivieren Sie sie in Ihrem Terminal und erstellen Sie dann die folgenden Dateien: .env, energy.py, necessities.txt.

Hier eine Empfehlung für das Aussehen Ihrer Ordnerstruktur:

Energy-Counter/
├── venv/
│ ├── xxx
│ ├── xxx
├── .env
├── energy.py
└── necessities.txt

Bitte beachten Sie, dass Gemini-1.5-Professional ​​am besten mit Python-Versionen 3.9 und höher funktioniert.

2. Holen Sie sich den Google API-Schlüssel

Wie andere Gemini-Modelle ist Gemini-1.5-pro-latest derzeit kostenlos für die öffentliche Nutzung verfügbar. Für den Zugriff ist ein API-Schlüssel erforderlich, den Sie von Google AI Studio erhalten, indem Sie in diesem Hyperlink. Sobald der Schlüssel generiert ist, kopieren Sie ihn zur späteren Verwendung in Ihrem Code. Speichern Sie diesen Schlüssel wie folgt als Umgebungsvariable in der .env-Datei.

GOOGLE_API_KEY="paste the generated key right here"

3. Abhängigkeiten installieren

Geben Sie die folgenden Bibliotheken in Ihre Datei necessities.txt ein.

  • streamlit
  • Google-generativeai
  • python-dotenv

Installieren Sie im Terminal die Bibliotheken in necessities.txt mit:

python -m pip set up -r necessities.txt

4. Schreiben Sie das Python-Skript

Beginnen wir nun mit dem Schreiben des Python-Skripts in energy.py. Importieren Sie mit dem folgenden Code alle erforderlichen Bibliotheken:

# import the libraries
from dotenv import load_dotenv
import streamlit as st
import os
import google.generativeai as genai
from PIL import Picture

So werden die verschiedenen importierten Module verwendet:

  • dotenv – Da diese Anwendung über eine Umgebungsvariable für den Google API-Schlüssel konfiguriert wird, wird dotenv verwendet, um die Konfiguration aus der .env-Datei zu laden.
  • Streamlit – zur Erstellung einer interaktiven Benutzeroberfläche für das Frontend
  • Das Modul os wird verwendet, um das aktuelle Arbeitsverzeichnis zu verwalten, während Dateioperationen ausgeführt werden, wie z. B. das Abrufen des API-Schlüssels aus der .env-Datei
  • Das Modul google.generativeai gibt uns natürlich Zugriff auf das Gemini-Modell, das wir gleich verwenden werden.
  • PIL ist eine Python-Bildbibliothek zum Verwalten von Bilddateiformaten.

Die folgenden Zeilen konfigurieren die API-Schlüssel und laden sie aus dem Speicher für Umgebungsvariablen.

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

load_dotenv()

Definieren Sie eine Funktion, die beim Aufruf die neueste Model von Gemini-1.5-pro lädt und die folgende Antwort erhält:

def get_gemini_reponse(input_prompt,picture,user_prompt):
mannequin=genai.GenerativeModel('gemini-1.5-pro-latest')
response=mannequin.generate_content((input_prompt,picture(0),user_prompt))
return response.textual content

In der obigen Funktion sehen Sie, dass sie als Eingabe die Eingabeaufforderung verwendet, die weiter unten im Skript angegeben wird, ein vom Benutzer bereitgestelltes Bild und eine vom Benutzer bereitgestellte Benutzeraufforderung/Frage. All dies geht in das Gemini-Modell ein, um den Antworttext zurückzugeben.

Da Gemini-1.5-pro Eingabebilder in Type von Byte-Arrays erwartet, besteht der nächste Schritt darin, eine Funktion zu schreiben, die das hochgeladene Bild verarbeitet und in Bytes umwandelt.

def input_image_setup(uploaded_file):
# Verify if a file has been uploaded
if uploaded_file will not be None:
# Learn the file into bytes
bytes_data = uploaded_file.getvalue()

image_parts = (
{
"mime_type": uploaded_file.sort, # Get the mime sort of the uploaded file
"knowledge": bytes_data
}
)
return image_parts
else:
increase FileNotFoundError("No file uploaded")

Geben Sie als Nächstes die Eingabeaufforderung an, die das Verhalten Ihrer App bestimmt. Hier sagen wir Gemini einfach, was mit dem Textual content und dem Bild geschehen soll, die der App vom Benutzer zugeführt werden.

input_prompt="""
You're an knowledgeable nutritionist.
It's best to reply the query entered by the person within the enter primarily based on the uploaded picture you see.
You also needs to take a look at the meals gadgets discovered within the uploaded picture and calculate the overall energy.
Additionally, present the main points of each meals merchandise with energy consumption within the format under:

1. Merchandise 1 - no of energy
2. Merchandise 2 - no of energy
----
----

"""

Der nächste Schritt besteht darin, Streamlit zu initialisieren und eine einfache Benutzeroberfläche für Ihre Kalorienzähler-App zu erstellen.

st.set_page_config(page_title="Gemini Calorie Counter App")
st.header("Calorie Counter App")
enter=st.text_input("Ask any query associated to your meals: ",key="enter")
uploaded_file = st.file_uploader("Add a picture of your meals", sort=("jpg", "jpeg", "png"))
picture=""
if uploaded_file will not be None:
picture = Picture.open(uploaded_file)
st.picture(picture, caption="Uploaded Picture.", use_column_width=True) #present the picture

submit=st.button("Submit & Course of") #creates a "Submit & Course of" button

Die obigen Schritte umfassen alle Teile der App. An diesem Punkt kann der Benutzer die App öffnen, eine Frage eingeben und ein Bild hochladen.

Lassen Sie uns abschließend alle Teile so zusammenfügen, dass der Benutzer den erforderlichen Antworttext erhält, sobald er auf die Schaltfläche „Senden und verarbeiten“ klickt.

# As soon as submit&Course of button is clicked
if submit:
image_data=input_image_setup(uploaded_file)
response=get_gemini_reponse(input_prompt,image_data,enter)
st.subheader("The Response is")
st.write(response)

5. Führen Sie das Skript aus und interagieren Sie mit Ihrer App

Nachdem die App-Entwicklung abgeschlossen ist, können Sie sie mit dem folgenden Befehl im Terminal ausführen:

streamlit run energy.py

Um mit Ihrer App zu interagieren und ihre Leistung zu sehen, zeigen Sie Ihre Streamlit-App in Ihrem Browser mithilfe der generierten lokalen URL oder Netzwerk-URL an.

So sieht Ihre Streamlit-App aus, wenn sie zum ersten Mal im Browser geöffnet wird.

Demobild der ersten Anzeige der Calorie Counter App: Foto vom Autor.

Sobald der Benutzer eine Frage stellt und ein Bild hochlädt, wird Folgendes angezeigt:

Demobild der Kalorienzähler-App mit Benutzereingabefrage und vom Benutzer hochgeladenem Bild: Foto vom Autor. Das in der App geladene Lebensmittelbild: Foto von Odiseo Castrejón An Unsplash

Sobald der Benutzer die Schaltfläche „Senden und verarbeiten“ klickt, wird die im Bild unten gezeigte Antwort unten auf dem Bildschirm generiert.

Demobild der Energy Counter App mit der generierten Antwort: Foto vom Autor

Erwägen Sie für den externen Zugriff die Bereitstellung Ihrer App mithilfe von Cloud-Diensten wie AWS, Heroku oder Streamlit Group Cloud. In diesem Fall verwenden wir Streamlit Group Cloud, um die App kostenlos bereitzustellen.

Klicken Sie oben rechts auf dem App-Bildschirm auf „Bereitstellen“ und folgen Sie den Anweisungen, um die Bereitstellung abzuschließen.

Nach der Bereitstellung können Sie die generierte App-URL an andere Benutzer weitergeben.

Wie bei anderen KI-Anwendungen handelt es sich bei den ausgegebenen Ergebnissen um die bestmöglichen Schätzungen des Modells. Bevor Sie sich additionally vollständig auf die App verlassen, beachten Sie bitte die folgenden potenziellen Risiken:

  • Die Kalorienzähler-App kann bestimmte Nahrungsmittel falsch klassifizieren und daher die falsche Kalorienzahl angeben.
  • Die App verfügt nicht über einen Referenzpunkt, um die Größe des Essens – die Portion – anhand des hochgeladenen Bildes abzuschätzen. Dies kann zu Fehlern führen.
  • Ein übermäßiges Vertrauen in die App kann zu Stress und psychischen Problemen führen, da man möglicherweise besessen vom Kalorienzählen wird und sich Sorgen über möglicherweise nicht ganz genaue Ergebnisse macht.

Um die mit der Verwendung des Kalorienzählers verbundenen Risiken zu verringern, könnten bei seiner Entwicklung folgende Verbesserungen berücksichtigt werden:

  • Hinzufügen einer kontextbezogenen Analyse des Bildes, die dabei hilft, die Größe der analysierten Lebensmittelportion abzuschätzen. Die App könnte beispielsweise so aufgebaut sein, dass ein Standardobjekt wie ein Löffel, der im Lebensmittelbild enthalten ist, als Referenzpunkt zum Messen der Größe der Lebensmittel verwendet werden kann. Dadurch werden Fehler bei der Berechnung der Gesamtkalorien reduziert.
  • Google könnte die Vielfalt der Nahrungsmittel in seinem Trainingsset verbessern, um Klassifizierungsfehler zu reduzieren. Sie könnten es erweitern, um Nahrungsmittel aus mehr Kulturen einzubeziehen, sodass sogar seltene afrikanische Nahrungsmittel identifiziert werden.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert