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

Codificando Bits

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

1 – Visión por computador y transferencia de aprendizaje

Lección 1 del curso PyTorch Nivel Avanzado.

En esta primera lección del curso veremos cómo usar PyTorch para resolver una tarea de clasificación de imágenes pero usando el concepto de transferencia de aprendizaje, que consiste en re-utilizar un modelo pre-entrenado para especializarlo en la tarea en mención.

Así que comencemos entendiendo en detalle qué es la transferencia de aprendizaje y cuáles son las modalidades de transferencia de aprendizaje que podemos implementar:

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 esencia la transferencia de aprendizaje es una técnica que nos permite tomar un modelo pre-entrenado (con un set de datos muy grande) y afinarlo (es decir entrenarlo con unas pocas iteraciones) pero usando un set de datos más pequeño.

En nuestro caso este modelo contendrá dos elementos:

  1. Una red convolucional pre-entrenada
  2. Y una capa de salida, encargada de la clasificación de imágenes

Teniendo esto en cuenta, podemos implementar la transferencia de aprendizaje usando cualquiera de estos dos métodos:

  1. Congelar los parámetros de la red convolucional pre-entrenada y entrenar únicamente la capa de salida
  2. Descongelar los parámetros de la red convolucional pre-entrenada y entrenarla junto con la capa de salida

A continuación veremos cómo usar PyTorch para implementar estos dos enfoques haciendo uso de un set de datos que contiene imágenes aéreas de zonas residenciales y comerciales:

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.

Como acabamos de ver, realmente resulta muy sencillo implementar la transferencia de aprendizaje en PyTorch. En esencia debemos:

  1. Usar la librería «torchvision» para descargar un modelo (red convolucional) pre-entrenado. En este caso hemos hecho uso de RESNET18, un modelo entrenado con varios millones de imágenes provenientes del set de datos IMAGENET-1K y cada una de las cuales puede ser clasificada en una de 1.000 posibles categorías
  2. Congelar el modelo (si queremos implementar el primer método de transferencia de aprendizaje).
  3. Modificar la capa de salida del modelo pre-entrenado para que el número de neuronas de salida corresponda con el número de categorías en las cuales queremos clasificar nuestro set de datos (que en este caso será 2: «comercial» o «residencial»).
  4. Ejecutar el entrenamiento y la validación siguiendo la misma lógica que vimos en cursos anteriores

Y listo, ¡con esto ya habremos implementado la transferencia de aprendizaje!

Vale la pena resaltar que en el ejemplo que acabamos de ver, hemos usado este concepto de transferencia de aprendizaje para modelos basados en Redes Convolucionales. Sin embargo, en realidad este mismo concepto se puede extender a cualquier tipo de arquitectura de Deep Learning (como Redes Neuronales, LSTM o Transformer).

Así que habiendo visto cómo implementar de forma práctica la transferencia de aprendizaje, en la siguiente lección veremos cómo implementar «checkpoints» en PyTorch, lo que nos permitirá almacenar progresivamente el entrenamiento de cualquier tipo de modelo de Deep Learning.

Todas las lecciones del curso PyTorch Nivel Avanzado

© 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 }