NEURONALES
CLASIFICACIÓN DE 3 FRUTOS
MANZANAS, MANDARINAS Y GRANADILLAS
Profesor:
*ACUÑA CONDORI, Kevin
Integrantes:
*GONZALES CÁCERES, JORGE
*CEVALLOS RAMIREZ, EDGAR ANDRES 1521165
* RUMICHE SALINAS, LEONARDO 1421436
OBJETIVO
El objetivo de este proyecto es el de poder clasificar distintos frutos a
través del rasgo o síntesis de sus intensidades de colores, divididas en 3
capas de 8 bits R G B.
Estas capas serán mostradas en un histograma, para poder apreciar las
curvas de nivel para cada fruto seleccionado. Sin embargo lo que
necesitamos es obtener los valores de las intensidades en cada nivel de
capa de color R, G y B, para cada muestra (225 muestras en total).
Entonces tendremos 768 características por muestra.
Nuestra matriz de entrada será de 225x768.
Y debido a que tenemos 3 frutos distintos, nuestra matriz de salida será de
768x3.
BASE DE DATOS
La adquisición de la base de datos fue seleccionado diferentes muestras
desde diferentes puntos de vista, modificando la posición ángulo de estas.
Se aplicó un código para poder obtener los valores en una matriz de
225x768 para la base de datos.
Está guardado en un archivo dentro de la carpeta RDN – FRUTOS, llamado
V.mat.
MUESTRAS
Se mostrarán las capturas de las muestras de ejemplo, al igual
que su histograma.
El código obtendrá los histogramas de las capas RGB de la
muestra seleccionada. Esta sección del script es solo para una
muestra en específico.
Por lo tanto, si queremos realizar el mismo proceso para todas
las muestras, se aplicará el bucle “for” para las 225 muestras en
total.
Fruto 1
Manzana
Fruto 2
Mandarina
Fruto 3
Granadilla
ENTRENAMIENTO
Para poder entrenar nuestra red neuronal debemos tener nuestra base de
datos o matriz de entrada, y también nuestra matriz de salida. Nuestra
“Y_deseada” (Nombre del script para la matriz de salida) tendrá que
mostrar las 3 clases de muestras que tenemos en nuestra carpeta.
Una vez tengamos ambas matrices, podremos entrenar nuestra red
neuronal para clasificar nuestros 3 frutos propuestos para este problema.
Nprtool
Podremos observar que el entrenamiento se ha realizado sin problema
alguno. Sin embargo no quiere decir que sea “perfecto”.
Es un reto cuando se pone a prueba nuestra red neuronal entrenada,
frente a nuevas muestras. Por ejemplo, esta red ha sido diseñada para
diferenciar entre 3 tipos de frutas. Pero que sucedería si colocamos una
zanahoria como una muestra puesta a prueba, frente a nuestra red
entrenada?
Histograma
%% obtencion del histograma en sus 3 canales de UNA imagen
q=imread('FRUTO(222).jpg');
%imshow(q)
%size(q)
subplot(2,2,1)
imshow(q)
xlabel('Imagen a color')
grid on
subplot(2,2,2)
imhist(q(:,:,1))
xlabel('canal rojo')
grid on
subplot(2,2,3)
imhist(q(:,:,2))
xlabel('canal verde')
grid on
subplot(2,2,4)
imhist(q(:,:,3))
xlabel('canal azul')
grid on
%canal verde
i2= q(:,:,2);
[counts2,x2] = imhist(i2);
x2(1:256);
counts2(1:256);
%canal azul
i3= q(:,:,3);
[counts3,x3] = imhist(i3);
x3(1:256);
counts3(1:256);
% CAPA ROJA
i1= q(:,:,1); %se toma el canal rojo
[counts1,x1] = imhist(i1); %extraemos el histograma en forma de
vector
x1(1:256); %rango de cada variable del vector
counts1(1:256);
% CAPA VERDE
i2= q(:,:,2);
[counts2,x2] = imhist(i2);
x2(1:256);
counts2(1:256);
% CAPA AZÚL
i3= q(:,:,3);
[counts3,x3] = imhist(i3);
x3(1:256);
counts3(1:256);
%vector de cada histograma,OJO que cada variable resultara
%vector de 256 filas con 1 columna
m1=counts1(1:256); % CAPA ROJA
m2=counts2(1:256); %CAPA VERDE
m3=counts3(1:256); %CAPA AZÚL
%union de los 3 vectores en la variable M
%al juntar los 3 vectores resultara uno de 768x1
M=[m1; m2; m3]' %la matriz M sera de una 768x1 y con la
traspuesta
% sera de un vector de 1 x768
V=[V ; M]; %matriz en donde se acumula los vectores de cada
muestra o imagen
%de x (numero de muestras) filas y 768 columnas
end
Y Deseada
%% CODIGO PARA CREAR LA MATRIZ DE SALIDA DESEADA PARA
% CLASIFICACIÓN DE FRUTOS (MANZANA, GRANADILLA, MANDARINA)
% MANZANAS
MV=zeros(75,1);
MANZANA=[ones(75,1), MV, MV];
% GRANADILLA
GV=zeros(75,1);
GRANADILLA=[GV, ones(75,1), GV];
%MANDARINAS (VERDES)
MDV=zeros(75,1);
MANDARINA=[MDV, MDV, ones(75,1)];
x = V';
t = Y_deseada';
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotconfusion(t,y)
%figure, plotroc(t,y)
%figure, ploterrhist(e)
Prueba
%%PALTAS DE CLASIFICACIÓN ALEATORIA
% INGRESAN AL MÓDULO DE CÁPTURA PARA SER EVALUADAS
%CAPA ROJA
i1= Icel(:,:,1);
[counts1,x1] = imhist(i1);
x1(1:256);
counts1(1:256);
%CAPA VERDE
i2= Icel(:,:,2);
[counts2,x2] = imhist(i2);
x2(1:256);
counts2(1:256);
%CAPA AZÚL
i3= Icel(:,:,3);
[counts3,x3] = imhist(i3);
x3(1:256);
counts3(1:256);
a= [0 0 1];
b= [0 1 0];
c= [1 0 0];
if res == a
display('GRANDILLA')
else if res == b
display('MANDARINA')
else if res == c
display('MANZANA')
else
display('MODIFICAR MUESTRA')
end
end
end
Bibliografía y Web grafía
Woo Chaw Seng y Seyed Hadi Mirisaee. A new method for fruits recognition
system. Electrical Engineering and Informatics, 2009. ICEEI '09. International
Conference on.
Christian Montoya Holguin, Jimmi Alexander Cortés Osorio y José Andrés
Chaves Osorio. Sistema basado en visión por computador. Ingeniare. Rev.
chil, ing. vol.22 no.4 Arica oct. 2014
Crear .exe en Matlab:
http://colab-matlab.blogspot.com.es/2012/05/como-realizar-un-
ejecutable-de-un-guide.html.