23.14. Transferir aprendizaje y ajuste: transferir aprendizaje en visión por computadora
El aprendizaje automático, especialmente el aprendizaje profundo, ha revolucionado el campo de la visión por computadora, permitiendo avances significativos en tareas como el reconocimiento de imágenes, la detección de objetos y la segmentación semántica. Una de las técnicas más poderosas que ha impulsado estos avances es la Transferencia de Aprendizaje. Esta técnica implica la reutilización de modelos previamente entrenados en un conjunto de datos genérico grande para aplicarlos a un dominio específico o a un conjunto de datos más pequeño. Esto es particularmente útil en visión por computadora, donde entrenar modelos desde cero puede ser prohibitivamente costoso y llevar mucho tiempo.
El aprendizaje por transferencia es un enfoque pragmático que permite a los investigadores y profesionales aprovechar el conocimiento previamente adquirido y aplicarlo a nuevos problemas con relativa facilidad. Esto se hace tomando un modelo que ha sido entrenado en un gran conjunto de datos, como ImageNet, que contiene millones de imágenes etiquetadas en miles de categorías, y afinándolo o adaptándolo a un nuevo conjunto de datos o tarea. p>
¿Cómo funciona el aprendizaje por transferencia?
En visión por computadora, el aprendizaje por transferencia generalmente implica dos pasos principales: extracción de características y ajuste fino.
- Extracción de funciones: en esta fase, se utiliza un modelo previamente entrenado como extractor de funciones. Se sabe que las capas iniciales de una red neuronal convolucional (CNN) capturan características de imagen genéricas (como bordes, texturas y patrones) que son aplicables a muchos problemas de visión por computadora. Por lo tanto, estas capas se mantienen intactas y solo se modifican las capas superiores para que se ajusten al nuevo conjunto de datos.
- Ajuste: después de la extracción de características, algunas de las capas superiores de la red se "ajustan" o se vuelven a entrenar con el nuevo conjunto de datos. Esto permite que el modelo se ajuste con mayor precisión a las características específicas del nuevo problema. El ajuste fino puede implicar entrenar todas las capas del modelo o solo algunas, según el tamaño y la similitud del nuevo conjunto de datos con el conjunto de datos original.
Beneficios del aprendizaje por transferencia en visión por computadora
Transfer Learning ofrece varios beneficios para la visión por computadora:
- Reducción de recursos: entrenar una red neuronal convolucional desde cero requiere una gran cantidad de datos y potencia computacional. Transfer Learning permite a investigadores y desarrolladores ahorrar recursos reutilizando modelos previamente entrenados.
- Rendimiento mejorado: los modelos previamente entrenados en conjuntos de datos grandes generalmente funcionan mejor que los entrenados desde cero en conjuntos de datos más pequeños debido a su capacidad para capturar una gran variedad de características.
- Velocidad de desarrollo: Con la reutilización de modelos, es posible acelerar el proceso de desarrollo e iteración, ya que el punto de partida es un modelo que ya tiene una importante capacidad de comprensión visual. li>
Aplicación del aprendizaje por transferencia y ajuste
Para aplicar Transfer Learning en visión por computadora con Python, bibliotecas como TensorFlow y PyTorch ofrecen una variedad de modelos previamente entrenados. Consideremos un ejemplo práctico usando la biblioteca TensorFlow:
importar tensorflow como tf de tensorflow.keras.applications importar VGG16 de tensorflow.keras.layers importar Denso, Aplanar de tensorflow.keras.models importar modelo # Cargue el modelo VGG16 previamente entrenado, eliminando la capa superior base_model = VGG16(pesos='imagenet', include_top=False, input_shape=(224, 224, 3)) # Congelar las capas del modelo base para evitar que se actualicen durante el primer pase de entrenamiento para capa en base_model.layers: capa.entrenable = Falso # Agregar nuevas capas que serán entrenadas para el nuevo conjunto de datos x = Aplanar() (base_model.output) x = Denso(1024, activación='relu')(x) predicciones = Denso(num_classes, activación='softmax')(x) # Crea el modelo final modelo = Modelo(entradas=modelo_base.entrada, salidas=predicciones) # compilar el modelo model.compile(optimizador='adam', pérdida='categorical_crossentropy', métricas=['exactitud']) # Entrenar el modelo con el nuevo conjunto de datos. model.fit(new_dataset_images, new_dataset_labels, épocas=5, tamaño_lote=32) # Después de la extracción de características, seleccione capas para realizar ajustes para capa en model.layers[:unfreeze_layers]: capa.entrenable = Verdadero # Recompilar el modelo para realizar ajustes model.compile(optimizador='adam', pérdida='categorical_crossentropy', métricas=['exactitud']) # Afinando el modelo model.fit(new_dataset_images, new_dataset_labels, épocas=5, battamaño_ch=32)
Este ejemplo ilustra el proceso de aprendizaje por transferencia utilizando el modelo VGG16. Primero, el modelo se carga con los pesos previamente entrenados en ImageNet y las capas superiores se personalizan para el nuevo conjunto de datos. Después del entrenamiento inicial para la extracción de características, las capas se descongelan para el proceso de ajuste, lo que permite que el modelo se ajuste con mayor precisión al nuevo problema.
En resumen, el aprendizaje por transferencia y el ajuste son técnicas indispensables en el campo de la visión por computadora. Permiten a los profesionales aprovechar modelos potentes y avanzados sin la necesidad de grandes recursos computacionales y conjuntos de datos a gran escala. Con la ayuda de bibliotecas como TensorFlow y PyTorch, Transfer Learning ha democratizado el acceso a tecnologías de visión por computadora de vanguardia, haciéndolas accesibles a una amplia gama de desarrolladores e investigadores.