Predicción por lotes con Vertex AI - Clasificación de Imágenes

Find AI Tools
No difficulty
No complicated process
Find ai tools

Predicción por lotes con Vertex AI - Clasificación de Imágenes

Tabla de contenidos

  1. Introducción
  2. Creando el archivo de entrada
  3. Creando el trabajo de predicción por lotes
  4. Transformando los resultados en formato tabular
  5. Conclusiones

Introducción 💡

En este Tutorial, te mostraré cómo hacer una predicción por lotes con tu modelo de clasificación de imágenes AutoML. El tutorial se divide en tres partes principales. La primera se enfoca en crear el conjunto de datos de entrada para el trabajo de predicción por lotes a partir de archivos almacenados en Google Cloud Storage. La segunda parte se centra en la creación del trabajo de predicción por lotes en sí. Por último, la tercera parte se enfoca en transformar los resultados en bruto del trabajo de predicción por lotes en un formato tabular. Cada una de estas partes está marcada como un capítulo separado, para que puedas saltar a la parte que más te interese. También vale la pena mencionar que trabajaré con el modelo de clasificación de calidad de limones que creé en mi tutorial anterior. Ahora ... ¡estamos listos para pasar a la primera parte!

Creando el archivo de entrada

Antes de comenzar, es importante comprender cómo debe ser el archivo de entrada. Según la documentación oficial de Google, para los modelos de clasificación de imágenes, puedes usar un archivo JSON Lines para especificar una lista de imágenes para hacer predicciones. Aquí tienes un ejemplo:

{"content": "gs://bucket/image1.jpg"}
{"content": "gs://bucket/image2.jpg"}
{"content": "gs://bucket/image3.jpg"}

Como puedes ver, solo se requiere la primera parte, que es la dirección de almacenamiento en la nube. La segunda parte, el tipo mime, es opcional. Ahora, permíteme mostrarte cómo crear el archivo de entrada utilizando el código adecuado.

Para crear el archivo de entrada, necesitaremos recuperar las direcciones de todos los archivos en la carpeta correspondiente en el almacenamiento en la nube. Afortunadamente, no tendremos que hacer esto manualmente. Podemos usar el siguiente código para obtener fácilmente las URI de todas las imágenes:

import os
from google.cloud import storage

# Crea un cliente de almacenamiento en la nube
client = storage.Client()

# Especifica el bucket y la carpeta donde se encuentran las imágenes
bucket = client.bucket("nombre_del_bucket")
folder = "ruta_a_la_carpeta"

# Obtiene las direcciones de todos los archivos con la extensión de archivo correspondiente
blobs = client.list_blobs(bucket, prefix=folder, delimiter="/")

# Crea una lista con las direcciones GCS de las imágenes
image_addresses = [os.path.join(f"gs://{bucket.name}", blob.name) for blob in blobs]

# Crea el archivo de entrada en formato JSON Lines
with open("input_file.jsonl", "w") as file:
    for address in image_addresses:
        file.write(f'{{"content": "{address}"}}\n')

print("¡Archivo de entrada creado exitosamente!")

Una vez que se haya creado el archivo de entrada, deberás guardarlo en tu almacenamiento en la nube. Con esto, hemos completado la primera parte de nuestro tutorial.

Continuaremos con la segunda parte, donde crearemos el trabajo de predicción por lotes. ¡Sigue leyendo para obtener más información!

Creando el trabajo de predicción por lotes 🚀

Ahora que tenemos nuestro archivo de entrada listo, es hora de crear el trabajo de predicción por lotes. Para Ello, necesitaremos importar la biblioteca de Vertex AI y establecer una conexión. También necesitaremos obtener el ID del modelo con el que haremos la predicción por lotes. Puedes encontrar el ID de tu modelo en la sección "Registros de modelo" del Vertex AI. Una vez que tengas el ID del modelo, podrás ejecutar el siguiente código:

from google.cloud import aiplatform

# Inicializa la conexión con Vertex AI
aiplatform.init(project="id_del_proyecto", location="ubicación_del_proyecto")

# Especifica el ID del modelo
model_id = "id_del_modelo"

# Crea el nombre de visualización del trabajo
job_display_name = "lemon_batch_prediction"

# Especifica el archivo de entrada y la carpeta de destino en Cloud Storage
gcs_source = "gs://bucket/input_file.jsonl"
gcs_destination_prefix = "gs://bucket/output/"

# Crea el trabajo de predicción por lotes
batch_prediction_job = aiplatform.BatchPredictionJob.create(
    display_name=job_display_name,
    model=model_id,
    gcs_source=gcs_source,
    gcs_destination_prefix=gcs_destination_prefix
)

print("¡Trabajo de predicción por lotes creado exitosamente!")

Una vez que se haya creado el trabajo de predicción por lotes, podrás ver su progreso y estado en la consola de Vertex AI. Dependiendo del tamaño de tu conjunto de datos y la complejidad del modelo, el proceso de predicción puede llevar tiempo. Te recomendamos que verifiques periódicamente el estado del trabajo a través de la consola.

Cuando el trabajo de predicción por lotes haya finalizado, podrás acceder a los resultados en la ubicación de destino en tu almacenamiento en la nube. En la siguiente parte de nuestro tutorial, te mostraré cómo transformar los resultados en bruto en un formato tabular. ¡Sigue leyendo para descubrir cómo hacerlo!

Transformando los resultados en formato tabular 📊

Una vez que hayas completado el trabajo de predicción por lotes, los resultados se almacenarán en tu almacenamiento en la nube en un formato JSON Lines. Sin embargo, es posible que desees tener los resultados en un formato tabular para su fácil lectura y análisis. A continuación, te mostraré cómo hacerlo utilizando el siguiente código:

import os
from google.cloud import storage
import pandas as pd

# Crea un cliente de almacenamiento en la nube
client = storage.Client()

# Especifica el bucket y la carpeta donde se encuentran los resultados del trabajo de predicción por lotes
bucket_name = "nombre_del_bucket"
output_folder = "ruta_a_los_resultados"

# Crea un prefijo para filtrar los archivos dentro del bucket
prefix = f"{bucket_name}/{output_folder}"

# Crea una lista con los nombres de archivo de los resultados del trabajo de predicción por lotes
blob_names = [blob.name for blob in client.list_blobs(bucket_name, prefix=prefix)]

# Crea una lista para almacenar los resultados en formato tabular
results = []

# Itera sobre cada archivo de resultado
for blob_name in blob_names:
    # Descarga el archivo
    blob = client.get_blob(blob_name)
    content = blob.download_as_text()

    # Itera sobre cada línea del archivo
    for line in content.split("\n"):
        # Ignora las líneas vacías
        if line:
            # Convierte la línea de JSON a un diccionario Python
            prediction = json.loads(line)

            # Extrae la dirección de la imagen y las predicciones
            image_address = prediction["scored_image"]["content"]
            predictions = prediction["predictions"]

            # Agrega la información al resultado en formato tabular
            for pred in predictions:
                predicted_label = pred["displayNames"][0]
                confidence = pred["confidences"][0]
                results.append([image_address, predicted_label, confidence])

# Crea un DataFrame con los resultados en formato tabular
df = pd.DataFrame(results, columns=["Direccion_GCS", "Etiqueta_Predicha", "Confianza"])
print(df)

print("¡Transformación exitosa de los resultados en formato tabular!")

Al ejecutar este código, obtendrás un DataFrame que muestra los resultados en un formato tabular. El DataFrame contendrá tres columnas: "Direccion_GCS" que corresponde a la dirección de la imagen en Google Cloud Storage, "Etiqueta_Predicha" que es la etiqueta predicha por el modelo y "Confianza" que representa la confianza en la predicción. Podrás utilizar este DataFrame para realizar análisis posteriores de manera más sencilla.

¡Y eso es todo! Has completado con éxito el tutorial de predicción por lotes con tu modelo de clasificación de imágenes AutoML. Ahora estás listo para aplicar estos conocimientos en tus propios proyectos. ¡Buena suerte!

Conclusiones 🎉

En este tutorial, te he mostrado cómo realizar una predicción por lotes utilizando tu modelo de clasificación de imágenes AutoML. Aprendimos cómo crear el archivo de entrada a partir de los archivos almacenados en Google Cloud Storage, cómo crear y monitorear el trabajo de predicción por lotes, y cómo transformar los resultados en bruto en formato tabular para facilitar su análisis. Espero que hayas encontrado este tutorial útil y que puedas aplicar estos conocimientos en tus propios proyectos. ¡Gracias por seguir este tutorial y buena suerte con tus futuros desarrollos de aprendizaje automático!

FAQ

Q: ¿Qué formato de archivo se requiere para el archivo de entrada en el modelo de clasificación de imágenes AutoML? A: Para el modelo de clasificación de imágenes AutoML, se requiere un archivo JSON Lines para especificar una lista de imágenes a ser predictas. Cada línea del archivo debe tener el siguiente formato: {"content": "gs://bucket/image.jpg"}, donde "gs://bucket/image.jpg" es la dirección de almacenamiento de la imagen en Google Cloud Storage.

Q: ¿Cuál es el tiempo aproximado de ejecución para un trabajo de predicción por lotes? A: El tiempo de ejecución de un trabajo de predicción por lotes puede variar según el tamaño del conjunto de datos y la complejidad del modelo. En general, es recomendable verificar periódicamente el estado del trabajo a través de la consola de Vertex AI para obtener una estimación más precisa del tiempo de ejecución.

Q: ¿Cómo puedo transformar los resultados en bruto en un formato tabular? A: Puedes utilizar el código proporcionado en este tutorial para transformar los resultados en bruto en formato tabular. El código descarga los resultados en formato JSON Lines desde Google Cloud Storage y los convierte en un DataFrame de Pandas, lo que facilita su lectura y análisis.

Recursos

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.