Vous êtes sur la page 1sur 19

UNIVERSIDAD NACIONAL DE INGENIERÍA

PRESENTACION ACTUALIZADA

“CLASIFICACION DE DIGITOS USANDO MLP Y DOS


DIFERENTES BASES DE DATOS BASES DE DATOS ”

PROFESOR:

LIMA – PERÚ

INDICE:

1. BASE DE DATOS MNIST........................................................................................................2


2. COMPARACION DE PARAMETROS.......................................................................................2
a) Solucionador: solver..............................................................................................2
b) Función de activación..........................................................................................3
c) Alpha.............................................................................................................................5
d) Numero de neuronas.............................................................................................5
3. PRUEBAS CON DATOS EXTERNOS........................................................................................7

1. BASE DE DATOS MNIST

El conjunto de datos mixto de Instituto Nacional de estándares y tecnología (MNIST) es una


colección de 70.000 pequeñas imágenes de dígitos escritos a mano. Los datos fueron creados
para actuar como un referente para los algoritmos de reconocimiento de imagen. Aunque
MNIST las imágenes son pequeñas (28 x 28 pixeles) y sólo hay 10 dígitos posibles (cero a
nueve) a reconocer y hay 60.000 imágenes de formación para la creación de un modelo de
reconocimiento de imagen (con 10.000 imágenes tendidas a probar la exactitud de un

1
modelo), la experiencia ha demostrado que reconocer las imágenes MNIST es un problema
difícil.

2. COMPARACION DE PARAMETROS

Para la clasificación usaremos lo siguiente MLPClassifier el cual para obtener una mayor
precisión se tiene que cambiar sus parámetros, las cuales se escogieron en base a ensayos de
prueba y error, luego comparando los resultados en tablas para hallar los parámetros más
óptimos.

a) Solucionador: solver
Empezamos como parámetros iniciales los mismos que se usaron en clase y con 80
neuronas como constantes iniciales para modular el Solucionador.

solver: {'lbfgs', 'sgd', 'adam'}, por defecto 'adam'

El solver para la optimización del peso.

 'lbfgs' es un optimizador en la familia de métodos cuasi-Newton.

 'sgd' se refiere al descenso de gradiente estocástico.

 'adam' se refiere a un optimizador basado en gradiente estocástico propuesto por


Kingma, Diederik y Jimmy Ba.

Nota: el solucionador por defecto 'adam' funciona bastante bien en conjuntos de


datos relativamente grandes (con miles de muestras de capacitación o más) en
términos de tiempo de capacitación y puntaje de validación. Sin embargo, para
conjuntos de datos pequeños, 'lbfgs' puede converger más rápido y funcionar mejor.

SOLUCIONADOR PRED. PRED TEST


ENTRENAMIENTO
'adam' 1 0.95
'lbfgs' 1 0.94
'sgd' 0.95 0.93
TABLA 1. COMPARACIÓN DE SOLUCIONADORES

2
Comparacion de Solver
1.02

11 1

0.98

0.96
0.95 0.95
0.94 0.94
0.93
0.92

0.9

0.88
'adam' 'l bfgs ' 's gd'

Preci s i on (tra i n) Preci s i on (test)

FIGURA 1. PRECISIÓN EN DISTINTO SOLUCIONADOR

como solucionador hay dos buenas opciones lbfgs y Adam

b) Función de activación

activación: {'identidad', 'logística', 'tanh', 'relu'}, por defecto 'relu'

Función de activación para la capa oculta.

 'Identidad', activación sin operación, útil para implementar cuellos de botella lineales,
devuelve f (x) = x

 'logistic', la función sigmoide logística, devuelve f (x) = 1 / (1 + exp (-x)).

 'tanh', la función tan hiperbólica, devuelve f (x) = tanh (x).

 'relu', la función de unidad lineal rectificada, devuelve f (x) = max (0, x)

Adam Lbfgs
ACTIVATION pred train pred test pred train pred test
identity 0.98 0.9 1 0.88
logistic 1 0.95 1 0.94
tanh 1 0.95 1 0.94
relu 1 0.95 1 0.94
TABLA 2. COMPARACIÓN DE FUNCIONES DE ACTIVACIÓN

3
Comparacion de Funcion de acti vacion(lbfgs)
1.02
1
0.98
0.96
0.94
0.92
0.9
0.88
0.86
0.84
0.82
i dentity l ogi stic ta nh rel u

pred trai n pred test

FIGURA 2. PRECISIÓN EN DISTINTA FUNCIÓN DE ACTIVACIÓN USANDO SOLVER:


LBFGS

Comparacion de Funcion de activacion(adam)


1.02

0.98

0.96

0.94

0.92

0.9

0.88

0.86

0.84
i dentity l ogi stic ta nh rel u
pred trai n pred test

FIGURA 3. PRECISIÓN EN DISTINTA FUNCIÓN DE ACTIVACIÓN USANDO SOLVER:


ADAM

FIGURA 2. Precisión en distinta función de activación usando lbfgs


c) Alpha

alpha: float, opcional, por defecto 0.0001

Parámetro de penalización (término de regularización).

TABLA3. PRECISIÓN USANDO DISTINTO ALPHA

alpha pred train pred test


0.00001 1 0.95
0.0001 1 0.95
0.001 1 0.95
0.01 1 0.95
0.1 1 0.95
1 0.95 0.93
10 0.89 0.93
100 0.25 0.25
1000 0.11 0.11

Comparacion de alpha
1.2

0.8

0.6

0.4

0.2

0
0 0 0 0.01 0.1 1 10 100 1000
tra i n test

FIGURA 4. COMPARACION DE PRECISIÓN USANDO VALORES DISTINTOS PARA


ALPHA

d) Numero de neuronas

hidden_layer_sizes: tuple, length = n_layers - 2, default (100,)

El elemento representa el número de neuronas en la capa


oculta.

5
De los cuales se escogió los siguientes parámetros:

TABLA 4. PRECISIÓN VARIANDO EL NÚMERO DE NEURONAS

M Precisión Precisión
Train Test
10 0.99 0. 9
15 1 0.91
20 1 0.92
25 1 0.93
30 1 0.93
35 1 0.93
40 1 0.94
45 1 0.94
50 1 0.94
55 1 0.95
60 1 0.95
65 1 0.95
70 1 0.94
75 1 0.95
80 1 0.95
85 1 0.95
90 1 0.95
100 1 0.95
150 1 0.95
200 1 0.96

Comparacion de Numeros de Neurona


1.2

0.8

0.6

0.4

0.2

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Preci s i on tra i n Preci s i on test

FIGURA 5. FINALIZANDO LA SELECCIÓN DE PARÁMETROS.


7
3. PRUEBAS CON DATOS EXTERNOS.

FIGURA 6. PARAMETROS ELEGIDOS.

FIGURA 7. RESULTADOS OBTENIDOS.

8
Data de entrada 2:

Tenemos una serie de números relacionados a las placas de automóviles otorgadas por el
profesor del curso.

FIGURA 8. ALGUNOS DATOS NÚMEROS DE PLACAS DE AUTOMOVILES

OPENCV Y PYTHON:

OpenCV (Open Source Computer


Vision Library)
Tiene interfaces C ++, Python y Java y es
compatible con Windows, Linux, Mac OS,
iOS y Android.

Contiene más de 500 funciones que


abarcan una gran gama de áreas en el
proceso de visión, como reconocimiento
de objetos (reconocimiento facial),
calibración de cámaras, visión estérea y
visión robótica.

FIGURA 7. PYTHON Y OPENCV

PROCEDIMIENTO:

En el procesamiento de imágenes existen varios métodos para llegar a la Binarizacion, se debe


tomar en cuenta en el ambiente que se desarrolla para así establecer correctamente los
umbrales. Los pasos más generales son: captura de imagen, escala de grises, umbral de brillo,
Binarizacion, erosión y dilación.

9
FIGURA 8. Aplicación de opencv

FIGURA 9. BINARIZACION

1. CAPTURA DE VIDEO: dentro de la librería de Opencv se pueden leer diversos


formatos de imágenes adicionalmente se puede hacer procesamiento con video,
los números o dígitos capturados por una cámara se deben leer con el comando:

2. ESCALA DE GRISES: En muchos casos, el color de la imagen no aporta mucha


información relevante para interactuar por esta situación se descarta la
información de color de la imagen transformándola en una imagen de tonos grises.
Con la transformación a esta escala se puede ahorrar mucha información y los
procesos con la imagen serán más fáciles de realizar.

10
FIGURA 10. Escala de grises

3. THRESHOLDING (BINARIZACIÓN): En las imágenes si el valor del píxel es mayor


que un valor umbral, se le asigna un valor (puede ser blanco), de lo contrario se le
asigna otro valor (puede ser negro). La imagen de origen debe ser una imagen en
escala de grises. El umbral que se utiliza para clasificar los valores de píxel debe ser
el adecuado debido a que se podría perder información en las regiones de
intereses o al contrario generar ruido. En esta función se le debe asignar un valor al
píxel ya que representa el valor que se dará si el valor del píxel es más que (a veces
menor) el valor del umbral.

FIGURA 11. THRESHOLDING


4. EROSIÓN Y DILACIÓN: Las transformaciones morfológicas son algunas operaciones
simples basadas en la forma de la imagen. Normalmente se realiza en imágenes
binarias. Necesita dos entradas, una es nuestra imagen original, la segunda se
llama elemento estructurador o kernel que decide la naturaleza de la operación.
Apertura es solo otro nombre de erosión seguido de dilatación. Es útil para
eliminar el ruido. Aquí usamos la función, cv2.morphologyEx ()

FIGURA 12. EROSION Y DILACION

11
4. DESARROLLO DEL CÓDIGO:

Captura: Para la captura se usó una cámara del celular, se usó la aplicación IPWebCam. Se debe
poner la dirección de la red para la conexión de la cámara y la PC.

IPWEBCAM: la laptop por medio de wifi podemos obtener el video en tiempo real de la
cámara y mediante su IP y código en Python nos permite llamar dicho video para la captura
de la misma en tiempo real.

FIGURA 13. IP WEBCAM

12
5. Pruebas en tiempo real:

Se ejecuta el siguiente código y se procede

FIGURA 14. CÓDIGO PARA PROCESAR IMAGEN

13
Resultados con base de datos MNIST

14
15
Resultados con segunda base de datos.

FIGURA 15. RESULTADO DE PRUEBA EN TIEMPO REAL

16
17
18