observados en los axones de las neuronas en los
cerebros biológicos ”. La información de entrada
atraviesa la red neuronal produciendo unos valores de
salida a modo de predecir lo estimado.
Figura 1.
Las redes neuronales actúan cómo cualquier función
matemática: reciben un conjunto de valores numéricos
(en nuestro caso reciben la intensidad de los canales de
cada píxel de las imágenes) y devuelven otro. En el
medio existen varias capas de “neuronas”
interconectadas que realizan operaciones matemáticas
para obtener un “valor de activación”. La ecuación que
determina ese valor en cada neurona de una capa es:
𝐴 = 𝑓
𝑖 = 0
|𝑎|
∑ 𝑤
𝑖
𝑎
𝑖
( )
+ 𝑏
( )
Donde a es el conjunto de neuronas de la capa anterior,
w es el conjunto de pesos que tiene cada una de las
conexiones, b un valor constante de la capa, llamado
“bias”, y f una función no lineal (como por ejemplo
tanh).
Estos pesos y bias empiezan teniendo valores
aleatorios. Para “entrenar” a las redes, se necesita un
conjunto de entradas con sus salidas esperadas
correspondientes, mediante las cuales la red luego
“aprende” el patrón. Para lograrlo, primero se aplican
las entradas a las redes, obteniéndose así un conjunto de
salidas. Luego se calcula el error existente entre las
salidas esperadas y las obtenidas, usando por ejemplo el
siguiente método:
𝐸(𝑠) =
1
2
𝑠
𝑒
− 𝑠
| || |
2
Donde s
e
es un vector que contiene las salidas esperadas
y s las salidas obtenidas. Una vez se tiene esta función
debemos intentar minimizarla, lo cual se logra al tomar
las derivadas parciales con respecto a cada en peso en la
capa anterior, lo que nos permite calcular el gradiente
de la función de error. Este gradiente apunta en la
dirección en la que la función crece, así que mover los
valores en la dirección contraria nos permite ajustar
cada peso y activación (para ajustar las activaciones, se
debe realizar el mismo proceso en la capa anterior) de
forma tal que la función disminuya. Esto tiene el efecto
de encontrar un mínimo local de la función, es decir,
minimizar el error.
Nosotros utilizaremos una variante de este modelo: las
redes neuronales convolucionales (CNN). Estas son
idénticas a las normales excepto que en vez de
interconectar cada neurona con todas las anteriores, se
conectan solo entre nodos cercanos. Esto suele ser útil
en el campo de Computer Vision porque generalmente
las relaciones entre píxeles son locales, es decir, no hay
mucha relación entre píxeles lejanos en la imagen.
SLIC:
Es una algoritmo de segmentación en super píxeles.
Segmentar una imagen significa separarla en distintas
regiones de píxeles cercanos en distancia o color.
Utiliza el método k-means sobre un espacio de 5
dimensiones, compuesto por los 3 canales de la imagen
y las 2 dimensiones espaciales. Es más rápido e igual de
preciso que métodos anteriores.
Python:
Es el lenguaje de programación que usamos para llevar
a cabo el desarrollo del proyecto. Optamos por este ya
que dispone de soporte y documentación para librerías
y frameworks de Machine Learning. Además, es el
mismo que los desarrolladores en Satellogic usan en la
práctica. Aunque cuenta con la ventaja de tener
abstracciones de alto nivel que facilitan el desarrollo, al
ser un lenguaje interpretado es más lento que lenguajes
compilados como C y C++.
Tensorflow:
Es una librería open source desarrollada por google en
Python que contiene varias funciones para facilitar la
programación de modelos de inteligencia artificial.
Varias partes de la misma vienen pre-compiladas, lo
que la hace mucho más rápida que el resto de Python.
Desafío y Desarrollo.
El proyecto lo realizaremos entrenando una red
neuronal convolucional profunda, donde las neuronas
corresponden a campos receptivos de una manera muy
similar a las de las neuronas en la corteza visual
primaria de un cerebro biológico. Está desarrollada en
Python aprovechando la librería de Tensorflow.
Existen hoy en dia algoritmos capaces de realizar dicha
identificación de calles(4), sin embargo esto es en
imágenes de muy alta calidad y de mucha similitud al
dataset utilizado. La Figura 1. Muestra un ejemplo
realizado por Darío Pavllo, un Investigador de
Inteligencia Artificial en la empresa Facebook. Este