Table of Contents

Introducción: ¿Por qué el aprendizaje profundo para la clasificación de imágenes?

La clasificación de imágenes, la tarea de asignar una etiqueta a una imagen de un conjunto predefinido de categorías, se ha convertido en una piedra angular de la visión moderna de la computadora. Desde el diagnóstico médico a la conducción autónoma, la clasificación precisa impulsa innumerables aplicaciones reales. El aprendizaje profundo, en particular las redes neuronales convolutivas (NNC), ha mejorado dramáticamente la precisión de la clasificación, a menudo superando el rendimiento humano en conjuntos de datos de referencia.

MATLAB ha sido durante mucho tiempo un favorito entre ingenieros y científicos para la computación y prototipado numérico. La Caja de Herramientas de Aprendizaje Profundo amplía esta capacidad con capas preconstruidas, funciones de entrenamiento y aceleración de hardware sin costuras. Ya sea un estudiante que explora redes neuronales o un profesional que implemente un clasificador en tiempo real, la caja de herramientas ofrece un flujo de trabajo estructurado que cubre la preparación de datos, diseño de modelos, entrenamiento, entrenamiento, entrenamiento, entrenamiento, entrenamiento, evaluación, evaluación, evaluación, evaluación y despliegue.

Panorama general de la caja de herramientas de aprendizaje profundo

El Deep Learning Toolbox (antes la Red Neural Toolbox) ofrece un conjunto completo de funciones y aplicaciones para diseñar, entrenar y simular redes neurales profundas. Admite una amplia gama de arquitecturas, incluyendo:

  • Redes Neurales Convocionales (CNNs)] para datos de imagen y espacio.
  • Redes Neurales (RNNs)] y LSTMs para datos de secuencia y series temporales.
  • Redes de transformadores] para tareas de procesamiento y visión de lenguaje natural.
  • Redes adversarias (GAN) ] para la generación de imágenes.

El conjunto de herramientas se integra con el ecosistema más amplio de MATLAB, incluyendo el Image Processing Toolbox, Computer Vision Toolbox y Parallel Computing Toolbox, permitiendo soluciones de extremo a extremo.

  • Modelos pre-entrenados como AlexNet, VGG-16/19, GoogLeNet, ResNet, Inception y EfficientNet, que pueden utilizarse para transferir aprendizaje o extracción de características.
  • Amplificación de datos] a través del objeto , permitiendo transformaciones en el futuro como rotación, escala, traducción y reflexión para ampliar artificialmente conjuntos de entrenamiento y reducir el exceso de equipamiento.
  • Diferenciación automática] y soporte GPU utilizando Parallel Computing Toolbox y MATLAB incorporados para una formación más rápida.
  • Herramientas de visualización como y ] para inspeccionar arquitecturas de capas, mapas de activación y progreso de entrenamiento.
  • Opciones de despliegue] incluyendo la generación de códigos, la exportación a TensorFlow o ONNX, e integración directa con hardware integrado a través de MATLAB Coder.

Comprender las redes neuronales convolutivas para la clasificación de imágenes

En el núcleo de la mayoría de los sistemas de clasificación de imágenes se encuentra una CNN. Estas redes aprenden características jerárquicas: capas tempranas detectan bordes y texturas, capas medias reconocen formas y partes, y capas más profundas identifican objetos. La Caja de Herramientas de Aprendizaje Profundo de MATLAB implementa todos los tipos de capas estándar: Convolution2dLayer, Max dropbox, full

¿Por qué utilizar MATLAB para CNN Design?

Comparado con marcos como TensorFlow o PyTorch, MATLAB ofrece varias ventajas únicas:

  • Ambiente interactivo: La aplicación permite la construcción de redes de arrastrar y soltar, ideal para principiantes o prototipado rápido.
  • Debugging integrado: Se puede pasar por las iteraciones de entrenamiento e inspeccionar las activaciones en cualquier capa, simplificando el diagnóstico modelo.
  • Eficiencia de memoria: MATLAB maneja automáticamente la memoria de GPU, evitando errores comunes fuera de memoria que plagan codificación manual.
  • Limpiadores métricos: Entrenamiento automáticamente registra la precisión, pérdida y métrica de validación, que se pueden trazar en tiempo real.

Preparación de datos: La Fundación de un Clasificador Sucesivo

No importa lo sofisticado que sea el modelo, los datos deficientes conducen a un rendimiento deficiente. MATLAB proporciona varias utilidades para gestionar los conjuntos de datos de imágenes de manera eficiente.

Usando

La función es la forma estándar de cargar grandes colecciones de imágenes. Se etiquetan automáticamente imágenes basadas en nombres de carpetas, soporta dividirse en conjuntos de entrenamiento, validación y prueba, y puede leer imágenes de disco en lotes para evitar el desbordamiento de memoria.

imds = imageDatastore('path/to/images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
[imdsTrain, imdsValidation, imdsTest] = splitEachLabel(imds, 0.7, 0.15, 'randomized');

Acentración de datos con

Para mejorar la generalización, especialmente con datos limitados, puede aplicar transformaciones aleatorias durante el entrenamiento. El soporte de MATLAB es compatible:

  • Rotación aleatoria (0-360 grados)
  • Reflexiones horizontales/verticales aleatorias
  • Escalada y traducción aleatoria
  • Ajustes de la vista y el contraste

Estas transformaciones se aplican en la marcha, lo que significa que el modelo ve una imagen ligeramente diferente cada época sin almacenar múltiples copias en el disco. Esto reduce significativamente la sobreajuste y mejora la robustez.

Manejo de conjuntos de datos infrarrojos

Los conjuntos de datos del mundo real suelen tener distribuciones de clase desiguales. MATLAB ofrece capas de clasificación ponderadas () y puede calcular pesos de clase automáticamente de las frecuencias de entrenamiento establecidas. Alternativamente, puede sobresamplar clases minoritarias utilizando una tienda de datos personalizada o la propiedad de la opción de entrenamiento .

Aprendizaje de Transferencia: Aceleración del desarrollo con modelos pre-entrenados

La formación de una CNN profunda desde cero en un conjunto de datos pequeño es raramente práctica. La transferencia de aprendizaje aprovecha un modelo pre-entrenado en un conjunto de datos grande (por ejemplo, ImageNet) y lo ajusta para una nueva tarea. MATLAB hace que este proceso sea excepcionalmente sencillo.

Cargando una red pre-entrenada

Use o , , etc. Estas funciones descargan el modelo automáticamente si no ya están presentes en el disco. Las redes son devueltas como un objeto o , preservando pesos y estructura de capa.

Modificar la Red para una tarea personalizada

Las capas finales de una red pre-entrenada están diseñadas para la clasificación de ImageNet de 1000 clases. Para adaptarla a su número de clases (por ejemplo, 5), usted reemplaza la capa totalmente conectada y la capa de clasificación:

lgraph = layerGraph(net);
newLayers = [
fullyConnectedLayer(numClasses, 'Name', 'fc_new', 'WeightLearnRateFactor', 10, 'BiasLearnRateFactor', 10)
softmaxLayer('Name', 'softmax_new')
classificationLayer('Name', 'classoutput_new')
];
lgraph = replaceLayer(lgraph, 'fc1000', newLayers(1));
lgraph = replaceLayer(lgraph, 'fc1000_softmax', newLayers(2));
lgraph = replaceLayer(lgraph, 'ClassificationLayer_fc1000', newLayers(3));

Rendimiento de la tensión vs. Extracción de la alimentación

Dos estrategias comunes:

  • Extracción de la naturaleza: Congelar las capas tempranas (configurar su tasa de aprendizaje a 0) y entrenar las nuevas capas de clasificación. Útil cuando el nuevo conjunto de datos es pequeño y similar al conjunto de datos original.
  • ]Fine-tuning: Entrena todas las capas con una pequeña tasa de aprendizaje. Mejor cuando el nuevo conjunto de datos es mayor o significativamente diferente de ImageNet. MATLAB permite establecer factores de tasa de aprendizaje por capa (como se muestra anteriormente) para controlar cuánto se adapta cada capa.

Consejos prácticos para el aprendizaje de transferencia en MATLAB

  • Redimensione siempre las imágenes al tamaño de entrada esperado por la red pre-entrenada (por ejemplo, 224x224 para ResNet).Utilice para un redimensionamiento eficiente durante el entrenamiento.
  • Utilice datos de validación para monitorear para sobreajustar; si la precisión de validación se mesa temprano, reducir el número de épocas de entrenamiento.
  • Experimento con diferentes arquitecturas pre-entrenadas. Los modelos más ligeros como MobileNet son más rápidos pero menos precisos; modelos más profundos como ResNet-152 ofrecen mayor precisión a un costo computacional.

Formación del Clasificación: Opciones, hiperparametros y monitoreo

Una vez que la red se define y se preparan los datos, usted llama con la tienda de datos, el gráfico de capas y las opciones de entrenamiento.

Configuración de opciones de capacitación

La función le permite controlar prácticamente todos los aspectos del entrenamiento:

  • Solver: 'sgdm' (descenso gradiente estócástico con impulso), 'adam' o 'rmsprop'. Adán con frecuencia converge más rápido para el ajuste fino.
  • Aprendizaje InitialAprender: Típicamente 1e-4 para el ajuste fino, 1e-3 para el entrenamiento desde cero.
  • MiniBatchSize: Depende de la memoria de la GPU; los valores comunes son 32, 64 o 128.
  • MaxEpochs: Número de pases completos a través de los datos de entrenamiento. Comience con 10-20 para el ajuste fino.
  • ValidationData: Proporcionar una datastore de validación para monitorear el rendimiento de cada época.
  • ValidaciónFrecuencia: Cuantas iteraciones entre los cheques de validación.
  • Parcelas: 'entrenamiento-progreso' para ver tramas vivas de precisión y pérdida.
  • AprenderRateSchedule: Dejar la tasa de aprendizaje después de un cierto número de épocas (por ejemplo, 'con sentido de la pieza').
  • L2Regularization: Decaimiento de peso para prevenir el exceso de ajuste (por defecto 1e-4).

Supervisión de los progresos en la capacitación

La trama de entrenamiento de MATLAB muestra tanto la precisión de entrenamiento como la validación/pérdida con el tiempo. Si la exactitud de validación deja de mejorar mientras la precisión de entrenamiento continúa, el modelo está sobreajustándose—considerando la deserción, reduciendo el tamaño de la red, o utilizando un aumento más fuerte.

Detención temprana y marcación de cheques

Aunque no se incorporó directamente, puede implementar la parada temprana utilizando la propiedad de las opciones de entrenamiento. Alternativamente, utilice la opción para salvar las redes intermedias cada número fijo de épocas, asegurando que no pierda progreso.

Evaluación del rendimiento del modelo

Después de la formación, usted necesita verificar que el modelo generaliza bien para datos no vistos. MATLAB proporciona varias herramientas de evaluación.

Imágenes de prueba clasificatorias

YPred = classify(net, imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest) / numel(YTest);

Matriz de confusión y métricas de clase

Use para visualizar dónde el modelo comete errores. Para la precisión de clase, recuerde y F1-score, utilice:

confMat = confusionmat(YTest, YPred);

Luego computar métricas manualmente o utilizar la salida con la opción para obtener puntajes de predicción para el análisis ROC.

ROC y AUC

Para la clasificación binaria o escenarios de un vs-todo, puede trazar curvas características de funcionamiento del receptor (ROC) utilizando . Esto es especialmente importante en la imagen médica donde el ajuste del umbral importa.

Despliegue: Tomando el modelo a la producción

La fuerza de MATLAB se extiende más allá del prototipado, ofrece múltiples vías para desplegar modelos entrenados en aplicaciones del mundo real.

Exportación a otros marcos

  • TensorFlow/Keras: Usar para exportar a formato ONNX, luego convertir a TensorFlow.
  • PyTorch: Sendero de exportación de ONNX similar.

MATLAB Coder y GPU Coder

Genera código C/C++ de la red entrenada con MATLAB Coder. Esto es ideal para incorporar clasificadores en sistemas de escritorio o integrados sin requerir una duración de MATLAB. GPU Coder genera código CUDA para GPUs NVIDIA, permitiendo la inferencia en tiempo real en el borde.

MATLAB Compiler and Production Server

Paquete el clasificador como ejecutable independiente o una biblioteca compartida. MATLAB Production Server le permite desplegar modelos como APIs RESTful que pueden consumirse por aplicaciones web, aplicaciones móviles o software de empresa.

Despliegue a hardware embedido

Con el soporte de Deep Learning Toolbox para ARM Cortex-A y NVIDIA Jetson, puede desplegar redes optimizadas directamente a sistemas integrados. La función puede generar código optimizado para hardware que se ajuste a entornos con capacitación de recursos.

Aplicaciones y estudios de casos en el mundo real

Los ingenieros e investigadores han utilizado el cuadro de herramientas de aprendizaje profundo de MATLAB para la clasificación de imágenes en numerosos ámbitos:

  • ]Medical imaging: Clasificación de rayos X torácico para la detección de neumonía, imágenes de fondo retina para la clasificación de retinopatía diabética y diapositivas de histopatología para el diagnóstico de cáncer.
  • Conducir autonomía: Reconociendo los signos de tráfico, los peatones y las marcas de carriles utilizando redes móviles desplegadas en sistemas integrados por vehículos.
  • Agricultura: Identificar las enfermedades vegetales de las imágenes de las hojas, clasificando los frutos por maduración.
  • Manufacturing: Inspección visual para defectos en líneas de montaje, a menudo con inferencia en tiempo real utilizando el código GPU.
  • Security]: Reconocimiento facial y detección de objetos en las imágenes de vigilancia.

Para ejemplos concretos, véase ] El tutorial oficial de aprendizaje de transferencia de MATLAB y este artículo sobre el aprendizaje profundo en imágenes médicas.

Comparando el MATLAB con otros marcos de aprendizaje profundo

Aunque MATLAB no es de código abierto, su cadena de herramientas ofrece una integración sin igual para los ingenieros que ya trabajan en el ecosistema MATLAB. Para los equipos que requieren soluciones de código abierto y libre, TensorFlow o PyTorch podrían ser preferidos. Sin embargo, las ventajas de MATLAB incluyen:

  • Facilidad de uso: No es necesario gestionar entornos de pitón, conflictos de versión o infierno de dependencia.
  • Integración de simulink: Para el modelado a nivel de sistema, puede incorporar bloques de aprendizaje profundos en simulaciones más grandes.
  • Procesamiento de señales y imágenes en el mismo idioma, sin importar bibliotecas adicionales.

Para proyectos en los que la colaboración con usuarios no pertenecientes a la AMATLAB es crítica, exportar a ONNX garantiza la interoperabilidad. Más información sobre la exportación de ONNX aquí.

Pitfalls comunes y cómo evitarlos

  • Desigualdad de tamaño de entrada: Siempre verifique que la capa de entrada coincide con el tamaño de sus imágenes. Use para redimensionar.
  • Overfitting: Aumentar el aumento, añadir capas de deserción, reducir la capacidad de red o utilizar una regularización más fuerte.
  • Formación lenta: Asegurarse de que tiene una GPU compatible y que MATLAB la está utilizando (ver ). Permitir a los trabajadores paralelos si tiene múltiples GPU.
  • Errores de memoria: Reducir el tamaño de mini-barreja o utilizar arrays para conjuntos de datos fuera de memoria.
  • Ignorando el desequilibrio de clase: Siempre comprueba la distribución de etiquetas; usa pérdida ponderada o sobremuestre.

Temas avanzados: Lóminas de entrenamiento personalizado e investigación

Para los investigadores que empujan el estado de la técnica, MATLAB soporta los lazos de entrenamiento personalizados utilizando objetos y diferenciación automática. Puede implementar nuevas capas, funciones de pérdida o procedimientos de entrenamiento (por ejemplo, meta-aprendizaje, entrenamiento contradictorio).La documentación sobre los lazos de entrenamiento personalizados proporciona ejemplos.

Conclusión

La herramienta de aprendizaje profundo de MATLAB proporciona un entorno potente y fácil de usar para abordar problemas de clasificación de imágenes. Desde el aprendizaje de transferencia directa a arquitecturas personalizadas, la caja de herramientas simplifica cada paso manteniendo la flexibilidad necesaria para aplicaciones avanzadas. Su integración con el ecosistema más amplio de MATLAB, combinado con múltiples opciones de implementación, lo convierte en una excelente opción para la investigación académica y el despliegue industrial.