Visión artificial y Robótica Depto. de Ciencia de la Computación e Inteligencia Artificial
Contenidos Definición y clasificación Reconocimiento basado en la apariencia Bag of words Deep learning Parte de este material procede del Pr. Professor Hager de la Universidad John Hopkins
Definición El reconocimiento de objetos es la tarea de encontrar e identificar un objeto en una imagen o secuencia Los seres vivos somos capaces de reconocer objetos fácilmente, con cambios de escala, rotación, cambio de punto de vista, luminosidad y oclusiones parciales
Qué son objetos? Definición de objeto por la RAE: cosa Cosa: 1. f. Todo lo que tiene entidad, ya sea corporal o espiritual, natural o artificial, real o abstracta. 2. f. Objeto inanimado, por oposición a ser viviente.
Qué involucra el reconocimiento de objetos? Detección: hay coches? Identificación: es una foto de Mao? Categorización de objetos Categorización de escenas y contexto
Reconocimiento de objetos individuales Dada una base de datos de objetos y una imagen, determinar si uno de los objetos está presente en la imagen
Problemas en el reconocimiento Cambios de punto de vista Cambios de iluminación Oclusiones Escala Deformación Fondo complejo
Reconocimiento de objetos Dada una base de datos de objetos conocidos y una imagen: 1.Determinar si un objeto de la BB.DD. está presente en la imagen 2.Determinar la pose (orientación y traslación) del objeto
Evolución 70s: reconocimiento por partes 80s: los objetos se representan con restricciones geométricas con árboles de interpretación y más restricciones geométricas
Evolución 90s: métodos basados en apariencia Basados en análisis de componentes principales
Análisis de componentes principales Reduce la dimensionalidad de los datos de entrada Proyecta los datos de entrada en un subespacio Este subespacio está creado a partir de los autovectores de la matriz de covarianza de los datos de entrada
En qué consiste?
PCA Tenemos un conjunto de entrenamiento: (para el caso de imágenes, hacemos la imagen como un vector de una dimensión) Cada elemento es un vector: Calculamos la media de todo el conjunto de entrenamiento Centramos el conjunto de entrenamiento en el origen restándole la media a cada elemento
Entrenamiento Construimos una BD de imágenes intentando tener la máxima variabilidad y que el fondo no nos afecte
PCA Construimos una matriz donde cada columna es un elemento del conjunto de entrenamiento: Calculamos la matriz de covarianza: (matriz NxN, se obtiene el mismo resultado con XTX, matriz PxP, que suele ser de menor tamaño) La matriz de covarianza Q tiene N autovalores con sus correspondientes autovectores (pueden ser calculados mediante la descomposición SVD (Singular Value Decomposition))
PCA Los autovalores y autovectores crean un nuevo espacio (autoespacio, eigenspace) Cada elemento de entrada (imagen) se puede escribir en función de dichos autovectores (los elementos e son los autovectores y g son las coordenadas del elemento en el nuevo espacio):
Valores medios y autovectores El resultado será una imagen media y las correspondientes imágenes para cada autovector. Aquí se muestran ordenadas por su autovalor asociado
PCA Resumen del método: Calculamos imagen media Se resta la media a cada imagen Se construye la matriz de covarianza Se calculan los autovalores y autovectores de dicha matriz La clave de este método es que solo los mayores autovalores son importantes, es decir, podemos eliminar los autovectores con un autovalor más pequeño
PCA Antes teníamos lo siguiente: Ahora, si tomamos solo los primeros k autovalores y autovectores
PCA Para calcular las coordenadas de una imagen en el nuevo espacio
Reconocimiento Primero calculamos las coordenadas de todas las imágenes de entrenamiento en el nuevo espacio Dependiendo de la aplicación, el proceso de reconocimiento puede variar Dada una nueva imagen, calculamos sus coordenadas en el nuevo espacio Si se trata de varios objetos o clases distintas, encontramos a qué elemento (o cluster) del conjunto de entrenamiento se parece más (está más cerca)
Reconocimiento de caras
Limitaciones Es necesario tener todas las imágenes, variando en pose y luminosidad Se asume un fondo constante y que se pueda segmentar fácilmente. No manejamos oclusión
Evolución 2000s: uso de características visuales Para reconocer un objeto se puede usar un grafo entre las características y emparejar grafos
Problemas en el reconocimiento (uno más) Cómo establecer categorías de objetos? Es ese objeto una silla?
Reconocimiento de categorías Muchos objetos comparten partes comunes (los coches tienen ruedas, los aviones alas) Las relaciones entre las partes son constantes (dos ojos encima de la boca) Comparten elementos de apariencia común (un extintor es siempre rojo) Se podrían usar las características visuales como partes de un objeto?
Bag of words Idea: sacar características y asociarlas a un vocabulario
Información de los descriptores Varios puntos característicos pueden tener una apariencia similar Se buscan grupos
Formación del diccionario Capturamos tantas características como podamos del entorno por el que nos vamos a mover Nos quedamos con sus descriptores Fijamos el tamaño del diccionario (número de palabras) y mediante alguna técnica (Kmedias, por ejemplo) agrupamos los descriptores Una palabra es un descriptor!
Reconocimiento Creamos un histograma de aparición de palabras
Reconocimiento Podemos reconocer usando métodos como comparación entre histogramas, SVM, naive bayes, etc.
Deep Learning En los últimos años se ha producido un gran auge de esta técnica debido a sus buenos resultados Surge en los 80s. Problema: lento de entrenar: aplicado a reconocimiento de caracteres escritos tarda 3 días en entrenar. Se basa en el uso de redes neuronales Reconocimiento: hasta ahora extraíamos características y luego entrenábamos con un clasificador. Deep learning persigue hacer las dos fases a la vez
Deep learning Características: Necesitan muchos datos para poder tener buenos resultados (aunque no tantos) Necesitan mucha potencia de cálculo para entrenar (uso de GPU)
Arquitecturas de deep learning Existen distintas arquitecturas. Vamos a ver una en concreto: convolutional neural networks Consta de un conjunto de capas de donde se aplican una serie de filtros convolucionales. Estos filtros se aprenden y se corresponden con las características Se produce un procesamiento por capas, donde cada capa es un escalado de las imágenes (pooling) La salida de estas capas se conecta a una capa fully connected red neuronal
Convolutional neural networks