• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

3.17 – Proyecto final: detección de objetos multiclase usando Redes Convolucionales

Lección 17 del módulo “Redes Convolucionales” del curso Fundamentos de Deep Learning con Python.

En la práctica anterior vimos cómo realizar la segmentación de imágenes usando Redes Convolucionales.

En este proyecto final de la sección veremos cómo usar estas Redes Convolucionales para resolver otra de las tareas fundamentales de la visión artificial: la detección de objetos.

En particular veremos cómo usar Keras y Python para implementar y entrenar una Red Convolucional capaz de detectar diferentes tipos de objetos, lo que se conoce como detección multiclase.

Así que comencemos viendo en detalle en qué consiste la detección de objetos y cómo realizar la lectura del set de datos que usaremos a lo largo del proyecto:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Bien, como acabamos de ver el objetivo de la detección de objetos es identificar no solo qué objeto está presente en una imagen (clasificación), sino también su ubicación exacta (coordenadas) dentro de ella (regresión).

Así que para esto debemos implementar un sistema de detección multiclase que combine la clasificación de la categoría del objeto con el cálculo de sus coordenadas a través de un modelo de regresión.

Este sistema se compone de una Red Convolucional que extrae características relevantes de las imágenes y dos redes neuronales pequeñas: una para clasificar la categoría del objeto y otra para calcular sus coordenadas.

Y para entrenar y validar este modelo usaremos un set de datos que contiene 2033 imágenes de tres tipos de objetos («airplanes», «faces» y «motorbikes»), acompañado de un archivo de anotaciones que contiene tanto la categoría como las coordenadas de cada objeto.

Veamos a continuación cómo realizar la preparación de este set de datos antes de llevarlos a la Red Convolucional:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

Bien acabamos de ver cómo realizar la lectura del set de datos con ayuda de la librería NumPy. Además vimos cómo usar el módulo «LabelBinarizer» de Scikit-Learn para convertir las categorías a su representación en el formato one-hot.

Finalmente, hicimos el módulo «train_test_split» (también de Scikit-Learn) para crear los sets de entrenamiento y prueba.

Con esto ya estamos listos para ver cómo crear y entrenar la Red Convolucional, el tema del siguiente video:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

En últimas la Red Convolucional implementada toma como base el modelo ResNet50, una variante de la red ResNet y que ya se encuentra pre-entrenada y disponible en la librería Keras.

Al igual que en prácticas anteriores, hicimos uso de los módulos Model, Dense y Flatten de Keras, que nos permitieron realizar la implementación completa de nuestra Red Convolucional.

Finalmente, entrenamos el modelo usando el optimizador Adam y como hiperparámetros usamos un tamaño de lote de 32 y un total de 15 iteraciones.

Con este modelo ya entrenado estamos listos para ponerlo a prueba, es decir que la idea es presentarle diferentes imágenes del set de prueba y verificar qué tan bien funciona el proceso de detección de objetos. Veamos esto en detalle:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

¡Excelente! Tras poner a prueba el modelo entrenado podemos verificar que tras realizar las predicciones el desempeño es bastante bueno, pues el bounding box generado por la Red Convolucional se acerca con bastante precisión al definido originalmente en los sets de prueba y entrenamiento.

Así que con este proyecto hemos culminado este tercer módulo del curso, en donde vimos todos los elementos asociados a las Redes Convolucionales.

Entonces ya estamos listos para dar inicio al cuarto módulo del curso, en donde hablaremos de las Redes Neuronales Recurrentes y las Redes LSTM, especializadas en el procesamiento de secuencias.

En particular, en la próxima lección comenzaremos con una introducción a las Redes Recurrentes y el concepto de secuencia.

Todas las lecciones del curso Fundamentos de Deep Learning con Python.

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }