Está en la página 1de 8

DEPARTAMENTO DE CIENCIAS DE LA

COMPUTACIÓN

CARRERA DE INGENIERÍA EN SISTEMAS

Inteligencia Artificial II

“REDES NEURONALES CON


DEEP LEARNING”

Elaborado por:

Pichucho Galo

DOCENTE: Ing. Carlos Montenegro

NRC: 2824

Sangolquí - 2019
OBJETIVO DE APRENDIZAJE
Aplicación de Redes de Neuronas de Aprendizaje Profundo (Deep Learning).

DESARROLLO
Antes que nada, se necesita instalar algunas herramientas necesarias de Deep Learning
para reconocimiento de objetos, de acuerdo a las sugerencias del Profesor.
Las herramientas se pueden instalar desde el Matlab, haciendo click en Add-Ons que se
encuentra en el apartado de environment dentro de la pestaña Home.
Deep Learning Toolbox

Alexnet

Webcam
Una vez instalado todas las herramientas, iniciamos Matlab.
Se ejecuta el siguiente código dentro de la línea de comando de Matlab o en un scrip.m

%% Cargue una red pre-entrenada, profunda y convolucional


alex = alexnet;
layers = alex.Layers
%% Modifique la red para usar cinco categorías.
layers(23) = fullyConnectedLayer(5);
layers(25) = classificationLayer

Este segmento de código hará que se cargue una red pre entrenada y se modifica la red
con las categorías que vamos a tener, en este caso es 5, ya que dentro de nuestra base de
datos tendremos 5 objetos.
Nuestra base de datos tiene 5 objetos diferentes , donde dentro de cada objeto se tiene 22
fotos del objeto respectivo, estos datos se deberán guardarse en la siguiente dirección:
C:\Program Files\MATLAB\R2017b\toolbox\nnet\nndemos\nndatasets.
Centro del directorio se crea la carpeta de los objetos, e este caso se llama ProyectoIAII,
y dentro de estos se encuentras las fotos de los objetos.
Cargar y explorar datos de imagen

digitDatasetPath = fullfile (matlabroot, 'toolbox' , 'nnet' , 'nndemos' , ...

'nndatasets' , 'ProyectoIAII' );

imds = imageDatastore (digitDatasetPath, ...

'IncludeSubfolders' , true, 'LabelSource' , 'foldernames' );

Lo que está en negrita, significa el nombre de la carpeta donde se encuentra los datos
Mostrar algunas de las imágenes en el almacén de datos.
Con el siguiente comando se puede ver fotos de la base de datos:
figure;

perm = randperm(109,20);

for i = 1:20

subplot(4,5,i);

imshow(imds.Files{perm(i)});

end

Calcule el número de imágenes en cada categoría. labelCountes una tabla que contiene
las etiquetas y el número de imágenes que tienen cada etiqueta:
“labelCount = countEachLabel(imds)”

Especificar conjuntos de entrenamiento y validación


Se divide los datos en conjuntos de datos de capacitación y validación, de modo que cada
categoría del conjunto de capacitación contenga 20 imágenes, y el conjunto de validación
contenga las imágenes restantes de cada etiqueta. splitEachLabeldivide el almacén de
datos digitDataen dos nuevos almacenes de datos trainDigitDatay valDigitData.
Ejecutamos lo siguiente:

numTrainFiles = 20;
[imdsTrain, imdsValidation] = splitEachLabel (imds, numTrainFiles,
'randomize' );
Reentrenamiento de la red

>> opts = trainingOptions('sgdm', 'InitialLearnRate', 0.001, 'MaxEpochs', 20, 'MiniBatchSize',


64);

myNet = trainNetwork(imdsTrain, layers, opts);

Medir la precision de la red

predictedLabels = classify(myNet, imdsValidation);

>> accuracy = mean(predictedLabels == imdsValidation.Labels)

Ejemplo usando AlexNEt


Para poder ejecutar la cámara y poder tomar la foto para el reconocimiento de objetos se
utiliza lo siguiente>

>>camera = webcam; // enciende la camara

>>preview(camera); // Muestra la cámara

>> im = snapshot(camera); // Captura la foto

>> imshow(im)

>> I=imresize(im,[227,227]); //redimensiona la foto


En el siguiente código nos muestra ya el nombre que reconoció el objeto

label = classify(myNet, I);

image(I);

title(char(label));

CONCLUSIONES
RECOMENDACIONES
REFERENCIAS

También podría gustarte