Ver en ai.google.dev | Prueba un notebook de Colab | Ver notebook en GitHub |
La API de Gemini puede ejecutar inferencias sobre las imágenes y los videos que se le pasan. Cuando se aprueba una imagen, una serie de imágenes o un video, Gemini puede hacer lo siguiente:
- Describe o responde preguntas sobre el contenido
- Resume el contenido
- Extrapolar a partir del contenido
En este instructivo, se muestran algunas formas posibles de usar instrucciones para la API de Gemini imágenes y video. Todos los resultados son de solo texto.
Antes de comenzar: Configura tu proyecto y clave de API
Antes de llamar a la API de Gemini, debes configurar tu proyecto tu clave de API.
Instrucciones con imágenes
En este instructivo, subirás imágenes con la API de archivos o como datos intercalados y generar contenido basado en esas imágenes.
Detalles técnicos (imágenes)
Gemini 1.5 Pro y 1.5 Flash admiten un máximo de 3,600 archivos de imagen.
Las imágenes deben estar en uno de los siguientes tipos de MIME de datos de imagen:
- PNG -
image/png
- JPEG -
image/jpeg
- WEBP:
image/webp
- HEIC:
image/heic
- HEIF:
image/heif
Cada imagen equivale a 258 tokens.
Si bien no existen límites específicos para la cantidad de píxeles en una imagen, la ventana de contexto del modelo, las imágenes más grandes se reducen al máximo resolución de 3072 x 3072 sin perder la relación de aspecto original, mientras las imágenes más pequeñas se ajustan a 768 x 768 píxeles. No se reducen los costos en el caso de imágenes de menor tamaño, que no sean el ancho de banda o una mejora en el rendimiento para imágenes con mayor resolución.
Para lograr resultados óptimos, haz lo siguiente:
- Rota las imágenes a la orientación correcta antes de subirlas.
- Evita las imágenes borrosas.
- Si usas una sola imagen, coloca la instrucción de texto después de la imagen.
Sube un archivo de imagen con la API de File
Usa la API de File para subir una imagen de cualquier tamaño. (Siempre usa la API de File cuando la combinación de archivos e instrucciones del sistema que pretendes enviar superior a 20 MB).
Comienza por descargar esto boceto de un propulsor.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Sube la imagen con
media.upload
y, luego, imprimir el URI, que se usa como referencia en las llamadas a la API de Gemini.
# 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}")
Verifica la carga del archivo de imagen y obtén los metadatos
Puedes verificar que la API almacenó correctamente el archivo subido y obtener su
los metadatos llamando a files.get
a través del SDK. Solo los name
(y, por extensión, uri
) son únicos. Usa
display_name
para identificar archivos solo si tú administras la unicidad.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Según tu caso de uso, puedes almacenar los URIs en estructuras, como un
dict
o una base de datos.
Instrucción con la imagen y el texto que se subieron
Después de subir el archivo, puedes realizar solicitudes GenerateContent
que hagan referencia a
el URI de la API de archivos. Selecciona el modelo generativo y proporciónale una instrucción de texto.
y la imagen subida.
# 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)
Subir uno o más archivos de imagen almacenados localmente
También puedes subir tus propios archivos. Puedes descargar y usar nuestra dibujos de aguas infestadas de pirañas y un bombero con un gato.
Cuando la combinación de archivos e instrucciones del sistema que pretendes enviar tenga más de 20 MB, use la API de File para subir los archivos, ya que que se mostró anteriormente. En cambio, los archivos más pequeños se pueden llamar de forma local desde la API de Gemini:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Ten en cuenta que estas llamadas de datos intercaladas no incluyen muchas de las funciones disponibles a través de la API de File, por ejemplo, para obtener metadatos de archivos, fichas, borrar archivos.
Instrucción con varias imágenes
Puedes proporcionarle a la API de Gemini cualquier combinación de imágenes y texto que para ajustarse a la ventana de contexto del modelo. En este ejemplo, se proporciona un texto breve y las tres imágenes subidas previamente.
# 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)
Obtén un cuadro de límite para un objeto
Puedes pedirle al modelo las coordenadas de los cuadros delimitadores de los objetos.
en imágenes. Para la detección de objetos, el modelo de Gemini se entrenó para proporcionar
estas coordenadas como anchos o alturas relativos en el rango [0,1]
, ajustados por
1,000 y lo convierte en un número entero. Efectivamente, las coordenadas proporcionadas corresponden a una
versión de 1000 x 1000 de la imagen original y se debe volver a convertir a la
dimensiones de la imagen original.
# 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)
Para convertir estas coordenadas a las dimensiones de la imagen original, sigue estos pasos:
- Divide cada coordenada del resultado por 1,000.
- Multiplica las coordenadas X por el ancho de la imagen original.
- Multiplica las coordenadas Y por la altura de la imagen original.
Instrucciones con video
En este instructivo, subirás un video usando la API de File y generarás contenido basado en esas imágenes.
Detalles técnicos (video)
Gemini 1.5 Pro y Flash admiten hasta una hora de datos de video aproximadamente.
El video debe estar en uno de los siguientes tipos MIME de formato de video:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
El servicio File API extrae fotogramas de imágenes de los videos a 1 fotograma por segundo (FPS) y audio a 1 Kbps, un solo canal, agregando marcas de tiempo cada segundo. Estas tasas están sujetas a cambios en el futuro por las mejoras en la inferencia.
Las tramas individuales tienen 258 tokens y el audio es de 32 tokens por segundo. Con cada segundo de video se convierte en ~300 tokens, lo que significa puede ajustarse a menos de una hora de video.
Para hacer preguntas sobre las ubicaciones con marca de tiempo, usa el formato MM:SS
, en el que
los dos primeros dígitos representan minutos y los dos últimos dígitos representan
segundos.
Para lograr resultados óptimos, haz lo siguiente:
- Usa un video por instrucción.
- Si usas un solo video, coloca el mensaje de texto después del video.
Subir un archivo de video con la API de File
La API de File acepta formatos de archivo de video directamente. En este ejemplo, se usa el cortometraje de la NASA “La gran mancha roja de Júpiter se encoge y crece”. Crédito: Centro de vuelo espacial de Goddard (GSFC)/David Ladd (2018).
"La gran mancha roja de Júpiter se encoge y crece" es de dominio público y no no deben mostrar personas identificables. (Lineamientos de uso de imágenes y contenido multimedia de la NASA).
Para comenzar, recupera el video corto:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Sube el video con la API de File e imprime el URI.
# 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}")
Verifica la carga del archivo y el estado
Verifica que la API haya recibido los archivos correctamente llamando al
files.get
.
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)
Instrucción con un video y texto
Una vez que el video subido tenga el estado ACTIVE
, podrás hacer GenerateContent
que especifiquen el URI de File API para ese video. Selecciona la herramienta
modelo y proporcionarle el video que se subió y una instrucción de texto.
# 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)
Hacer referencia a las marcas de tiempo en el contenido
Puedes usar marcas de tiempo del formulario MM:SS
para hacer referencia a momentos específicos en la
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)
Transcribir videos y proporcionar descripciones visuales
Si el video no es rápido (solo se muestra 1 fotograma por segundo de video) es posible transcribir el video con descripciones visuales para cada toma.
# 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)
Enumerar archivos
Puedes enumerar todos los archivos que subiste con File API y sus URI con lo siguiente:
files.list_files()
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Borrar archivos
Los archivos subidos con la API de File se borran automáticamente después de 2 días. Tú
también puedes borrarlos manualmente con files.delete()
.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
¿Qué sigue?
En esta guía, se muestra cómo usar
generateContent
y
para generar texto a partir de entradas de imagen y video. Para obtener más información,
consulta los siguientes recursos:
- Instrucciones con archivos multimedia: La La API de Gemini admite instrucciones con datos de texto, imagen, audio y video. conocida como instrucción multimodal.
- Instrucciones del sistema: Sistema instrucciones te permiten guiar el comportamiento del modelo según tu necesidades y casos de uso.
- Orientación sobre seguridad: A veces, la IA generativa los modelos generan resultados inesperados, como resultados inexactos ofensiva o sesgada. El procesamiento posterior y la evaluación humana son esenciales limitar el riesgo de daños derivados de dichos productos.