Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Learning
Onramp
C O U R S E
M A T L A B
MÓDULO 1:
USO DE REDES
PREVIAMENTE ORDENADAS
IDENTIFICAR CONTENIDO:
IMÀGENES
dos funciones para importar y poder
mostrar imágenes almacenadas en un
archivo.
En esta sección del curso se aprenderá a Este archivo puede ser de cualquier
utilizar una red neuronal profunda formato.
prediseñada para clasificar el contenido
ESTA ES LA PRIMERA SECCIÓN QUE
de las siguientes 12 imágenes. VEREMOS EN ESTE MÓDULO.
Usamos la función imread para importar
imágenes almacenadas en un archivo.
Como en el ejemplo que observamos:
código:
PREDICCIONES
En esta sección usaremos la función
classify para realizar predicciones.
Para esto tendremos que tener una copia
de la red profunda predifinida.
Podemos utilizar la
función googlenet para
crear una copia de la red
profunda predefinida
“GoogLeNet”.
DE UNA CNN
En esta actividad, se examinará las
propiedades de estas capas para
determinar qué forma de imagen
GoogLeNet toma como entrada y qué
Al igual que otras CNN, GoogLeNet se clases devuelve como salida.
representa en MATLAB como un arreglo
de capas. De especial interés son el
primer y el último elemento de este
arreglo, que representan las capas de ESTA ES LA TERCERA SECCIÓN QUE
entrada y salida, respectivamente. VEREMOS EN ESTE MÓDULO.
Se puede inspeccionar las
capas de la red haciendo
referencia a la propiedad Layers
de la variable, utilizando la
indexación.
código:
código:
Una propiedad importante para una capa de
entrada es InputSize, que es el tamaño
(dimensiones) de las imágenes que la red
espera como entrada.
código:
PREDDICCIONES
ayudarán a poder investigar las
predicciones.
También podremos representarlo con la
función bar, aunque esta pueda
Cuando se pasa la entrada por la red, se
presentar problemas para observarlas
obtiene el cálculo de un valor numérico
para cada una de las neuronas. Estos correctamente.
valores numéricos representan la
predicción de probabilidad de que la ESTA ES LA CUARTA SECCIÓN QUE
entrada pertenezca a cada clase. VEREMOS EN ESTE MÓDULO.
código:
código:
código:
código:
%indexaremos los nombres de clases en
categorynames
%con la función xticklabels,
etiquetaremos el gráfico con los nombres
SIGUE PRACTICANDO
IMAGENES
Proporciona una estructura organizada para
almacenar, acceder y manipular conjuntos
de imágenes, junto con metadatos y otros
elementos relacionados
Incluyen metadatos asociados, como
información de origen, resolución,
dimensiones y otros detalles relevantes para
cada imagen. Esto facilita la gestión y
manipulación de conjuntos de imágenes en
una aplicación o proyecto.
%Usamos la función 'read' para importar
datos del almacén letterds en una tabla
% se permitirán
Se nos brinda un codigo que importa
obtener los
código:
datos de un almacen especifico.
nombres de
código:
archivo de todas
las imágenes en
Nos piden importar datos del primer
el almacén de
archivo del almacén letterds sabiendo
datos de
que si se usa por primera vez la función
imágenes
'read' se importara el 1° archivo, y si se usa
utilizando la
por segunda vez, el 2° y asi
sucesivamente.
propiedad Files
del objeto
ImageDatastore.
Se nos pide graficar los datos de la
variable 'x' y la variable 'y' de la tabla 'data'
código:
%Ahora usamos el comando 'plot' para graficar
Se nos pide importar los datos del datos de 'x' y 'y'.
segundo archivo de letterds y graficar
variable 'x' y 'y'. código:
Recordemos que si usamos 'read' por
segunda vez importaremos el 2° archivo.
código:
código:
código:
PREPARACIÓN DE
IMÁGENES PARA
UTILIZARLAS COMO
ENTRADA
Esto facilita el desarrollo de algoritmos,
análisis y procesamientos de imágenes
más efectivos y precisos en MATLAB.
código:
sz = size(img)
%se usa transforms que para crear un
almacén que contiene los
Importamos GoogLeNet. Extraiga la datos de la
propiedad InputSize de la primera capa %funcion scale en letters
de la red. Almacenamos el resultado en
una variable denominada insz.
código:
net = googlenet;
inlayer = net.Layers(1)
insz = inlayer.InputSize
%se redimensiona la imagen img a una
nueva dimensión de 224x224
píxeles utilizando la función imresize.
Nos piden utilizar la función imresize para
% imshow(img) muestra la imagen
redimensionar la imagen almacenada en
redimensionada en una figura.
la variable img con el tamaño 224 por 224.
Almacene el resultado nuevamente en la
variable img.
Después, mostramos la imagen
redimensionada con imshow.
código:
classify(img)
ENTRENAMIENTO
escalable en un conjunto de imágenes
relacionadas, facilitando el desarrollo de
aplicaciones de procesamiento de
imágenes más avanzadas y completas.
Redimensionar imágenes en un almacén de datos
Código:
Creamos un almacén de imds = imageDatastore("file*.jpg")
e
código:
montage(imds)
Utilizamos la función
montage para mostrar % se crea una
las imágenes del representación
visual de una
almacén de datos imds.
cuadrícula que
muestra varias
imágenes del
objeto
imageDatastore
imds
% se crea un objeto augmentedImageDatastore
que toma el objeto
imageDatastore imds y aplica una transformación
de redimensionamiento
a todas las imágenes en el tamaño especi
Creamos un almacén de datos de
ficado [224 224].
imágenes aumentadas a partir del
% se especifica que el preprocesamiento de color
almacén de datos de imágenes imds.
se realizará
Preprocese las imágenes para que su
convirtiendo las imágenes en escala de grises a
tamaño sea de 224 por 224 por 3.
imágenes RGB.
código:
auds = augmentedImageDatastore([224
224],imds,"ColorPreprocessing","gray2rgb")
Preprocesar un color con un almacén de datos
código:
preds = classify(net,auds)
Clasificamos las preds = classify(net,auds)
imágenes de auds % se realiza la clasificación de
mediante la función las imágenes en el objeto
classify. GoogLeNet se augmentedImageDatastore
auds utilizando una red
almacena en la variable
neuronal net
net. Almacene las preentrenada.
predicciones en una % se devuelve las predicciones
variable preds. de clase para cada imagen en
forma de un arreglo o matriz
de etiquetas.
CREAR UN ALMACÉN DE
DATOS MEDIANTE
Permite acceder a las imágenes de
manera conveniente y realizar
SUBCARPETAS
operaciones de procesamiento y análisis
en conjunto utilizando las funciones y
herramientas de MATLAB
Código:
flwrds =
imageDatastore("Flowers","IncludeSubfolders",t
rue)
% se realiza la clasificación
Creamos un almacén de
de las imágenes en el objeto
datos flwrds para todas las augmentedImageDatastore
imágenes de las subcarpetas auds utilizando una red
de la carpeta "Flowers". neuronal net
preentrenada.
% se devuelve las
predicciones de clase para
cada imagen en
forma de un arreglo o matriz
de etiquetas
código:
resizeds = augmentedImageDatastore([224 224],flwrds)
Creamos un almacén de datos de % se crea un objeto
imágenes aumentadas a partir de
augmentedImageDatastor
flwrds que redimensione las e que toma el objeto
imágenes a 224 por 224. imageDatastore flwrds
Asignamos al nuevo almacén de % se aplica una
datos el nombre resizeds. transformación de
redimensionamiento a
todas las
imágenes en el tamaño
especificado [224 224]
código: preds = classify(net,resizeds)
Utilice GoogLeNet (cargada como % se realiza la clasificación
la variable net) para clasificar el de las imágenes en el objeto
contenido de todas las imágenes augmentedImageDatastore
del conjunto de datos. Almacene resizeds utilizando una red
los resultados en una variable neuronal net
preentrenada.
denominada preds.
% se devuelve las
predicciones de clase para
Tenga en cuenta que la función
cada imagen en
classify pasará 15 imágenes por forma de un arreglo o matriz
GoogLeNet. Puede tardar varios de etiquetas.
segundos en ejecutarse.
SIGUE PRACTICANDO
CÓDIGO: montage(flwrds)
%se visualiza el
conjunto de datos
MÓDULO 3:
REALIZACIÓN DE TRANSFERENCIA DEL
APRENDIZAJE
PROCESAMIENTO DE Al entrenar una red, se deben
proporcionar etiquetas conocidas para
IMÁGENES EN UN las imágenes de entrenamiento. La
ALMACÉN DE DATOS
carpeta Flowers contiene 5 subcarpetas;
cada una contiene más de 500 imágenes
de un tipo de flor. Por lo tanto, se puede
utilizar el nombre de la carpeta para
proporcionar las etiquetas necesarias
para el entrenamiento.
Etiquetar imágenes de entrenamiento
Código:
flwrds =
imageDatastore(pathToImages,"IncludeSubfolders"
,true,"LabelSource","foldernames")
e","foldernames")
PARA
proporcionadas. pero incluso si la red
clasifica correctamente todos los datos
de entrenamiento ¿ a aprendido algo
ENTRENAMIENTO ealmente?
En esta sesión se usará la función
Y PRUEBAS
splitEachLabel para dividir las imágenes
de la carpeta Flowers en dos almacenes
de datos, uno para entrenamiento y otro
para pruebas.
Código: [flwrTrain,flwrTest] =
splitEachLabel(flwrds,0.6)
%obtenemos las
categorías únicas
presentes en el arreglo
flowernames. Luego
usamos splitEachLabel
para realizar la división
y estos conjuntos se
almacenan en la matriz
datasets .
MODIFICACIÓN
Modificar las capas de una red
previamente entrenada permite
adaptarla a nuevos problemas, realizar
DE LA RED
de la red y optimizar su rendimiento en
tareas específicas, también permite
ajustar la arquitectura de la red para
adaptarla a las necesidades específicas
del nuevo problema o conjunto de
datos.
En la página de inicio,
abra GoogLeNet.
Después, haga zoom
para ampliar las capas
finales de la
arquitectura para ver las
capas que se
modificarán en las
próximas tareas.
Añada una
fullyConnectedLayer
nueva (Convolution
and Fully Connected).
En el panel Properties,
establezca OutputSize
en 5 (para los 5 tipos
de flores).
Reemplace la última
capa totalmente
conectada de la red
por la nueva capa
recién creada. La capa
que debe reemplazar
se denomina
"loss3-classifier".
Cree una
classificationLayer
nueva (Output).
Reemplace la capa de
clasificación existente
por la capa nueva.
SIGUE PRACTICANDO
ESTABLECER CONTENIDO:
ENTRENAMIENTO
determinado algoritmo que presenta
ajustes opcionales como nombre-valor.
código:
código:
código:
ENTRENAMIENTO
CONTENIDO:
DE LA RED
transferencia de aprendizaje para
obtener una red entrenada de forma
especifica
código:
EVALUACIÓN
DEL
CONTENIDO:
RENDIMIENTO
partes usaremos la variable 'info' y la
función 'classify'.
Además analizaremos el rendimiento de
las predicciones elaboradas.
código:
Se nos pide graficar la pérdida de
entrenamiento almacenada en el campo
'TrainingLoss' de 'info'.
Recordemos que 'info' es una estructura
que contiene información sobre el
entrenamiento.
código:
Nos piden utilizar la función 'classify' para
obtener las clasificaciones de 'flowernet'
de los datos 'resizeTestImgs'.
código:
INVESTIGAR EL RENDIMIENTO DE LA PRUEBA
código:
Se nos pide extraer la propiedad 'Labels'
del almacén de datos 'testImgs'
código:
código:
INTEGRANTES: