PF03 WWWW
PF03 WWWW
1. ALGORITMOS PRINCIPAL:
● CNN (convolutional neural network): un subconjunto
del aprendizaje automático . Es uno de los varios
tipos de redes neuronales artificiales que se utilizan
1
1
para diferentes aplicaciones y tipos de datos. Una utiliza para describir cuán nítida (como antónimo de
CNN es un tipo de arquitectura de red para granular) es una imagen de fotografía.
algoritmos de aprendizaje profundo y se usa
específicamente para el reconocimiento de imágenes
y tareas que involucran el procesamiento de datos de ● Compresión sin pérdida y compresión con pérdida:
píxeles . Existen otros tipos de redes neuronales en el cuando queremos reducir el tamaño de un archivo
aprendizaje profundo, pero para identificar y (que puede ser una imagen), pero no queremos
reconocer objetos, las CNN son la arquitectura de red comprometer la calidad, este tipo de compresión se
preferida. Esto los hace muy adecuados para tareas de denomina compresión sin pérdida. El archivo
visión artificial ( CV ) y para aplicaciones en las que comprimido se puede guardar, pero cuando lo
el reconocimiento de objetos es vital, como los requerimos, durante el proceso de descompresión, se
vehículos autónomos y el reconocimiento facial . restaura toda la información y obtenemos la imagen
real (Figura 2-6). Este primer tipo de compresión da
prioridad a la información contenida en el archivo,
2. TERMINOLOGIA: especialmente cuando se comprime texto, donde no
● Machine learning: El aprendizaje de máquina (MA) podemos permitirnos perder ni un solo dato.
es un campo de investigación dedicado a comprender ○
y crear métodos que "aprendan", es decir, métodos 3. HERRAMIENTAS Y LIBRERÍAS
que aprovechan los datos para mejorar el rendimiento
en algún conjunto de tareas.Se considera parte de la
inteligencia artificial. Los algoritmos de aprendizaje ● OpenCv: es una biblioteca libre de visión artificial
automático construyen un modelo basado en datos de originalmente desarrollada por Intel. OpenCV
muestra, conocidos como datos de entrenamiento, significa Open Computer Vision. Su funciones
para hacer predicciones o tomar decisiones sin estar principales es detección de movimiento,
programados explícitamente para hacerlo. reconocimiento de objetos, reconstrucción 3D a partir
de imágenes, son sólo algunos ejemplos de
aplicaciones de OpenCV.
● Red neuronal: Las redes neuronales artificiales
(ANN), generalmente llamadas simplemente redes
neuronales (NN) o redes neuronales, son sistemas ● Tensorflow: es una biblioteca de código abierto para
informáticos inspirados en las redes neuronales aprendizaje automático a través de un rango de
biológicas que constituyen los cerebros de los tareas, y desarrollado por Google para satisfacer sus
animales. Una ANN se basa en una colección de necesidades de sistemas capaces de construir y
unidades o nodos conectados llamados neuronas entrenar redes neuronales para detectar y descifrar
artificiales patrones y correlaciones, análogos al aprendizaje y
razonamiento usados por los humanos.
2
conduce a una función de activación, que actúa como un
● Matplotlib: Es una biblioteca para la generación de cerebro y toma una decisión.
gráficos en dos dimensiones, a partir de datos
contenidos en listas o arrays en el lenguaje de Ahora que sabemos estos conceptos podemos definir el
programación Python. Proporciona una API, pylab, modelo sobre el cual basaremos nuestro proyecto se decidió
diseñada para recordar a la de MATLAB. que se utilizara CNN Las CNN se utilizan para problemas de
procesamiento y clasificación de imágenes. Con las CNN, hay
● pillow: Pillow es una biblioteca adicional gratuita y algunas capas adicionales, aparte de las neuronas normales.
de código abierto para el lenguaje de programación capas de red sabemos que una red neuronal ANN cada uno de
Python que agrega soporte para abrir, manipular y los nodos está conectado a todos y cada uno de los nodos de la
guardar muchos formatos de archivo de imagen capa siguiente. Esto puede convertirse requiere mucho tiempo
diferentes. y también conduce al problema del sobreajuste*. Las CNN
son utilizadas para corregir este problema. Con las CNN, no
● kaggle: es una comunidad en línea de científicos de tenemos una conexión con cada y cada nodo. Con las CNN,
datos y profesionales del aprendizaje automático. aplicamos filtrado selectivo. El trabajo de las CNN comienza
Kaggle permite a los usuarios encontrar y publicar con la convolución capa, donde aplicamos un filtro (también
conjuntos de datos, explorar y crear modelos en un conocido como kernel) a la entrada imagen. Este núcleo
entorno de ciencia de datos basado en la web; trabajar avanza a grandes zancadas sobre la imagen, bloque por
con otros científicos de datos e ingenieros de bloque, donde cada bloque es una colección de celdas de
aprendizaje automático y participar en concursos para píxeles. Durante este proceso, realizamos multiplicación de
resolver desafíos de ciencia de datos. matrices, lo que da como resultado una imagen de menor
resolución. En la capa de submuestreo (también llamada capa
● LabelImg: Librería de python utilizada para etiquetar de submuestreo) encontramos el valor de píxel promedio
imágenes de prueba, la misma genera archivos .xml (llamado agrupación promedio) o el píxel máximo valor
para cáda imágen por medio de cajas estipuladas por (llamado agrupación máxima) y obtener una imagen de
el usuario. resolución aún más baja.Por último, la salida se conecta a la
capa completamente conectada, donde cada salida máxima de
agrupación está conectada a cada nodo en el totalmente
conectado capa. Después de esto, se sigue una arquitectura de
V. METODOLOGÍA DE LA INVESTIGACIÓN red neuronal.
3
Luego remodelamos con la funcionalidad de numpy porque
actualmente los datos están en un formato de matriz sin
estructura adecuada. Usando remodelar, damos los datos
estructura. Hacemos esto diciéndole a Python que convierta la
matriz de tal manera que tenga todos los valores de píxel en
solo una columna Actualmente, el tipo de datos de x_train y
x_test es Int (entero). Queremos convertirlo en Flotante, para
que podamos aplicar el preprocesamiento sobre él fácilmente.
Ahora tenemos que hacer la normalización. Dividimos cada
uno y cada píxel con el valor de intensidad de píxel más alto
de todo el conjunto, por lo que los datos dan como resultado
un rango inferior de cero a uno. Esto ayuda a entrenar el
modelo de manera eficiente.
También se coloca los códigos qr sobrepuestos en zonas de
x_train /= 255 x_test /= 255 pruebas como estas fotos de la ciudad de scotland, estas
imágenes serían nuestros sujetos de pruebas a realizar para el
Ahora que nos hemos ocupado de los independientes modelo. donde el programa detectará todos los códigos QR en
variables, tenemos que cuidar de las variables, qué son las la imagen. más a futuro se aplicará en una cámara para
etiquetas numéricas reales. Al hacer esto, convertimos los aplicarse en la vida real con diferentes códigos QR impresos y
valores, que están actualmente en formato entero, a valores colocados en ciertos lugares donde la cámara tenga alcance.
categóricos. Por último, devolvemos todos los datos
procesados a nuestro código original. Mientras la métricas de evaluación que se aplica al proyecto,
se conoce como average precision, utilizada para modelos de
return (x_train,x_test,y_train,y_test,input_shape) clasificación. como métrica ya que nos funciona para
determinar el porcentaje de precisión para que la cámara sea
el datasets que se empleados como datos de entrenamiento son capaz de detectar los códigos qr, es una métrica hecha para
sacados de la página web conocido como kaggle conocido determinar la cantidad de predicciones que nuestro modelo
code QR, ese Dataset es para el entrenamiento y prueba, ese acertó. Esto sirve para diferenciar e igualar nuestras
dataset solo tiene la imagen de los QR, son más 10000 predicciones con la realidad.
archivos, podemos utilizarlos para generar imágenes con
varios de estos, dar etiquetas a las nuevas imágenes con
cuántos códigos existen en X imágen y con ello podemos
testear la veracidad de el modelo, ya que tendríamos un dato
que nos exponga si el modelo está correcto o no?, pero por
ahora solo limitaremos a una cierta cantidad como 1000
archivos posibles, para no afectar el rendimiento e impedir
una sobrecarga del modelo aplicado.
donde ‘‘TP’’ representa el true positive de los preliclectos
correctos del modelo, también está “FP” false positive
significa el número de predilectos correctos pero presenta un
error. pero también existen la versión contraria pero en base
con el negativo como false negative ‘’ FN’’ y true negative
‘’TN’’. Tras aplicar la sumatoria de los cuatro valores luego
divididos por los otros dos valores se calcula el puntaje de
predicción aplicada en el modelo.
4
no solo eso también estos predilectos también puede calcular
la recall es la métrica de exhaustividad nos va a informar sobre
la cantidad que el modelo de machine learning es capaz de
identificar.
a. OBTENCIÓN DE IMÁGENES
En cuanto a los sujetos de prueba, se utilizaron los datasets de
Kaggle, “QR Codes” y “Geolocated Imagery Dataset
(Scotland)” para generar sujetos de prueba personalizados,
donde se escogerían de 5 a 10 códigos QR aleatorios y se
insertarán en una de las imágenes de Scotland, imágenes, que
a su vez, fueron pegadas de forma sistemática acudiendo
atención al detalle de que estas no se interpongan entre ellas.
El recorrido completo de las primeras 785 imágenes tomó
entre 40 y 55 minutos.
5
● verify
○ Función encargada primordialmente de
verificar la distancia entre los QR
previamente colocados y el que se intenta
colocar, verifica que haya una distancia
mínima de 400px, esto de modo que no
importa qué QR se seleccionen, siempre
haya suficiente espacio entre ellos para no
sobreponerse, return True si el punto
solicitado es válido, False en caso contrario.
● selector
○ Función encargada de seleccionar un punto
aleatorio en el canvas, punto tal que es
inmediatamente verificado bajo la función
verify, si este cumple con las condiciones
especificadas, es agregado al arreglo con el
cual se llamó la función selector.
● saviour
○ Función llamada exclusivamente por el
usuario, es la última función a llamar, es
Explicación de funciones:
aquella que se encarga de guardar las
imágenes generadas previamente en formato
● obtainer
JPG y generar el memorium (csv) de los ID
○ Función encargada de abrir todas las
y de la cantidad de QR de cada ID.
imágenes de un folder y almacenarlas como
objetos mediante la librería glob (para iterar
Una vez conseguidos los sujetos de prueba, es necesario
sobre todos los archivos) y la librería PIL (la
continuar a etiquetar unos cuantos de estos, en este caso se
cual se encarga de abrir los archivos como
etiquetaron 30 diferentes imágenes para entrenar, y 10 para
un objeto con propiedades de clase imagen)
probar la efectividad del mismo.
● paster
○ Función encargada de obtener las
Se utilizó la librería de python LableImg para dar etiquetado a
dimensiones de la imágen sobre la que se
las imágenes, esta librería es de código abierto por lo que
está trabajando en ese momento, entonces,
podemos utilizarlo sin ningún problema, para instalación
procede a llamar a la función selector,
rápida simplemente hay que hacer uso de nuestro asistente de
obtiene los puntos necesarios para insertar
instalación de librerías en python pip con el siguiente
los códigos QR y procede a hacer la
comando:
selección de los mismos bajo la variable
TCO (acronimo para “The Chosen One”), pip install LabelImg
TCO es entonces pegado en la imágen
original y eliminado de la lista de QR Una vez hecho esto, para abrirlo simplemente lo llamamos por
disponibles (variable foreground), la función su nombre en una consola y nos abrirá el software por default:
termina cuando se han recorrido todas las
imágenes de Scotland y se hayan agregado a
la variable new_images, es entonces cuando
se agrega la cantidad numérica de códigos
QR que se le han asignado a dicha
“new_image” al arreglo etiquetes, para su
futura utilización en el memorium de datos
(csv),
6
una vez etiquetadas nuestras imágenes, damos comienzo a la
segunda fase, la de entrenamiento.
7
debemos dar una pausa y enfocarnos en que éste corra sin
problemas:
8
Continuamos importando las librerías requeridas para el
entrenamiento de nuestra IA y modificamos el pipeline para y utilizamos el siguiente comando para hacer uso de nuestra
hacer uso de los directorios de nuestro sistema, en el segundo librería tensorboard poder ver las métricas de evaluación
.ipynb podrá encontrar el código que hace esto por nosotros antes mencionadas:
automáticamente. tensorboard --logdir=.
9
Ahora, vamos a detectar los códigos QR de una imágen
seleccionada, para ello, corremos el siguiente código para
importar dependencias necesarias y finalmente, para utilizar nuestro modelo en tiempo real,
utilizaremos la librería cv2 para conectarnos a nuestra cámara
y dejarle saber al modelo que le estarémos enviando
información de forma constante, utilizamos el siguiente
código para ello
10
y para concluir con nuestros resultados, aquí hay una imágen
VII. DESCRIPCIÓN DE LOS RESULTADOS del modelo funcionando a través de una webcam.
11
en este proyecto nos dedicamos en utilizar este algoritmo
[4] McKinsey Global Institute (2011). Big Data: The Next Frontier for
donde lo usamos como un detección de objetos (especialmente
Innovation, Competition and Productivity. Recuperado de:
códigos QR) en base s de una cámara, este proyecto fue capaz <https://www.mckinsey.com/~/media/McKinsey/Business%20Function
de reconocer los diferentes de datos de entrenamiento creados s/McKinsey%20Digital/Our%20Insights/Big%20data%20The%20next
para entrenar el proyecto y que sea capaz de mejorar la %20frontier%20for%20innovation/MGI_big_data_exec_summary.ashx
precisión del proyecto reconozca múltiples códigos QR en >
cierta distancia y en la misma cámara. [5] Figueroa Nazuno, Jesús, coord. Advances in: artificial intelligence,
computing science and computer engineering. México: IPN-Centro de
Investigación en Computación, 2004.
[6] Weik, M.H. (2000). image recognition. In: Computer Science and
Communications Dictionary. Springer, Boston, MA.
IX. REFERENCIAS https://ebiblio.cetys.mx:4083/10.1007/1-4020-0613-6_8657
12