El desafío de hoy es familiar para muchos: tienes un volumen masivo de datos no estructurados, específicamente imágenes, almacenadas de forma segura en Google Cloud Storage.
⏱️ CAPÍTULOS:
00:00 - Introducción
00:22 - La Herramienta
01:52 - El Truco
03:07 - Ejemplo Real
06:56 - Conclusión rápida
09:53 - Parte 5
10:43 - Cierre del episodio
Podrían ser fotos de productos, documentos escaneados, imágenes de seguridad o contenido generado por usuarios. La cuestión es que están ahí, acumulándose, y sabes que contienen información valiosa, pero extraerla parece una tarea titánica.
Imagínate la frustración. Quieres responder preguntas sencillas: ¿cuántas imágenes contienen un determinado tipo de objeto? ¿Qué etiquetas descriptivas se asocian con la mayoría de mis archivos visuales? ¿Hay contenido inapropiado que necesite revisión? Tradicionalmente, esto significaría orquestar un complejo pipeline de inteligencia artificial. Tendrías que mover datos, escribir código en Python o Java para interactuar con una API de visión, construir y entrenar modelos, o al menos gestionar la invocación de modelos preentrenados a través de funciones y servicios externos. Esto no solo consume tiempo y recursos de ingeniería, sino que también te aleja de la agilidad que necesitas para obtener respuestas rápidamente. Tu base de datos principal está en BigQuery, y lo que realmente deseas es poder hacer una simple consulta SQL para obtener esas respuestas, sin salir de tu entorno de análisis de datos. Pero, ¿cómo le pides a SQL que "mire" una imagen? Ese es el problema.
La Herramienta
La solución a este dilema reside en BigQuery ML, una extensión poderosa de BigQuery que democratiza el aprendizaje automático, llevando las capacidades de IA directamente a tus datos y a tu lenguaje preferido: SQL. BigQuery ML te permite crear, entrenar y ejecutar modelos de aprendizaje automático utilizando comandos SQL estándar, eliminando la necesidad de programar en lenguajes como Python o R, o de gestionar infraestructuras complejas de modelos.
Lo interesante de BigQuery ML es que no solo te permite construir modelos desde cero con tus datos tabulares, sino que también se integra de forma nativa con otros servicios de inteligencia artificial de Google Cloud. En este caso particular, nos enfocaremos en su capacidad para interactuar con los modelos de visión preentrenados de Google Cloud Vision API, y lo hará de una manera que te permitirá analizar tus imágenes directamente desde Google Cloud Storage, sin mover un solo byte de imagen y sin escribir una línea de código que no sea SQL. Es la pieza que conecta tus imágenes en un cubo de almacenamiento con la potencia analítica de BigQuery y la inteligencia de la visión artificial, todo bajo el mismo paraguas de SQL.
El Truco
El truco para analizar tus imágenes con SQL en BigQuery ML se divide en dos pasos fundamentales, que te permitirán invocar modelos de visión preentrenados de Google Cloud directamente desde tus consultas.
Primero, necesitas crear lo que llamamos una "tabla de objetos" en BigQuery. Imagina que tienes una biblioteca gigantesca llena de libros, pero en lugar de tener todos los libros dentro de la biblioteca central, los tienes distribuidos en varios almacenes. Para saber qué libros tienes y dónde están, no los metes todos en la biblioteca, sino que creas un catálogo detallado con la ubicación de cada uno. Eso es exactamente lo que hace una tabla de objetos. Es un catálogo en BigQuery que apunta a los archivos de tus imágenes en Google Cloud Storage. No copia las imágenes a BigQuery; simplemente registra sus ubicaciones y algunos metadatos clave.
Para crear esta tabla de objetos, el usuario utiliza una sentencia SQL especial. Le indicas a BigQuery que vas a crear una tabla externa, es decir, una tabla que no almacena los datos directamente, sino que los referencia desde fuera. Especificas que el tipo de datos que va a indexar son metadatos de objetos, y luego le proporcionas la ruta al cubo o carpeta en Google Cloud Storage donde se encuentran tus imágenes. Una vez que ejecutas esta sentencia, BigQuery crea una tabla que contendrá una fila por cada imagen en tu ruta de Google Cloud Storage, con columnas que incluyen la dirección URL de cada imagen y otros atributos.
El segundo paso, y aquí es donde la magia de la inteligencia artificial entra en juego, es invocar los modelos de visión preentrenados de Google Cloud Vision API utilizando la función `ML.PREDICT` de BigQuery ML. Volviendo a nuestra analogía de la biblioteca, ahora que tienes tu catálogo de libros (tu tabla de objetos), quieres que un equipo de críticos de arte expertos (los modelos de visión preentrenados) revisen cada libro y te digan qué hay en ellos. En lugar de llevarles cada libro físicamente, o incluso de llamarles uno por uno, simplemente les das acceso a tu catálogo y les pides que revisen los libros listados. BigQuery ML actúa como tu asistente, tomando la dirección de cada imagen del catálogo y enviándosela a los críticos de arte (los modelos de visión) para obtener sus comentarios.
Para hacer esto, en tu consulta SQL, utilizas la función `ML.PREDICT`. Dentro de esta función, le especificas a BigQuery ML que quieres usar un modelo remoto que has creado previamente, el cual está configurado para interactuar con la API de Google Cloud Vision. Al crear ese modelo remoto, se especifica que su tipo de servicio es `CLOUD_AI_VISION_V1`. Luego, como entrada a este modelo, le pasas la columna de tu tabla de objetos que contiene la dirección URL de cada imagen. BigQuery ML se encarga de todo lo demás: toma la URL de cada imagen, la envía al servicio de Google Cloud Vision, espera la respuesta con las etiquetas, objetos detectados o cualquier otra información de visión que hayas solicitado, y te devuelve esos resultados directamente dentro de tu consulta SQL como una tabla estructurada.
Puedes solicitar diferentes tipos de análisis de visión, como la detección de etiquetas (qué cosas generales hay en la imagen), la detección de objetos (dónde están objetos específicos en la imagen), la detección de puntos de referencia, o incluso análisis de seguridad para contenido sensible. Todo esto se configura al crear el modelo remoto en BigQuery ML, especificando el `vision_service_type` deseado en las opciones del modelo. Lo importante es que no estás escribiendo código Python para llamar a una API, ni estás lidiando con tokens de autenticación o la gestión de la infraestructura de modelos. Simplemente estás usando SQL para pedirle a BigQuery que "vea" tus imágenes y te devuelva sus "observaciones".
Ejemplo Real
Imagina que trabajas para una gran empresa de comercio electrónico que vende ropa y accesorios. Tienen millones de imágenes de productos almacenadas en Google Cloud Storage. Muchas de estas imágenes son subidas por los propios usuarios en reseñas o en secciones de "cómo lo llevo", y otras son fotos de catálogo. El problema es que el equipo de marketing quiere identificar rápidamente todas las imágenes que muestran "zapatillas deportivas" para una campaña específica, o el equipo de seguridad quiere detectar imágenes que puedan contener contenido inapropiado o violaciones de la marca, como logos falsificados. Analizar esto manualmente es imposible debido al volumen.
Aquí es donde nuestro truco entra en acción. Primero, el usuario crearía una tabla de objetos en BigQuery que apunte a la carpeta en Google Cloud Storage donde se encuentran todas estas imágenes de productos y usuarios. Esta tabla le daría a BigQuery una lista de todas las direcciones web de las imágenes.
Una vez que la tabla de objetos está lista, el usuario podría escribir una consulta SQL en BigQuery. En esta consulta, utilizaría la función `ML.PREDICT` y le indicaría que use el modelo remoto que ha configurado previamente para realizar una detección de etiquetas. La consulta pasaría las direcciones de las imágenes de la tabla de objetos al modelo de visión. BigQuery ML procesaría cada imagen, enviándola al servicio de Google Cloud Vision para que la analice.
Como resultado, la consulta devolvería una tabla con una fila por cada imagen, y en esa fila, una lista de etiquetas detectadas, junto con un nivel de confianza para cada etiqueta. Por ejemplo, para una imagen de zapatillas, el modelo podría devolver etiquetas como "calzado", "zapatillas deportivas", "moda", "correr" con diferentes puntuaciones de confianza. Para una imagen inapropiada, podría devolver etiquetas relacionadas con el tipo de contenido o una puntuación de seguridad.
A partir de ahí, el usuario podría fácilmente filtrar estos resultados utilizando cláusulas `WHERE` en SQL. Por ejemplo, podría seleccionar todas las imágenes donde la etiqueta "zapatillas deportivas" aparece con una confianza superior al ochenta por ciento. O podría agrupar las imágenes por las etiquetas más frecuentes para entender qué tipo de productos son los más populares en las fotos de los usuarios. Para el equipo de seguridad, podrían buscar imágenes donde las etiquetas de "contenido explícito" o "violencia" superen un umbral, o donde se detecten ciertos objetos específicos que no están permitidos.
Esto transforma un problema de análisis de imágenes complejo y que consume muchos recursos en una simple operación de consulta de datos. No se requiere mover los millones de imágenes, ni desplegar servidores para ejecutar modelos de IA, ni escribir código de programación. Todo se gestiona dentro del entorno familiar de BigQuery, utilizando el lenguaje que ya dominas: SQL.
Conclusión rápida
Hemos visto cómo puedes superar la barrera de los datos no estructurados. Con BigQuery ML y las tablas de objetos, el usuario tiene la capacidad de analizar directamente imágenes almacenadas en Google Cloud Storage, invocando modelos de visión preentrenados de Google Cloud Vision API, todo ello mediante consultas SQL. Este enfoque elimina la complejidad de la infraestructura de inteligencia artificial y la programación, permitiendo a los analistas de datos y científicos de datos obtener información valiosa de sus activos visuales de manera rápida y escalable. Ya no es necesario ser un experto en aprendizaje automático para "ver" lo que hay en tus imágenes; solo necesitas saber SQL. Es la democratización de la visión artificial al alcance de tu mano, transformando tus cubos de almacenamiento en bases de datos consultables con inteligencia.