Paso a paso: entrenamiento de la red Neuronal YOLOv8 con anylabeling

¡Hola!👋Soy Henry Navarro Hernández

Matemático, apasionado de los datos y la IA

Tabla de contenidos

¿Sabías que la red neuronal es el secreto mejor guardado de la tecnología? Todo empezó en los años 40 cuando unos científicos se inspiraron en el cerebro humano y crearon un modelo matemático llamado “red neuronal”. Funciona como un equipo inteligente que aprende de todo por sí mismo.

Desde entonces, ha revolucionado y descifrado patrones en los datos. Esto significa que puede realizar tareas con mucha más precisión que las técnicas convencionales. Por ejemplo, a la hora de clasificar imágenes, ¡lo hace con una precisión increíble de más del 99%! Además, cuando se trata de traducciones, cada vez lo hace mejor. Pero eso no es todo, también está abriendo nuevas puertas para crear contenido y comunicarnos con los usuarios. Desde generar imágenes, música, hasta textos que parecen hechos por humanos. Incluso puede crear chatbots que pueden charlar de forma natural con nosotros. La red neuronal es la esencia de muchos avances tecnológicos.

En este artículo explicaremos cómo las redes neuronales han transformado la forma en que interactuamos con la tecnología. Y  te contaré mi experiencia con Anylabeling, una herramienta de etiquetado de datos que a través de su integración eficiente con otras herramientas de código abierto, como LabelImg y Labelme, acelera de manera significativa el entrenamiento de mi modelo YOLOv8. 

¿Cómo? Sigue leyendo para descubrir cómo funciona esta combinación.

Anatomía de una Red Neuronal

anatomia de la red neuronal

Piensa un momento cómo es posible que las máquinas puedan aprender por sí mismas sin que nadie les diga qué hacer. Esto es precisamente lo que ocurre con una red neuronal. Esta red es como una especie de simulacro del cerebro humano, compuesta por una red de nodos interconectados, cada nodo es una pequeña neurona que tiene su propio papel en el sistema. Pero lo más fascinante es cómo se comunican entre sí a través de conexiones con pesos específicos.

En la red neuronal pasa algo muy interesante y es que cada comunicación tiene un “peso” que indica cuánto importa la opinión de un miembro sobre otro. Cuando este equipo aprende, ajusta esos “pesos” para que las comunicaciones funcionen mejor. Es como si cada miembro aprendiera cuánto confiar en los demás para lograr el objetivo del equipo.

A continuación explicaremos la estructura básica de una red neuronal. Vamos a usar una analogía que nos resulte familiar, como el cuerpo humano. Una red neuronal tiene las siguientes partes:

Capa de entrada: Piensa en la capa de entrada como los sentidos de la red neuronal. Es como el canal que le permite absorber información del mundo, de la misma forma en que nosotros percibimos nuestro entorno a través de nuestros sentidos.

Neuronas: Nuestro cerebro es el centro de todo este proceso. Así como en una red neuronal, donde las neuronas procesan datos, nuestro cerebro interpreta y analiza la información que recibimos a través de nuestros sentidos.

Capas Ocultas: Pero, espera, aquí está el truco. Nuestro cerebro tiene diferentes áreas especializadas. Algunas se centran en reconocer formas, otras en entender sonidos, y así sucesivamente. Esto es como las capas ocultas de una red neuronal, donde se lleva a cabo un procesamiento interno especializado.

Conexiones entre neuronas: ¿Recuerdas cómo las neuronas están interconectadas en una red neuronal? Bueno, en nuestro cerebro, estas conexiones son como las sinapsis. Son los caminos que permiten que la información fluya y se procese.

Capa de Salida (Respuesta): La capa de salida es como la acción que tomamos basada en la información procesada. Por ejemplo, si vemos una manzana, la capa de salida podría decir «comerla» si tenemos hambre.

El cerebro humano como una red neuronal

Tanto el cerebro humano como una red neuronal son expertos en procesar información, aprender y adaptarse. Aunque las redes neuronales están inspiradas en el cerebro, son como una versión simplificada y matemática de cómo trabaja nuestra mente:

CaracterísticaCerebro HumanoRed Neuronal
UnidadesNeuronasNodos
ConexionesSinapsisEnlaces
Procesamiento Señales eléctricasFunciones matemáticas
SalidaConductaPredicción

Neuronas y nodos: Piensa en las neuronas de nuestro cerebro. En el mundo de la red neuronal artificial, tenemos algo parecido, pero en lugar de neuronas, utilizamos lo que llamamos “nodos”.

Estos nodos son como las piezas clave que se enlazan entre sí para formar la red neuronal. Es como si fueran bloques de construcción de la inteligencia artificial.

Conexiones y enlaces: Ahora, hablemos de las conexiones en ambos sistemas. En nuestro cerebro, estas conexiones son lo que llamamos sinapsis. Funcionan como pequeños puentes eléctricos que permiten a una neurona enviar señales a otra. En las redes neuronales artificiales, nuestras ‘conexiones’ se llaman enlaces. En lugar de impulsos eléctricos, estos enlaces transmiten información a través de operaciones matemáticas.

Procesamiento: En el cerebro humano, las neuronas procesan datos a través de señales eléctricas. Con la red neuronal artificial, este proceso se lleva a cabo mediante operaciones matemáticas. Es como si las neuronas virtuales hicieran complejos cálculos para procesar y analizar la información que reciben.

Salida: Cuando hablamos del cerebro humano, este responde con comportamientos. En cambio, en las redes neuronales artificiales, su respuesta se traduce en predicciones


El ABC de los algoritmos para entrenar la red neuronal

Algoritmos red neuronal

Para la red neuronal, los algoritmos de entrenamiento tienen como objetivo encontrar la combinación perfecta de habilidades y ajustarlas para que la red pueda dar respuestas precisas a diferentes situaciones. Pueden hacer ajustes pequeños o cambios más significativos en cómo se conectan y colaboran.

Ahora, estos algoritmos vienen en dos variedades principales. Cada una tiene sus propias técnicas y enfoques para lograr que la red neuronal sea lo mejor que puede ser.

Algoritmos de aprendizaje supervisado

Imagina que estás entrenando un modelo para reconocer diferentes tipos de frutas. Para hacerlo, le proporcionas un conjunto de imágenes de frutas etiquetadas. Cada imagen tiene una etiqueta que indica el tipo de fruta que es. El modelo comienza con conexiones aleatorias entre las neuronas como un lienzo en blanco.

A medida que muestras más imágenes y le dices que fruta es, el modelo ajusta esas conexiones para intentar acertar a las respuestas aprendiendo a reconocer patrones por sí mismo y así con el tiempo se volverá más preciso en identificar las frutas. Recuerda que todo es un proceso iterativo y matemático.

Ahora, veamos algunos ejemplos concretos de algoritmos supervisados:

Adagrad

El algoritmo Adagrad es como un entrenador que observa detenidamente cómo la red neuronal está aprendiendo y, dependiendo de lo bien o mal, que lo hace le da más atención. Este algoritmo adapta la forma en que la red neuronal aprende en cada momento.

Backpropagation

Este es el algoritmo de aprendizaje supervisado más utilizado y funciona de la siguiente manera: primero, la red neuronal genera una predicción para una entrada específica. Luego, comparamos esta predicción con la salida que queremos obtener. El algoritmo calcula el error, que representa cuánto se desvió la red de la respuesta correcta. Luego, este error se propaga hacia atrás a través de la red, ajustando los pesos de cada neurona para minimizar este error en futuras predicciones.

Gradient descent

El gradient descent es como el GPS de una red neuronal. Imagina que quieres llegar a un destino específico, pero no sabes exactamente cómo. Este algoritmo te dice que dirección debes mover para llegar lo más rápido posible.

Es como cuando sigues las instrucciones de tu GPS. Así es como el algoritmo guía  a la red neuronal para que ajuste sus parámetros y se acerque lo más posible a la solución correcta en cada paso del entrenamiento.

RMSProp

El algoritmo RMSProp actúa como un afinador meticuloso para la red neuronal. Observa cada movimiento que hace la red y si ve que hay demasiado ruido o variación en los ajustes de peso, lo suaviza para que el aprendizaje sea más constante. Además si ve que hay cambios muy bruscos los calma un poco para que la red no se desvíe demasiado del camino correcto.

Algoritmos de aprendizaje no supervisado

Estos algoritmos son como exploradores. No necesitan que les digan qué es qué, sino que se aventuran a descubrir patrones y relaciones por sí mismos. A diferencia de otros métodos estos algoritmos no requieren que les demos etiquetas o indicaciones específicas. Van por el mundo de los datos y por sí solos encuentran conexiones y estructuras que pueden ser muy valiosas.

A continuación, veremos ejemplos de algunos algoritmos que trabajan para descubrir patrones y estructuras en los datos sin necesidad de etiquetas o guías explícitas.

Autoencoders

Los autoencoders son como traductores, toman datos complejos y los resumen en una forma simple, luego los devuelven a su forma original, pero ahora con una comprensión más sencilla 

K-means

El algoritmo K- Means es un organizador automático de datos. Si tienes un montón de información, K- means te ayuda a agruparlos en conjuntos que tienen cosas en común. ¿Cómo lo hace? Lo hace asignando cada dato al grupo que tiene más sentido en función de la cercanía entre ellos.

 PCA

Piensa en el algoritmo de PCA que tiene un montón de datos complejos, ¿verdad? Bueno, el PCA viene y te dice cuáles son las direcciones más importantes en esos datos y así te ayuda a reducir la cantidad de información que necesitas para entender lo que está pasando. Manteniendo lo más relevante.

Elegir el algoritmo de entrenamiento correcto depende de cosas como qué tipo de tarea estás realizando, cuantos datos de entrenamiento tienes y cómo son esos datos. 

Ejemplos de red neuronal en empresas que conoces

Google

Google realmente se apoya en una red neuronal para un montón de cosas interesantes. Piensa un momento en Google Fotos: cuando subes tus imágenes, esta red neuronal trabaja para reconocer y etiquetar lo que hay en ellas. Así es como puedes buscar cosas específicas, como «playa» o «perrito», sin tener que etiquetar cada foto manualmente.

Por otro lado tenemos a Google Maps, esta red neuronal es como un guía visual. Ayuda a identificar señales de tráfico, calles y lugares importantes para darte las direcciones más precisas. También, cuando hablamos de Google Translate, esta red neuronal es la estrella. Antes, las traducciones se basaban en reglas y estadísticas, pero ahora, gracias a esta red, el sistema puede entender el contexto y la gramática mucho mejor.

Y ni hablemos de Google Assistant, esta red neuronal, puede entender comandos complicados y preguntas no tan claras. Es capaz de interpretar el contexto, lo que hace que las conversaciones con él sean mucho más naturales

Siemens Healthineers

Esta empresa líder en tecnología médica integra con éxito la red neuronal. Su enfoque en el diagnóstico por imágenes ha sido notable. Utiliza la red neuronal para mejorar la precisión y eficiencia en la detección de enfermedades y condiciones médicas.

Un ejemplo destacado es su aplicación en mamografías. Mediante el uso de la red neuronal Siemens Healthineers ha desarrollado algoritmos capaces de detectar con alta precisión anomalías en mamografías, incluidos posibles signos tempranos de cáncer de mama. Esto es especialmente crucial, ya que una detección temprana puede significar la diferencia en el pronóstico y el tratamiento de esta enfermedad.

Otro ejemplo fenomenal es la aplicación My Therapy Assistant. Esta App utiliza la potencia de la red neuronal para apoyar a pacientes con diabetes en su tratamiento diario. ¿Te imaginas tener un enfermero digital que te aconseja sobre dieta, ejercicio y medicamentos? Gracias a las redes neuronales esto es posible.

Mastercard

Mastercard emplea extensamente la red neuronal para reforzar la seguridad y la eficiencia de sus servicios financieros. Te explicaré cómo lo logran:

La red neuronal de Mastercard procesa cada transacción en tiempo real y la coteja con una vasta base de datos de patrones de gasto y comportamientos. Si identifica alguna actividad inusual o sospechosa, como un gasto anormalmente alto en un lugar atípico, alerta instantáneamente a Mastercard y a ti sobre la posible actividad fraudulenta.

Mastercard ha avanzado significativamente en autenticación biométrica. Entrena redes neuronales para reconocer y verificar rasgos únicos, como huellas dactilares o reconocimiento facial, proporcionando una forma más segura y rápida de confirmar tu identidad

La red neuronal de Mastercard analiza patrones de gasto anteriores y los compara con nuevas transacciones. Si detecta discrepancias, puede bloquear la transacción automáticamente, protegiendo tus fondos de usos no autorizados.

¿Cómo acelerar los procesos de etiquetado de datos para el entrenamiento de YOLOv8?

Imagínate que vivimos en un lugar donde las cámaras de seguridad están por todas partes. En las calles, en las tiendas, en nuestros propios hogares. Estas cámaras están siempre grabando, capturando millones de imágenes cada día. 

Pero, ¿cómo podemos darle sentido a toda esa información? Yolov8 funciona con el poder de una red neuronal en su núcleo. Este modelo de aprendizaje automático puede identificar objetos en tiempo real, pero para esto necesita entrenamiento. 

Anylabeling, creada por Viet-Anh Nguyen, es exactamente eso. Une lo mejor de Autolabeling y LabelImg con una interfaz más amigable y habilidades de etiquetado automático. Esto lo convierte en un recurso increíblemente valioso para científicos de datos e ingenieros de aprendizaje automático. Es una joya para quienes trabajamos en estos campos.

AnyLabeling = LabelImg + Labelme + Improved UI + Auto-labeling

Anylabeling ofrece una interesante integración con Segment Anything, la más reciente red neuronal lanzada por Meta. Esto significa que ahora el proceso de etiquetado de objetos en imágenes se vuelve mucho más eficiente y preciso que antes.

Recopilación de datos

A veces, descargar imágenes de la web una por una  puede ser un verdadero dolor de cabeza, ¿no crees? Muchos motores de búsqueda bloquean el web scraper de Python o de cualquier otro lenguaje. A veces ni siquiera puedes ejecutar un wget en tu terminal porque el anti bot prohibirá la solicitud.

¡Pero no te preocupes! Hay una herramienta genial en Google Chrome llamada «Descargar todas las imágenes». Con solo unos cuantos clics, puedes descargar fácilmente varias imágenes de una sola vez. Así de fácil.

yolov8 1
Ejemplo de cajas en imágenes de almacén descargadas usando la extensión de Chrome

Primero, para empezar a usar esta extensión, necesitas instalarla en tu navegador Google Chrome. Es fácil, solo ve a la Chrome Web Store y busca «Descargar todas las imágenes» en la barra de búsqueda. Cuando la encuentres, dale clic al botón «Agregar a Chrome» y sigue las instrucciones para instalarla. ¡Listo, ya estás listo para usarla!

Una vez que tengas la extensión instalada, solo necesitas ir a la página web donde están las imágenes que quieres descargar. Notarás un pequeño icono en la esquina superior derecha de tu navegador Chrome. Haz clic en él para abrir el menú de la extensión. Automáticamente se descargará un archivo .zip con todas las imágenes que estás viendo en la web.

Anotación de datos

Elegí este conjunto de datos en particular porque tiene objetos con máscaras que necesitan ser etiquetados en la misma imagen. Gracias a las características avanzadas de Anylabeling, esta tarea se vuelve mucho más sencilla y eficiente. Ahora puedo etiquetar múltiples máscaras en una sola imagen sin complicaciones.

Anylabeling es una herramienta completa para etiquetar datos que ofrece servicios tanto de cuadros delimitadores como de máscaras. Lo que hace que Anylabeling destaque es su integración de tecnologías de aprendizaje automático de vanguardia, incluyendo opciones de etiquetado automático. Esto significa que Anylabeling hace que el proceso de etiquetado de datos sea mucho más rápido y sencillo, ahorrando tiempo y esfuerzo considerablemente 

Anylabeling viene con varias integraciones geniales, como YOLOv5, YOLOv8 y la recién lanzada Segment Anything, una red neuronal poderosa. ¿Qué significa esto? Que ahora puedes hacer anotaciones automáticas en imágenes, ya sea para marcar cuadros alrededor de objetos o para crear máscaras precisas. Esto se traduce en anotaciones mucho más exactas y detalladas.

La integración de Anylabeling con Segment Anything, la nueva red neuronal de Meta, es particularmente emocionante. Esto ha llevado la plataforma a ofrecer servicios de segmentación de imágenes más veloces y precisos. Con Segment Anything, los anotadores de Anylabeling pueden identificar y etiquetar objetos en una imagen con facilidad, lo que resulta en máscaras ultra precisas.

Yolov8 2

En el ejemplo de la contraventana, se ha llevado a cabo un tipo de etiquetado muy especial. Para ser más precisos, se utilizó Segment Anything para crear esta anotación detallada.

Con esta herramienta gratuita y de código abierto, el tiempo que necesitas para etiquetar los datos se reduce significativamente.

Estructura del conjunto de datos

Cuando utilizas Anylabeling, las anotaciones de salida vienen en formato «labelme», lo que significa que obtienes un archivo json para cada imagen. Pero si estás trabajando con YOLOv8, es importante que los archivos de etiquetas sigan este formato específico:

0  0,54846209375  0,2441550168269231 0,5429065384615385  … 0 0,7645167788461538 0,1932866466346154 0,7589612235576924 … 0 0,76 57407403846155 0.39455994711538456 0.7592592596153847 … 0 0 0.393344983173077 0.1046296298076923 0.3402199831730769 …

Para obtener anotaciones precisas, es clave seguir las indicaciones de normalización que se detallan en la documentación de Ultralytics. Esto garantiza que las máscaras se alineen correctamente con las imágenes, lo que se traduce en anotaciones más exactas y detalladas.

Para llevar a cabo esta tarea, conté con la ayuda de la herramienta labelme2yolo. Lo impresionante de esta herramienta es que con una sola línea de código, convierte todas las anotaciones sin complicaciones.

En mi caso, soy de los que prefieren la forma clásica de organizar un conjunto de datos. Así que organicé mis datos de la siguiente manera:

box_counting/
├── train/
│   ├── images
│   └── labels
└── valid/
    ├── images
    └── labels

Y el archivo data.yaml que YOLOv8 necesita se ve así:

train: ../boxes_counting/train/images
val: ../boxes_counting/valid/images

nc: 1
names: ['box']

Entrenamiento YOLOv8

¡Ahora estamos listos para comenzar el proceso de entrenamiento! Primero, creamos nuestro propio entorno virtual llamado «ultralytics» y también la carpeta del espacio de trabajo, que incluye la carpeta del conjunto de datos.

mkvirtualenv ultralytics
mkdir ultralytics
pip instalar ultralytics

Paso opcional: realiza un seguimiento de tus experimentos utilizando Comet

Comet es como el asistente personal para los entusiastas del aprendizaje automático. Imagina tener una herramienta que te ayude a llevar un registro de tus experimentos y a mejorar tu forma de entrenar modelos de manera más inteligente. La mejor parte es que puedes tenerla funcionando en tu sistema en un abrir y cerrar de ojos, solo con el comando “pip install comet_ml”.

Con Comet puedes ver y anotar fácilmente todas las métricas y configuraciones importantes de tus experimentos. Además, puedes compartir estos resultados con tu equipo en un instante, facilitando la colaboración y agilizando la mejora de tus modelos.

Configurar Comet es pan comido y no es el tema central de este artículo. Para eso, te sugiero seguir estos pasos.

Voy a emplear la interfaz de línea de comandos (CLI) para entrenar YOLOv8 con el modelo más potente que nos brinda Ultralytics (yolov8x-seg.pt). Así que, con solo una línea de código, estaremos listos para continuar

yolo mode=train task=segment data=data.yaml epochs=100 model=yolov8x-seg.pt batch=-1 cache=ram

Es crucial configurar batch=-1 para que el tamaño del lote se ajuste automáticamente al valor más alto que tu GPU pueda manejar. Si cuentas con suficiente memoria RAM (como 64 GB en mi caso), se sugiere la opción cache=ram; de lo contrario, utiliza cache=disk.

Puedes revisar los resultados aquí

Pruebas en entorno real.

Parece que todas las métricas están en orden, pero ahora llega el momento de la verdad: las pruebas en el mundo real. Le pedí a un amigo que me compartiera algunas fotos de su almacén y aquí están los resultados:

Red neuronal
Prueba de red neuronal, por ejemplo, segmentación en un entorno real

Consideraciones Finales

Te cuento que el experimento que hice con Anylabeling fue todo un éxito. Esta herramienta de etiquetado de datos es increíble, y lo mejor es que no cuesta nada. Una de las cosas que más me impresionó es que te permite etiquetar múltiples máscaras en una sola imagen de manera fácil. Además, se integra perfectamente con Segment Anything, lo que hace que el etiquetado de segmentación de imágenes sea mucho más rápido y preciso.

Qué necesitas para trabajar con la red neuronal

Si eres un técnico interesado por la red neuronal vas a necesitar un conjunto de herramientas para dar vida a tus modelos. Aquí te menciono algunas de las esenciales:

Lenguajes de Programación: Estos son como el lenguaje común entre tú y la red neuronal. Piensa en Python, C + + y Java como tus aliados para escribir el código que hará todo funcionar.

Librerías de Aprendizaje Automático: Son como los atajos que te facilitan la vida. Te dan funciones y algoritmos que hacen más sencillo desarrollar y entrenar tus redes neuronales. TensorFlow, PyTorch y Keras son algunas de las más populares.

Conjuntos de Datos: Imagina esto como tu materia prima. Para entrenar una red neuronal, necesitas un montón de datos para que la red pueda ‘ver’ y aprender de ellos. Pueden ser imágenes, texto, audio o cualquier tipo de información que desees que la red procese.

Hardware Potente: Aquí hablamos del músculo que necesita tu red para funcionar a todo rendimiento. Tarjetas gráficas, unidades de procesamiento neuronal, y unidades de procesamiento de campo son el hardware que hará que tus redes neuronales corran como un rayo.

Reflexionemos

red neuronal

En resumen, estas herramientas de código abierto son una maravilla para extraer y etiquetar datos, y entrenar redes neuronales sin gastar ni un centavo, y mantener la privacidad. Anylabeling es un claro ejemplo de una herramienta que ofrece características excepcionales, haciéndola una opción súper poderosa e innovadora para el etiquetado de datos. Definitivamente vale la pena considerarla en nuestros proyectos, especialmente si estamos trabajando con modelos avanzados como YOLOv8.

¿Sabes por qué la red neuronal está en boca de todos? Hay tres grandes razones. Primero, el mundo está repleto de datos, desde fotos hasta texto y mediciones de sensores, lo que da al cerebro digital más material para aprender y mejorar. 

Segundo, nuestros ordenadores están más desarrollados que nunca, lo que significa que una red neuronal puede procesar montañas de datos a una velocidad impresionante. 

Por último, los genios del aprendizaje automático están haciendo maravillas, creando redes neuronales que son más listas y efectivas. 

Así es como esta maravilla matemática se está adueñando del mundo.

contacta

Desarrolla tu siguiente proyecto de Data, IA, Cloud o Transformación Digital con nosotros. Empieza hablando con nuestro equipo comercial.

Tech Matters

La Newsletter mensual para conocer los proyectos de tecnología e inteligencia artificial que están teniendo un impacto positivo en el mundo.

Plazas limitadas

Próximo evento
Lead&Inspire: Aplicación de IA en entornos de desarrollo de software