DIY: Python

Etiquetador inteligente de imágenes con IA local. Aplicación Python que analiza el contenido de tus fotografías usando un modelo de IA que pone etiquetas a tus imágenes.

Sobre un portátil hay fotografías que tienen etiquetas sencillas.
Sobre un portátil hay fotografías que tienen etiquetas sencillas.

Le pedí a una IA que creara una IA para etiquetar mis fotos (y esto es lo que pasó)

¿Te suena esta situación? Buscas desesperadamente la foto de aquel atardecer perfecto en la playa de hace dos veranos. Sabes que está en tu ordenador, en algún lugar entre los miles de archivos con nombres como IMG_7432.jpg y DSC_0058.jpg. Al final, te rindes. Encontrar una aguja en un pajar digital es una tarea titánica.

En "Curiosidad Artificial" nos encantan los retos, y en una entrada anterior de nuestra sección DIY, pusimos un poco de orden en este caos. Creamos un inventario completo de nuestras fotos en un simple archivo de Excel, un mapa del tesoro digital con el nombre y la ubicación de cada imagen. Pero, ¿y si pudiéramos hacer que ese mapa no solo nos dijera dónde está el tesoro, sino también qué hay dentro de cada cofre?

Hoy damos un paso más allá en nuestra aventura. Vamos a construir una herramienta que no solo localice nuestras fotos, sino que las entienda. Una aplicación que mire cada imagen y escriba una descripción de su contenido. Y lo mejor de todo, lo haremos siguiendo dos reglas de oro:

  1. Tu privacidad es sagrada. Todas nuestras fotos se procesarán en nuestro propio ordenador. Ninguna imagen personal será subida a la nube ni compartida con nadie.

  2. No necesitas ser programador. Nosotros seremos los "directores de orquesta", pero la IA será nuestro músico estrella, escribiendo todo el código por nosotros. Este artículo trata sobre cómo dirigir esa orquesta.

¿Podríamos hacerlo de otra forma? El valor de "Hacerlo tú mismo" 💡

Seamos sinceros, no somos los primeros en pensar en esto. Gigantes como Google Photos o Adobe Lightroom ya usan IA para analizar y etiquetar nuestras imágenes. Y son herramientas fantásticas.

  • Sus pros: Son increíblemente fáciles de usar, potentes y no requieren ninguna configuración.

  • Sus contras: Normalmente, exigen que subamos toda nuestra biblioteca de fotos a sus servidores. Esto plantea dudas sobre la privacidad y, a menudo, implica un coste de suscripción para tener almacenamiento suficiente.

Aquí es donde brilla la magia del enfoque "Hazlo tú mismo" (DIY). Al crear nuestra propia herramienta, tomamos el control absoluto. Nuestras fotos se quedan en casa, a salvo. No hay cuotas mensuales y, lo más importante, vivimos la increíble experiencia de crear algo a medida, aprendiendo en el proceso cómo funciona de verdad la IA.

La estrategia: hablar con la IA antes de dejarla codificar 🗣️🤖

Cuando trabajas con una IA generativa, la tentación es saltar directamente a la acción y pedirle: "¡Oye, créame un programa que haga esto!". Pero esa es la vía rápida al fracaso. La clave del éxito es la planificación. Antes de que un arquitecto ponga un solo ladrillo, necesita los planos. Nosotros haremos lo mismo: primero, definiremos los planos de nuestro proyecto en una conversación con nuestro asistente de IA. En esta ocasión nos hemos apoyado en Claude.

Le presentamos nuestro plan con un "Super-Prompt" diseñado para guiarlo:

Este prompt es nuestra arma secreta. ¿Por qué funciona tan bien?

  • Le asignamos un rol: "Actúa como un experto". Esto pone a la IA en el estado mental correcto.

  • Explicamos el "qué" y el "cómo": Describimos el objetivo (etiquetar fotos desde un Excel) y las restricciones clave (modelo local de Hugging Face, código en Python).

  • La petición maestra: No pedimos código. Pedimos un documento de validación y contexto. Le pedimos que piense con nosotros, que sea nuestro socio estratégico.

La respuesta de Claude fue oro puro. Validó que el proyecto era "sólido y muy práctico" (ojo con este tipo de feedback, las IAs suelen ser muy aduladoras) y nos dio consejos excelentes, como usar el modelo BLIP de Salesforce (un equilibrio perfecto entre calidad y velocidad) y sugerencias para añadir copias de seguridad o la capacidad de reanudar el proceso si se interrumpe. ¡Nuestra estrategia funcionaba!

Para los más curiosos: ¿Qué es Hugging Face?

Imagina una gigantesca biblioteca online, pero en lugar de libros, está llena de modelos de Inteligencia Artificial listos para usar. Eso es Hugging Face 🤗. Es el lugar de referencia para la comunidad de IA donde desarrolladores de todo el mundo comparten sus creaciones. Nosotros iremos allí a "tomar prestado" el cerebro que analizará nuestras fotos.

Si esta explicación te ha sabido a poco puedes consultar este artículo que publiqué en febrero Hugging Face: Tu portal mágico al mundo de la inteligencia artificial.

De la idea gigante al primer paso: el poder del MVP 🚀

Con la validación en la mano, podríamos sentirnos tentados a construir la herramienta definitiva con docenas de funciones. Pero ese es otro camino directo a la frustración. En el mundo del desarrollo, se sigue un principio poderoso: el MVP (Mínimo Producto Viable).

La idea es simple: en lugar de intentar construir un coche de Fórmula 1 de golpe, empezamos construyendo un patinete. Es básico, sí, pero funciona, nos lleva de un sitio a otro y nos permite probar la idea. Una vez que el patinete funcione, ya le iremos añadiendo un motor, asientos de cuero y alerones.

Así que volvimos a hablar con Claude para definir nuestro "patinete". Abrimos un nuevo hilo y pusimos el siguiente prompt:

Este segundo prompt está pidiendo que se genere el plano detallado de nuestro patinete:

  • Control total para el usuario: Queremos una interfaz simple para elegir qué fotos etiquetar.

  • Feedback visual: Ver la foto que se está procesando y la etiqueta que se genera en tiempo real hace que el proceso sea mucho más interesante.

  • Red de seguridad: Guardar la etiqueta antigua en otra columna es un seguro de vida por si queremos volver atrás.

  • Código de calidad: Pedir "componentes granulares" y un enfoque contract-first es como decirle al arquitecto que use ladrillos de LEGO en el que todas las piezas encajen unas con otras en lugar de un bloque gigante de hormigón. Facilita la construcción y las futuras mejoras.

Y Claude nos genera un documento perfecto para empezar a trabajar. Lo descargamos en formato PDF para utilizarlo durante el proceso de construcción:

Estructura de componentes propuesta por Claude para la solución.
Estructura de componentes propuesta por Claude para la solución.

¡Comienza la aventura! Próxima parada: el código

Y ahí lo tenemos. Hemos pasado de una idea difusa a un plan de acción sólido y detallado. Hemos definido nuestro reto, evaluado nuestras opciones y, lo más importante, hemos creado un plan de ataque claro para guiar a nuestra IA colaboradora. Nuestro "director de orquesta" tiene la partitura lista.

Ahora que los planos están aprobados y los cimientos puestos, estamos listos para empezar a construir. Te doy los tips básicos para que puedas llevar tu proyecto a buen fin:

  • Antes de empezar a desarrollar le pedimos que nos cree un script para crear la estructura de carpetas: "Genera un script para generar la estructura completa de carpetas y componentes vacíos necesarios."

  • También le pedimos que nos genere un script que nos haga el trabajo duro de crear los datos para prueba: "dame un script para crear los datos de prueba (carpetas e inventario)"

  • Le pedimos que nos asesore sobre el mejor orden para desarrollar todos los componentes: "Dime el orden más adecuado para abordar el desarrollo minimizando los problemas de integración y favoreciendo las pruebas individuales de cada componente."

  • Ahora ya estamos listos. Para cada componente haremos lo siguiente:

    1. Abrir un nuevo hilo en el chatbot seleccionado.

    2. Adjuntar el archivo PDF que nos generó Claude.

    3. Le damos un prompt  tan sencillo como: "Desarrollo el componente logger.py" ; iremos sustituyendo logger.py por cada uno de los componentes incluidos en la solución.

Consideraciones finales

Te recomiendo que abras un nuevo hilo para desarrollar cada componente debido a la limitación de la ventana de contexto. ¿Qué es la ventana de contexto? Es el límite que tienen los modelos del tamaño de cada hilo, y cada chatbot lo gestiona de una forma. Por ejemplo, Calude te avisa y deja de responder cuando se agota su ventana de contexto (unos 200.000 tokens), pero otros no te avisan y el efecto es que el modelo va "olvidando" lo que habías incluido al principio, y en nuestro caso al principio van los planos del proyecto. Haciendo un componente en cada hilo, tendremos posibilidad de pedirle que nos ayude en el caso de que encontremos algún error en el componente.

Tal y como hemos enfocado el proyecto, podemos darle cada componente a un modelo diferente. Esto posibilita desarrollar todo el proyecto con las versiones gratuitas disponibles; para el ejemplo he utilizado ChatGPT, Claude y Mistral y para mi sorpresa, todo ha encaja a la primera y ha arrancado sin problemas. Mira la imagen de lo que estas IA han construido en un rato.

Conclusión

Si has llegado hasta aquí y has logrado concluir con éxito tu proyecto, ¡enhorabuena! 

Este ejercicio demuestra como con un poco de planificación y orden se pueden construir proyectos complejos de cierta envergadura utilizando la IA como copiloto. Ya no necesitas ser un programador experto para construir herramientas que te faciliten la vida. Si el desarrollo de software te interesa debes saber que hay muchísimas herramientas disponibles que te facilitarán mucho la tarea de desarrollar aplicaciones complejas. ¡Ya no valen las excusas, a desarrollar!