Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semana 3
Detection Algotithms
• Object Localización:
Para desarrollar la detección de objetos, primero es necesario aprender acerca de la
localización de objetos.
El algoritmo debe ser capaz de delimitar donde está el objeto aparte de hacer la tarea
de clasificación:
Ahora nuestros datos de entrenamiento no solo tendrán una etiqueta del objeto, sino
cuatro números adicionales. En este ejemplo, bx debería estar cerca de 0.5, bw sería
0.7, bh = 0.3 y bw = 0.4.
La etiqueta Y deberá tener un parámetro que llamaremos PC, detecta si hay un objeto
(Pc=1 hay objeto, Pc=0 No hay objeto). Si hay un objeto tendremos los valores de
bx,by,bw y bh. También tendremos C1, C2 y C3 (la probabilidad de cada una de las
clases). Hay que recordar que en este problema la imagen solo tiene un objeto.
• Landmark Detection
Puede que queramos detectar los bordes que delimitan un ojo, un labio, una cara etc.
Para ello es necesario tener más salidas en la red neuronal.
Convolutional Neural Networks
Lo anterior es un ejemplo para detectar emociones en las caras etc. Para tratar una red
como esta, se necesita un conjunto de entrenamiento etiquetado.
La idea anterior también se puede llevar a la detección de poses de personas.
Convolutional Neural Networks
• Object Detection
Vamos a construir otro algoritmo de detección de objetos. Vamos a usar una red
convolucional para realizar detección de objetos mediante algo llamado algoritmo de
detección de ventana deslizante.
Supongamos que queremos construir un algoritmo de detección de automóviles.
Lo primero que podemos hacer es crear un conjunto de entrenamiento de etiquetas,
con x e y con ejemplos muy recortados de coches:
Se toma ese cuadrado como entrada de la convNet para que esta haga una predicción.
Y dirá si en el interior de ese cuadrado hay un coche o no. Luego se vuelve a alimentar
la red con el cuadrado desplazado a otra región y detecta si hay o no un coche. ETC
Con las ventanas deslizantes vamos desplazando el cuadro delimitador hasta captar el
coche, pero puede que ninguna de las deslizaciones llegue a captarlo del todo. En el
siguiente ejemplo ninguno de los delimitadores coincide perfectamente con la
posición del coche.
Supongamos que tenemos una imagen 100x100. Se coloca una malla en la imagen
(usaremos 3x3 aunque en realidad se usa uno más fino como 19x19):
El volumen total de la salida será 3x3x8, tiene celdas 3x3 y un vector de 8 dimensiones.
Ahora la entrada para entrenar la red neuronal es de 100x100x3 y luego hay una
ConvNet habitual con ConV + Pooling etc. Y al final se debe elegir las capas conv y las
maxPool para tener a la salida un volumen de 3x3x8.
Por convencion para determinar si es un buen resultado debe ser mayor o igual a 0.5.
• Non-max Suppresion
Uno de los problemas de detector de objetos es que pueden existir dos o mas
detecciones un mismo cuadro delimitador. La non-max Suppersion es una manera de
corregirlo.
Lo que hace Non-max suppresion es limpiar estas detecciones para que solo exista una
detección. Lo que hace es examinar las probabilidades asociadas a cada una de estas
detecciones (se mide con IoU).
• Cajas de anclaje
Uno de los problemas de detección de objetos vistos hasta ahora, es que cada una de
las celdas solo puede detectar un solo objeto. Para solucionarlo existe la idea de las de
anclaje.
Tenemos una imagen como la siguiente:
Vemos que el punto medio del peatón y el del automóvil están casi en el mismo lugar y
ambos caen en la misma región de la celda en la malla.
En este caso la salida Y donde se puede detectar peatón, coche y moto, no es capaz de
detectar ni peatón ni coche, así que hay que elegir una de las dos detecciones para la
salida.
Con la idea de caja de anclajes, lo que se hace es predefinir dos formas diferentes de
cajas llamadas de anclaje:
Convolutional Neural Networks
Lo que se hace ahora es asociar dos predicciones con los dos cuadros de anclaje (se
pueden usar más cajas de anclaje). El vector de salida será:
¿Qué pasa si tenemos dos cuadros de anclaje, pero tres objetos en la misma celda de
cuadrícula?
Convolutional Neural Networks
En este caso el algoritmo no funciona bien. Pero es muy poco probable que dos
objetos tengan el mismo punto medio, así que no ocurrirá con frecuencia.
• Yolo Algorithm
La salida será 3x3, porque estamos usando celdas de cuadrícula de 3x3, x 2 que es el
número de anclajes x8 porque es la dimensión de Pc,bx,by,bh,bw,c1,c2,c3. Y también
se puede representar como una salida de 3x3x16.
Así que, para construir el modelo de entrenamiento, se pasa por cada una de las nueve
celdas de cuadricula y formamos un vector de destino apropiado “Y”.
Dada una imagen la red neuronal emitida una salida de volumen 3x3x2x8. Donde cada
una de las nueve celdas de cuadriculas se obtiene un vector como este.
Finalmente, se ejecuta con la non-max supressed:
Convolutional Neural Networks
El objetivo es dibujar alrededor del objeto detectado. Este algoritmo es útil para
muchas aplicaciones comerciales
Convolutional Neural Networks
Esto es útil por ejemplo a la hora de que un coche se mantenga en la carretera. Otras
aplicaciones:
• Transpose Convolutions
Las convoluciones transpuestas son una de las claves para la arquitectura U-Net. Se
toman 2x2 entradas y se convierten en una salida 4x4.
Recordemos la convolución normal:
Veamos un ejemplo:
Convolutional Neural Networks
Debemos hacer un skip conection. Resulta que, la siguiente capa final decide qué
región es un gato. Dos tipos de información son útiles. Una es la información
contextual de alto nivel, espacial y de alto nivel que obtiene de esta capa anterior.
Donde, con suerte, la red neuronal, hemos descubierto que en la esquina inferior
derecha de la imagen o tal vez en la parte derecha de la imagen, están sucediendo
cosas parecidas a gatos. Pero lo que falta es una información espacial muy detallada y
de grano fino. Debido a que este conjunto de activaciones aquí tiene una resolución
espacial más baja para aumentar, es simplemente más baja. Entonces, lo que hace la
conexión de salto es permitir que la red neuronal tome esta información de
características de muy alta resolución y bajo nivel donde podría capturar para cada
posición de píxel. Pero una textura más detallada como información para tomar una
decisión sobre si un determinado píxel es parte de un gato o no.
Convolutional Neural Networks
• U-Net Architecture
Convolutional Neural Networks
Convolutional Neural Networks
Convolutional Neural Networks
Convolutional Neural Networks
Semana 4
Face recognition
• What is Face Recognition:
En primer lugar, vamos a empezar por repasar algunas de las terminologías utilizadas
en el reconocimiento facial.
En la literatura de reconocimiento facial, se habla a menudo de verificación facial y
reconocimiento facial.
En la verificación facial el trabajo del sistema es verificar si la imagen de entrada es o
no la de la persona interesada. Por lo tanto, a veces también se llama problema 1 a 1,
en el que solo quieres saber si la persona es la persona que dice ser.
El reconocimiento facial, es bastante más complicado que el problema de verificación.
Supongamos que tenemos un sistema de verificación con el 99% de precisión. Este
porcentaje de precisión podría no ser tan malo, pero supongamos que K es igual a 100
en un sistema de reconocimiento. Si aplicamos este sistema a una tarea de
reconocimiento con 100 personas en su base de datos, ahora hay 100 veces más de
posibilidades de hacer un error y si la posibilidad de cometer errores en cada persona
es solo 1%. Es decir, necesitaríamos un sistema con 99.9 de precisión como mínimo.
Lo que se debe hacer es aprender una función de similitud. En particular, deseas que
una red neuronal aprenda una función que se va a denotar con la letra d, que recibe
dos imágenes y da como resultado el grado de diferencia entre las dos imágenes. Así
que, si las dos imágenes son la misma persona, la diferencia será pequeña. Así que si la
diferencia es menor que un umbral ‘tau’ es la misma persona. Así es como se aborda el
problema de verificación facial.
Convolutional Neural Networks
• Siamese network
El trabajo de la función d es indicar cuanto de diferentes son dos rostros entre si. Una
manera de lograr esto es utilizar una red siamesa.
Lo que se puede hacer es alimentar esta segunda imagen a la misma red neuronal con
los mismos parámetros y obtener un vector diferente de 128 números, que codifica
esta segunda imagen.
Por último, si creemos que estas codificaciones sin una buena representación de estas
dos imágenes, lo que se puede hacer es definir la imagen.
Convolutional Neural Networks
Triplet Loss es una buena manera de aprender los parámetros para el reconocimiento
facial. Hay otra manera de aprender estos parámetros.
Otra forma de entrenar una red neuronal es tomar un par de redes neuronales para
tomar esta red siames y hacer que ambas calculen estas embeddings, tal vez 128
dimensiones de embeddings o más, y luego hacer una predicción. Donde la salida será
1 si son las mismas personas o 0 en caso contrario.
Convolutional Neural Networks
Es una de las aplicaciones más interesantes y divertidas. Se puede generar una obra de
arte propia. Pero ¿Qué es?
Convolutional Neural Networks
Comencemos con una unidad oculta en la capa 1 y vemos cual es la imagen que
maximiza la activación de esa unidad en particular. Ahora, debemos observar que una
unidad oculta en la capa 1, solo verá una porción relativamente pequeña de la red
neuronal.
Ahora, se puede elegir una unidad oculta diferente en la capa 1 y hacer lo mismo
¿Y que, pasa si hacemos esto mismo para otras capas ocultas más profundas?
En las capas más profundas, una unidad oculta, verá una región más grande de la
imagen. Donde en el extremo de cada píxel podría afectar hipotéticamente la salida de
estas capas posteriores de la red neuronal. Así que en realidad las unidades
posteriores se ven parches de imágenes más grandes.
Convolutional Neural Networks
• Cost Function
Vamos a definir una función de Costo J(G) que mire que tan buena es una imagen
generada en particular y usaremos el descenso del gradiente para minimizar J(G) con
el fin de generar la imagen.
• 1D and 3D Generalizations
Una idea similar se puede aplicar a los datos 1D. Por ejemplo, con una señal de un
electrocardiograma.