La detección de objetos en imágenes mediante inteligencia artificial es una tecnología fascinante que está transformando múltiples industrias. Detrás de estos sistemas hay un proceso fundamental: el etiquetado de datos. Este proceso, aunque laborioso, es esencial para entrenar modelos que puedan identificar objetos específicos en imágenes. Vamos a explorar cómo realizar este etiquetado manual utilizando herramientas profesionales y preparar nuestros datos para entrenar modelos de detección de objetos.
¿Cómo funciona el etiquetado manual de imágenes para modelos de IA?
El etiquetado manual es el proceso mediante el cual identificamos y marcamos objetos específicos en imágenes para que los modelos de inteligencia artificial aprendan a reconocerlos. Para realizar este proceso, utilizaremos Label Studio, una herramienta especializada que anteriormente se conocía como Labelimage.
Para comenzar, necesitamos instalar Label Studio mediante el siguiente comando:
pip install label-studio
Una vez instalado, podemos iniciar la aplicación con el comando:
label-studio
Este comando lanza un servidor local en el puerto 8080 (localhost:8080) que nos permite acceder a la interfaz de Label Studio. Una ventaja importante es que podemos levantar este proceso en una máquina virtual, permitiendo que todo nuestro equipo acceda a la misma URL para colaborar en el etiquetado.
¿Cómo crear un proyecto de etiquetado en Label Studio?
Para iniciar nuestro trabajo de etiquetado, debemos crear un nuevo proyecto:
Hacer clic en "Crear" para iniciar un nuevo proyecto
Definir un nombre para el proyecto (en nuestro ejemplo: "Platzi Demo")
Añadir una descripción detallada (por ejemplo: "Detección de cascos y chalecos")
Después de configurar la información básica del proyecto, procedemos a importar nuestras imágenes. Label Studio soporta múltiples formatos de archivo, lo que lo hace muy versátil. Podemos arrastrar nuestras imágenes directamente o cargarlas mediante el botón correspondiente.
¿Cómo configurar las etiquetas para detección de objetos?
Una vez cargadas las imágenes, debemos configurar el tipo de etiquetado que realizaremos:
En la sección "Labeling Setup", seleccionamos la opción para detección de objetos con bounding box (rectángulos)
Elegimos la configuración manual
Definimos nuestras etiquetas personalizadas:
Eliminamos las etiquetas predeterminadas
Añadimos "cascos" (con color verde intenso)
Añadimos "chalecos" (con color rojo)
Guardamos la configuración
¿Cómo realizar el proceso de etiquetado de imágenes?
El proceso de etiquetado consiste en marcar cada objeto relevante en nuestras imágenes:
Seleccionamos una imagen sin etiquetar
Elegimos la etiqueta correspondiente (por ejemplo, "cascos")
Dibujamos un rectángulo alrededor del objeto en la imagen
Si hay más objetos, repetimos el proceso con sus respectivas etiquetas
Hacemos clic en "Submit" para guardar el etiquetado
Es importante destacar que la precisión del rectángulo que engloba el objeto influye directamente en la calidad del modelo resultante. Cuanto más preciso sea el etiquetado, mejor será el rendimiento del modelo de IA.
Este proceso debe repetirse para cada imagen del dataset. En entornos profesionales, cuando se trabaja con miles de imágenes, suele haber equipos dedicados exclusivamente al etiquetado o se contrata a empresas especializadas para realizar esta tarea.
¿Cómo exportar los datos etiquetados para entrenar modelos YOLO?
Una vez completado el etiquetado de todas las imágenes, podemos exportar los resultados:
Vamos a la página principal del proyecto
Hacemos clic en "Exportar"
Seleccionamos el formato YOLO
Elegimos si queremos exportar solo las etiquetas o también las imágenes
Label Studio nos permite exportar en formato compatible con YOLO v8, que también funciona correctamente con YOLO v11 y otras versiones.
¿Cómo preparar el dataset para entrenar un modelo de detección?
Después de exportar y descomprimir nuestro dataset etiquetado, obtenemos:
Carpeta de imágenes
Carpeta de etiquetas (labels)
Archivo de clases (cascos, chalecos)
Notas sobre YOLO
Para entrenar un modelo de detección, necesitamos dividir nuestro dataset en tres subconjuntos:
Entrenamiento (train): 70% de las imágenes
Prueba (test): 20% de las imágenes
Validación (val): 10% de las imágenes
Podemos utilizar un script para realizar esta división automáticamente:
# Script para dividir el dataset en entrenamiento, test y validación# Parámetros: directorio que contiene imágenes y etiquetas# División: 70% entrenamiento, 20% test, 10% validación
Finalmente, necesitamos crear un archivo de configuración YAML que especifique las rutas de nuestros datos y las clases a detectar:
train: ruta/a/train/images
val: ruta/a/valid/images
test: ruta/a/test/images
nc:2# número de clasesnames:['cascos','chalecos']# nombres de las clases
Con estos pasos, nuestro dataset queda completamente preparado para entrenar un modelo de detección de objetos utilizando YOLO u otras arquitecturas similares.
El etiquetado manual de imágenes es un proceso fundamental para crear modelos de IA personalizados que detecten objetos específicos. Aunque requiere tiempo y dedicación, los resultados pueden transformar la manera en que automatizamos tareas de reconocimiento visual. ¿Te animas a crear tu propio dataset etiquetado? Comparte tus experiencias y resultados en los comentarios.
Ahora que tengo etiquetado mi modelo y listo para usar, ¿donde podria desplegarlo de una manera rapida para que alguien no muy habil con la tecnologia pueda ver su utilidad?
Ahora que tenes tu modelo listo podrías desplegarlo en Hugging Face Spaces (HF) 🚀.
Te podes armar una interfaz gráfica con Gradio que consuma tu modelo y lo desplegas en HF.
Tene en cuenta que HF ofrece de manera gratuita el uso de despliegues con CPU, y si tenes un modelo de Deep Learning puede que demore algunos segundos / minutos para hacer la predicción. También tiene acceso a GPUs pagas que van a hacer que tu modelo corra con la misma o mayor velocidad que en Google Colab.
¡Éxitos en tu despliegue! 🚀
En este caso se utilizó la opción OBB que es para obtener bounding boxes con rotación, los datos obenidos como labels tienen mas parámetros (9 datos) que para la detección de objetos normal (5 datos)
¿Y si se me olvidó poner una etiqueta qué hago?
Bueno necesitaba etiquetar 10mil imagenes que me habian pasado y evidentemente hacerlo manualmente no era vaible por el deadline que tiene el proyecto.
La solucion que encontre fue etiquetar manualmente 300 imagenes, que me tomo como 5 horas. Y con esas imagenes entrene un modelo pequeño, YOLOv11n. Con el objetivo de usarlo como auto-etiquetador, con ese modelo etiquete unas 1000 (evidentemente no fueron perfectas y tuve que corregir una que otra, pero aceleró mucho el proceso) Ya con esas 1000 imagenes etiquetadas entrene un modelo YOLOv11s y el autoetiquetador mejoró, ayudandome a etiquetar 3000 imagenes, que denuevo estuve supervisando. Repeti el proceso hasta tener las 10mil imagenes etiquetadas y con este dataset completo se puede entrenar el YOLOv11m.
La herramienta que me ayudo a corregir pequeños errores de etiquetado que tenian los modelos fue Roboflow labeling, tiene una version gratis muy generosa en la cual uno le sube la foto y la label y puedes ver cada imagen, mover una boundinbox si quedo corrida o borrar alguna otra si se cometio algun error
En total armando todo este dataset tarde 5 dias , que pudo haber sido menos si hubiera sabido esta tecnica antes. Espero que sea de utilidad para quien lo lea, un saludo
El nombre de las imagenes se cambiaron. Evidentemente las imagenes deben de tener exactamente el mismo nombre que la etiqueta correspondiente, porque dentro de estas etiquetas quedan la clase, la cordenada en x (entre 0 y 1), la coordenada en Y (entre 0 y 1), el Alto (Height) y el ancho (Width).
¿Hay forma de automatizar el proceso? Tengo unas 10mil imagenes y tengo que etiquetar si tienen casco, chaleco o si no tienen nada
Usen la version que les da compatibilidad de mediapipe ya que con label-studio hay un error de dependencias parecido