Vision-Funktionen mit der Gemini API entdecken

<ph type="x-smartling-placeholder"></ph>

Auf ai.google.dev ansehen Colab-Notebook testen Notebook auf GitHub ansehen

Die Gemini API kann Inferenzen auf Bilder und Videos ausführen, die an sie übergeben werden. Wenn bestanden eine Reihe von Bildern oder Videos enthält, kann Gemini Folgendes tun:

  • Fragen zum Inhalt beschreiben oder beantworten
  • Inhalt zusammenfassen
  • Extrapolation aus dem Inhalt

In diesem Tutorial werden einige Möglichkeiten gezeigt, wie Sie die Gemini API mit Bild- und Videoeingabe. Die Ausgabe erfolgt ausschließlich in Textform.

Hinweis: Projekt und API-Schlüssel einrichten

Bevor Sie die Gemini API aufrufen, müssen Sie Ihr Projekt einrichten und konfigurieren Ihren API-Schlüssel.

Prompts mit Bildern

In dieser Anleitung laden Sie Bilder über die File API oder als Inline-Daten hoch. und Inhalte auf der Grundlage dieser Bilder zu generieren.

Technische Details (Bilder)

Gemini 1.5 Pro und Flash 1.5 unterstützen maximal 3.600 Bilddateien.

Bilder müssen einen der folgenden MIME-Typen für Bilddaten haben:

  • PNG - image/png
  • JPEG - image/jpeg
  • WebP – image/webp
  • HEIC – image/heic
  • HEIF – image/heif

Jedes Image entspricht 258 Tokens.

Es gibt keine spezifischen Beschränkungen für die Anzahl der Pixel in einem Bild, außer des Kontextfensters des Modells ab, werden größere Bilder auf ein Maximum mit einer Auflösung von 3072 x 3072 unter Beibehaltung des ursprünglichen Seitenverhältnisses, während kleinere Bilder auf 768 x 768 Pixel skaliert werden. Es gibt keine Kostensenkung. für Bilder mit niedrigeren Größen als Bandbreite oder Leistungsverbesserung. für Bilder mit höherer Auflösung.

Für optimale Ergebnisse:

  • Drehen Sie Bilder vor dem Hochladen in die richtige Ausrichtung.
  • Vermeiden Sie verschwommene Bilder.
  • Wenn du ein einzelnes Bild verwendest, platziere den Text-Prompt nach dem Bild.

Bilddatei mithilfe der File API hochladen

Verwenden Sie die File API, um ein Bild beliebiger Größe hochzuladen. (Verwenden Sie in den folgenden Fällen immer die File API. Die Kombination aus Dateien und Systemanweisungen, die Sie senden möchten, ist größer als 20 MB ist.

Laden Sie zuerst Folgendes herunter: Skizze eines Jetpacks.

!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg

Laden Sie das Bild mit media.upload und geben Sie den URI aus, der als Referenz in Gemini API-Aufrufen verwendet wird.

# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
                            display_name="Jetpack drawing")

print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")

Upload von Bilddateien überprüfen und Metadaten abrufen

Sie können prüfen, ob die API die hochgeladene Datei erfolgreich gespeichert hat und durch Aufrufen von files.get über das SDK. Nur die name (und somit auch die uri) sind eindeutig. Verwenden Sie display_name, um Dateien nur zu identifizieren, wenn Sie die Eindeutigkeit selbst verwalten.

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

Je nach Anwendungsfall können Sie die URIs in Strukturen wie einem dict oder eine Datenbank.

Aufforderung mit dem hochgeladenen Bild und Text

Nach dem Hochladen der Datei können Sie GenerateContent-Anfragen stellen, die darauf verweisen Datei-API-URI Generatives Modell auswählen und mit einem Text-Prompt versehen und das hochgeladene Bild.

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])

Markdown(">" + response.text)

Eine oder mehrere lokal gespeicherte Bilddateien hochladen

Alternativ können Sie Ihre eigenen Dateien hochladen. Sie können unsere Zeichnungen von von Piranha geprägte Gewässer und Feuerwehrmann mit Katze.

Wenn die Kombination aus Dateien und Systemanweisungen, die Sie senden möchten, größer als 20 MB ist, verwenden Sie zum Hochladen dieser Dateien das File API. die zuvor angezeigt wurden. Kleinere Dateien können stattdessen lokal aus dem Gemini API:

import PIL.Image

sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')

Beachten Sie, dass diese Inline-Datenaufrufe nicht viele der verfügbaren Funktionen über die File API, z. B. das Abrufen von Dateimetadaten, Einträge oder Löschen von Dateien.

Prompt mit mehreren Bildern

Sie können der Gemini API eine beliebige Kombination aus Bildern und Text zur Verfügung stellen, in das Kontextfenster des Modells passen. Dieses Beispiel enthält einen kurzen Text, und die drei zuvor hochgeladenen Bilder.

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."

response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])

Markdown(">" + response.text)

Begrenzungsrahmen für ein Objekt abrufen

Sie können das Modell nach den Koordinaten von Begrenzungsrahmen für Objekte fragen. in Bildern. Für die Objekterkennung wurde das Gemini-Modell so trainiert, diese Koordinaten als relative Breiten oder Höhen im Bereich [0,1], skaliert um 1000 und in eine Ganzzahl konvertiert. Die angegebenen Koordinaten beziehen sich 1000 x 1000 große Version des Originalbilds. Das Bild muss in das Format Abmessungen des Originalbilds.

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])

print(response.text)

So konvertieren Sie diese Koordinaten in die Abmessungen des Originalbilds:

  1. Teilen Sie jede Ausgabekoordinate durch 1.000.
  2. Die X-Koordinaten werden mit der ursprünglichen Bildbreite multipliziert.
  3. Die Y-Koordinaten werden mit der Höhe des ursprünglichen Bildes multipliziert.

Prompt per Video

In dieser Anleitung laden Sie ein Video über die File API hoch und generieren auf diesen Bildern basieren.

Technische Details (Video)

Gemini 1.5 Pro und Flash unterstützen Videodaten von bis zu einer Stunde.

Das Video muss in einem der folgenden MIME-Typen für Videos vorliegen:

  • video/mp4
  • video/mpeg
  • video/mov
  • video/avi
  • video/x-flv
  • video/mpg
  • video/webm
  • video/wmv
  • video/3gpp

Der File API-Dienst extrahiert Bilder mit einem Frame pro Sekunde aus Videos. (fps) und Audio mit 1 Kbit/s, einzelner Kanal, wobei jede Sekunde Zeitstempel hinzugefügt werden. Diese Preise können sich aufgrund von Verbesserungen bei der Inferenz in Zukunft ändern.

Einzelne Frames belaufen sich auf 258 Tokens und Audios mit 32 Tokens pro Sekunde. Mit wird jede Sekunde des Videos zu ~300 Tokens, was bedeutet, Fenster können etwas weniger als eine Stunde Videomaterial passen.

Wenn Sie Fragen zu Orten mit Zeitstempel stellen möchten, verwenden Sie das Format MM:SS, wobei die ersten beiden Ziffern Minuten und die letzten beiden Ziffern Sekunden.

Für optimale Ergebnisse:

  • Verwende ein Video pro Prompt.
  • Wenn du nur ein Video verwendest, platziere die Textaufforderung nach dem Video.

Videodatei mithilfe der File API hochladen

Die File API akzeptiert direkt Videodateiformate. In diesem Beispiel wird die Methode Kurzfilm über die NASA „Jupiter's Great Red Spot Shrinks and Grows“. Bildrechte: Goddard Space Flight Center (GSFC)/David Ladd (2018).

„Jupiter's Great Red Fleck schrumpft und wächst“ ist frei von Urheberrechten. keine identifizierbaren Personen zu sehen sind. (NASA-Richtlinien zur Verwendung von Bildern und Medien)

Rufen Sie zuerst das kurze Video ab:

!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4

Lade das Video über die File API hoch und gib den URI aus.

# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"

print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")

Datei-Upload und Status prüfen

Prüfen Sie, ob die API die Dateien erfolgreich erhalten hat, indem Sie die Methode files.get-Methode.

import time

# Check whether the file is ready to be used.
while video_file.state.name == "PROCESSING":
    print('.', end='')
    time.sleep(10)
    video_file = genai.get_file(video_file.name)

if video_file.state.name == "FAILED":
  raise ValueError(video_file.state.name)

Prompt mit einem Video und Text

Sobald das hochgeladene Video den Status ACTIVE hat, kannst du GenerateContent -Anfragen, in denen der File API-URI für dieses Video angegeben wird. Generatives Modell auswählen und stellen Sie das hochgeladene Video sowie einen Text-Prompt bereit.

# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
                                  request_options={"timeout": 600})

# Print the response, rendering any Markdown
Markdown(response.text)

Zeitstempel im Inhalt

Du kannst Zeitstempel im Format MM:SS verwenden, um auf bestimmte Momente im Video.

# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
                                  request_options={"timeout": 600})
print(response.text)

Video transkribieren und visuelle Beschreibungen bereitstellen

Wenn das Video nicht schnelllebig ist (nur 1 Frame pro Sekunde des Videos wird verwendet), kann das Video mit visuellen Beschreibungen für jede Aufnahme transkribiert werden.

# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
                                  request_options={"timeout": 600})
print(response.text)

Dateien auflisten

Sie können alle mit der File API hochgeladenen Dateien und ihre URIs mit dem Befehl files.list_files()

# List all files
for file in genai.list_files():
    print(f"{file.display_name}, URI: {file.uri}")

Dateien löschen

Dateien, die mit der File API hochgeladen wurden, werden nach zwei Tagen automatisch gelöscht. Ich können sie auch manuell mit files.delete() löschen.

# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')

Nächste Schritte

In diesem Leitfaden erfahren Sie, wie Sie generateContent und zum Generieren von Textausgaben aus Bild- und Videoeingaben. Weitere Informationen finden Sie in den folgenden Ressourcen:

  • Prompts mit Mediendateien: Die Die Gemini API unterstützt Prompts mit Text-, Bild-, Audio- und Videodaten sowie als multimodale Prompts.
  • Systemanleitung: System können Sie das Verhalten des Modells auf Ihre spezifischen Anforderungen und Anwendungsfälle.
  • Sicherheitshinweise: Manchmal mit generativer KI dass Modelle unerwartete Ausgaben erzeugen, z. B. ungenaue, voreingenommen oder anstößig ist. Die Nachbearbeitung und menschliche Bewertung sind das Risiko von Schäden durch solche Ausgaben zu begrenzen.