Detecci´on de objetos y anotaci´on de im´agenes en el iPhone

Anuncio
E SCOLA T ECNICA S UPERIOR D ’E NGINYERS DE
T ELECOMUNICACI Ó DE BARCELONA
Y
M ASSACHUSETTS I NSTITUTE OF
T ECHNOLOGY
Detección de objetos y anotación de
imágenes en el iPhone
Tutor:
Autor:
Dolores B LANCO
Dr. Antonio T ORRALBA
25 de febrero de 2013
Agradecimientos
Antes de empezar me gustarı́a agradecer a todas las personas que han hecho posible que haya
hecho este proyecto.
Ellas son mi famı́lia y amigos, por todo su apoyo; compañeros y amigos del laboratorio por
poder compartir estos meses con ellos y sobre todo al profesor Antonio Torralba por haberme
dado la oportunidad de aprender tantas cosas.
ÍNDICE GENERAL
Detección de objetos y anotación de imágenes en el iPhone
Índice general
1. Introducción
2
2. Contexto
3
2.1. Reconocimiento y detección de objetos . . . . . . . . . . . . . . . . . . . . .
3
2.2. LabelMe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.3. iOS Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3. LabelMe iOS App
10
3.1. Funcionamiento de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.2. Aspectos técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2.1. Organización de los archivos . . . . . . . . . . . . . . . . . . . . . . .
14
3.2.2. Comunicación entre la aplicación y el servidor . . . . . . . . . . . . .
15
4. Detector de objetos en iOS
20
4.1. Captura de la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.2. Cálculo de los descriptores: HOG . . . . . . . . . . . . . . . . . . . . . . . .
21
4.3. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.4. Correlación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.5. Pirámide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.6. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.7. Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
5. Conclusiones
Dolores Blanco
28
I
ÍNDICE DE FIGURAS
Detección de objetos y anotación de imágenes en el iPhone
Índice de figuras
2.1. Sistema de reconocimiento de objetos . . . . . . . . . . . . . . . . . . . . . .
3
2.2. Representación de cálculo de los descriptores HOG. Obtenido de [1] . . . . . .
5
2.3. Esquema para obtener los descriptores HOG. Obtenido de [1] . . . . . . . . . .
5
2.4. LabelMe, herramienta de anotación . . . . . . . . . . . . . . . . . . . . . . .
6
3.1. Funcionamiento LabelMe app . . . . . . . . . . . . . . . . . . . . . . . . . .
11
4.1. Cálculo descriptores HOG de [2] . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2. Orden de almacenamiento de pı́xels según la orientación de la imagen. . . . . .
23
4.3. Representación HOG para distintas imágenes. . . . . . . . . . . . . . . . . . .
24
4.4. Ejemplos del uso del algoritmo nms para distintas áreas de solapamiento con
imágenes de [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.5. Pirámide de una imágen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.6. Tiempos para iPhone5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
Dolores Blanco
II
ÍNDICE DE CUADROS
Detección de objetos y anotación de imágenes en el iPhone
Índice de cuadros
3.1. Inicio de sesión: respuesta del servidor y acción de la aplicación . . . . . . . .
16
3.2. Creación de una cuenta de usuario: respuesta del servidor y acción de la aplicación 17
3.3. Envı́o de imagen y anotación: respuesta del servidor y acción de la aplicación .
18
3.4. Actualización de la anotación: respuesta del servidor y acción de la aplicación .
19
4.1. Especificaciones para todos los modelos de dispositivos compatibles con el detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dolores Blanco
21
1
Detección de objetos y anotación de imágenes en el iPhone
Capı́tulo 1
Introducción
A partir de la aparición del primer smartphone la evolución de los dispositivos móviles ha
cambiado la manera como la sociedad interactúa con ellos. Tanto los recursos que ofrecen como
la facilidad de acceder a ellos para la mayorı́a de personas son las principales razones que nos
llevan a realizar este trabajo.
En el campo de detección y reconocimiento de objetos es importante poder acceder a imágenes
anotadas pero esto siempre implica un coste. Es por esto que nuestro primer objetivo ha sido
facilitar una herramienta a la comunidad de Computer Vision que permita crear una base de
datos propias de imágenes anotadas, en cualquier lugar y de la manera más sencilla posible.
Esto no es más que una extensión de LabelMe [3] pero ahora desde un dispositivo móvil, por lo
que se añade flexibilidad a las funcionalidades ya existentes.
El segundo objetivo ha sido desarrollar un detector de objetos para dispositivos móviles.
Un detector en dispositivos móviles es muy común ya que la mayorı́a de cámaras digitales
actuales y móviles disponen de detectores faciales o de sonrisas. En este caso el detector serı́a
un detector a medida pudiendo elegir qué detectar y utilizar las imágenes y anotaciones creadas
con LabelMe.
Para el primero desarrollo de estas aplicaciones hemos escogido utilizar dispositivos con el
sistema operativo iOS de Apple.
Dolores Blanco
2
Detección de objetos y anotación de imágenes en el iPhone
Capı́tulo 2
Contexto
Uno de los principales objetivos de las investigaciones tecnológicas es conseguir que las
máquinas tengan un comportamiento lo más parecido posible al del ser humano, que tenga
inteligencia artificial. En Computer Vision como subcampo de la inteligencia artificial tiene el
mismo objetivo, pero relacionado con la visión. En este campo se busca el entendimiento de la
escena, es decir, a partir de una representación del mundo real los dispositivos deben ser capaces
de enteder qué está pasando y reaccionar de manera diferente dependiendo de la situación. Para
poder conseguirlo deben poder reconocer los objetos y acciones existentes en la escena.
2.1.
Reconocimiento y detección de objetos
Figura 2.1: Sistema de reconocimiento de objetos
Un sistema de reconocimiento de objetos, tal y como se puede ver en la figura 2.1, necesita
una captura de la escena para poder compararla con modelos previos y determinar si el objeto
en cuestión está o no en la escena.
Dolores Blanco
3
2.2. LABELME
Detección de objetos y anotación de imágenes en el iPhone
La representación de la escena puede ser una imagen en dos o tres dimensiones.
Los humanos para reconocer un objeto primero tenemos que saber algo sobre él, ya sea
haberlo visto antes o conocer una descripción. En un sistema de reconocimiento pasa lo mismo,
el sistema tiene que tener ciertos modelos para que pueda compararlos con las imágenes de la
escena. Lo más sencillo de pensar es que estos modelos pudieran ser imágenes de objetos en
otras escenas, y por tanto el sistema los compara mediante una correlación pı́xel a pı́xel con la
imagen de la escena actual. Esta primera aproximación se comprobó que no era efectiva debido
a que las imágenes podrı́an estar tomadas desde distintos puntos de vista, sólo podrı́a aparecer
alguna parte o tener alguna parte oculta tal y como dijo Nivatia and Binford en 1977. Es por
esta razón que a partir de las imágenes se calculan descriptores o caracterı́sticas de éstas con el
objetivo de obtener información adicional como por ejemplo la textura o los bordes.
Desde que se empezó a tratar el reconocimiento de objetos se han utilizado muchos tipos de
caracterı́sticas, en este caso hemos utilizado Histograms of Oriented Gradients, HOG, por ser
uno de los más extendidos y sobre todo ser sencillo de calcular. En el siguiente punto detallaremos en que consiste este procedimiento.
Historgrams of Oriented Gradients
La primera vez que se introducen los descriptores HOG es en [1] por Dalal & Triggs destinado a la detección de humanos. Lo que buscaban con este tipo de descriptores es que el sistema
puediese distinguir a humanos bajo fondos y iluminación complicados. Este método aprovecha
que los objetos se pueden describir a partir de la forma que tienen. Una manera de calcular la
forma es a partir de la orientación que tiene el gradiente o los contornos. Tal y como muestra la
figura 2.3, primero se calcula el gradiente de la imagen y después se divide en pequeñas regiones
llamadas cells. En cada cell se calcula el histograma de los ángulos del gradiente y se normaliza
el valor respecto a la energia de los histogramas en una región mayor llamada block. Lo que
se consigue con este último paso es que los descriptores son más invariantes en cuestiones de
iluminación.
2.2.
LabelMe
Conseguir una base de datos de imágenes amplia es muy importante para el desarrollo de
sistemas de reconocimiento de objetos y hoy en dı́a gracias a Internet esto es relativamente
sencillo. Tan importante como las imágenes son las anotaciones en ellas ya que dan información
sobre lo que contienen, aunque en este caso esto es lo que más coste tiene porque requiere
Dolores Blanco
4
2.2. LABELME
Detección de objetos y anotación de imágenes en el iPhone
Figura 2.2: Representación de cálculo de los descriptores HOG. Obtenido de [1]
Figura 2.3: Esquema para obtener los descriptores HOG. Obtenido de [1]
la acción humana. Para facilitar esta tarea en 2005 Russel et al crearon LabelMe: The Open
Annotation Tool [4], añadiendo varias funcionalidades que la mayor parte de bases de datos no
tenı́an. En [3] enumeran las siguientes:
Los objetos están integrados en la escena.
No sólo se sabe que el objeto etiquetado está en la escena, sinó que se sabe en que lugar
de imagen está.
Diversos tipos de clases. Hasta el momento solo Caltech 101, Caltech 256 y ImageNet
tenı́an un número comparable.
Diversos tipos de imágenes, variando punto de vista, distancia, etc.
Las imágenes no tiene copyright ya que gran parte de ellas han sido tomadas por los
Russell et al o por investigadores que han contribuido.
Abierta y dinámica.
Una de las cosas que hace útil a LabelMe es su herramienta de anotación web que podemos
ver en la figura 2.4. Esta herramienta permite de manera sencilla delimitar los objetos de la
imagen creando polı́gonos punto a punto y añadirles el nombre. La facilidad a la hora de anotar
y compartir es una de las cosas que ha hecho que el uso de LabelMe se extienda desde que se
Dolores Blanco
5
2.3. IOS APPS
Detección de objetos y anotación de imágenes en el iPhone
Figura 2.4: LabelMe, herramienta de anotación
creó. Actualmente cuenta con casi 200000 visitantes, más de 200000 fotos y sobrepasa el millón
de anotaciones. Además se puede descargar un kit con funciones de MATLAB que permite
trabajar con la base de datos fácilmente.
2.3.
iOS Apps
Para empezar a desarrollar aplicaciones para iOS Apple proporciona un entorno y un kit de
desarrollo llamado Xcode y SDK respectivamente. Una vez tienes esto lo único que necesitas
es saber el lenguaje de programación que utilizan las aplicaciones, Objective - C, y las librerı́as
de objetos que ya proporciona Apple.
Objective - C
Objective - C es un lenguaje de programación que tal como su nombre indica está orientado
a objetos y es un superconjunto del lenguaje C. Ser un superconjunto de C hace que compartan
muchas cosas, como la sintaxis básica, las estructuras, los tipos, punteros, etc., pero añadiendo
caracterı́sticas de los lenguajes orientados a objetos y otras de propias.
Los lenguajes orientados a objetos permiten tener la información encapsulada y definir comportamientos sobre ella, llamados métodos en Objective - C Un objeto no es más que una instancia de una clase y para definir una clase en Objective C se necesitan por lo menos dos archivos:
Header file. Contiene las declaraciones de la clase, las variables, métodos y constantes.
Dolores Blanco
6
2.3. IOS APPS
Detección de objetos y anotación de imágenes en el iPhone
La extensión es .h
Implementation file. Es donde se hace la implementación de los métodos declarados.
Tiene como ventaja que puede contener tanto código propio de Objective - C o C. La
extensión es .m
También puede haber un archivo de implementación con extension .mm y otro con extensión
.xib. El primero sirve para poder añadir clases o funciones programadas en C++ y el segundo
para generar gráficamente la interfaz del objeto, en el caso que la tenga.
Estructura básica
Un ejemplo simplificado de una clase lo podemos ver a continuación. Los archivos .h tienen
un aspecto parecido al siguiente código:
// Aqui a\˜nades las librerias o archivos que utilizaras.
#import <UIKit/UIKit.h>
// MiClase es el nombre de la clase que estamos declarando y
// NSObject la clase de la cual hereda.
@interface MiClase : NSObject{
float
f;
NSString
*string;
}
+(MiClase *)nuevaClaseCon:(NSString *)string;
-(NSString *)cambiaString;
@end
Y los archivos .m son ası́:
#import "MiClase.h"
@implementation MiClase
Dolores Blanco
7
2.3. IOS APPS
Detección de objetos y anotación de imágenes en el iPhone
+(MiClase *)nuevaClaseCon:(NSString *)string;
{
// La implementacion va aqui.
}
-(NSString *)cambiaString;
{
// La implementacion va aqui.
}
@end
Métodos
En Objective - C hay dos tipos de métodos, los métodos de instancia que únicamente afectan
a la instancia de la clase y los métodos de clase que afectan a toda la clase. Los primeros son
los más comunes ya que con lo que trabajas normalmente son con instancias. En la declaración
se distinguen en que los de instancia empiezan con el sı́mbolo -, en cambio los de métodos de
clase utilizan +. La manera de declararlos e implementarlos se puede ver en los códigos de la
subsección 2.3. La manera de ejecutarlos se llama messaging, ya que es como si enviases un
mensaje al objeto para que ejecute el método, el código serı́a:
MiClase *unMiClase = nil; // nil es el equivalente de NULL.
unMiClase = [MiClase nuevaClaseCon:@"nuevo string"];
NSString *str;
str = [unMiClase cambiaString];
Propiedades
Una propiedad no es más que información que encapsula un objeto, pero lo que le diferencia de una variable es que representa que es un atributo de la clase. La ventaja de utilizar
propiedades es que Objective - C crea por ti métodos que permiten acceder o fijar la propiedad,
es decir, si desde un objeto quisieses recuperar una variable de otro objeto creado éste deberı́a
tener un método declarado que te lo devolviese. En cambio, con una propiedad no hace falta
porque automáticamente ya tienes un método con el nombre de la propiedad que te la devuelve.
Hay distintos atributos que puedes fijar de una propiedad, por ejemplo, readonly hace que sólo
puedas acceder a la propiedad pero no la puedas modificar.
Dolores Blanco
8
2.3. IOS APPS
Detección de objetos y anotación de imágenes en el iPhone
Protocolos y Categorı́as
Los protocolos y categorı́as son herramientas muy útiles cuando programas con Objective C ya que permiten crear métodos para cada clase e utilizarlos. La diferencia entre un protocolo
y una categorı́a es que en el protocolo los métodos no están implementados y pueden implementarlos cualquier clase, en cambio en la categorı́a los métodos están implementados para una
clase en concreto y permite crear más de los que ya tiene la clase.
Dolores Blanco
9
Detección de objetos y anotación de imágenes en el iPhone
Capı́tulo 3
LabelMe iOS App
Tras la gran aceptación de LabelMe web, extenderlo a una aplicación para dispositivos móviles tiene como objetivo facilitar a los usuarios la recolección de imágenes permitiendo hacer
fotos y anotándolas en cualquier momento y lugar. Estas imágenes pueden enviarse al servidor
de LabelMe para añadir o modificar anotaciones.
La aplicación está desarrollada para dispositivos iOS, tanto para iPhone como para iPad,
el proceso para el desarrollo para esta plataforma se han explicado en 2.3. La elección de iOS
frente a otras plataformas se debe a la gran penetración que tienen los productos Apple en la
comunidad de Computer Vision además de la calidad de servicio que supone.
3.1.
Funcionamiento de la aplicación
La aplicación está diseñada para que sea fácil e intuitiva. En la figura 3.1 aparecen las
pantallas que existen y como acceder a ellas.
Pantalla de inicio
En esta pantalla es en la que se debe introducir el usuario y contraseña. El usuario y la
contraseña son los mismos que se utilizan en la aplicación web, en caso de no tener una cuenta
creada existe la opción de crear una. Para crear una cuenta, igual que en la web, es necasario
escoger un nombre de usuario y contraseña, y proporcionar el nombre real, una dirección de
correo electronico y la institución a la se pertenece. Hasta la última actualización de LabelMe
no era necesario tener cuenta de usuario, con esta nueva funcionalidad cada objeto anotado
queda marcado con el nombre de usuario de manera que cuando descargas una base de datos
puedas trabajar únicamente con las imágenes anotadas por ti mismo o por otro usuario. Además
Dolores Blanco
10
3.1. FUNCIONAMIENTO DE LA Detección
APLICACIde
ÓN
objetos y anotación de imágenes en el iPhone
Figura 3.1: Funcionamiento LabelMe app
de iniciar sesión o crear una cuenta, desde la pantalla de inicio también es posible recuperar la
contraseña en caso de no recordarla. Sólo hay que introducir la dirección de correo electrónico
para que se genere una nueva contraseña y se envie un correo a la dirección especificada.
Galerı́a
Una vez se ha iniciado sesión, la primera pantalla que se muestra es la galerı́a. En la galerı́a
se pueden ver todas las imágenes que se han tomado con la aplicación. Está formada por una
barra de navegación en la parte superior y una barra inferior con pestañas que muestran en que
pantalla estás y permiten cambiar la pantalla. En la vista de la pantalla aparece el nombre de
usuario con su foto de perfil y un bontón que permite cambiar la visualización de las imágenes,
de modo cuadrı́cula a modo lista y viceversa. Esto permite que al cambiar al modo lista podamos
Dolores Blanco
11
3.1. FUNCIONAMIENTO DE LA Detección
APLICACIde
ÓN
objetos y anotación de imágenes en el iPhone
ver más información sobre la imagen: como la fecha en la que se creó, el número de anotaciones
y el tamaño de la imagen en pı́xels.
En cada thumbnail aparece un cı́rculo con diferentes colores que simbolizan diferentes estados de la imagen:
- Rojo: ni la imagen ni las anotaciones están en el servidor de LabelMe. El número que
aparece muestra las anotaciones que hay.
- Verde: la imagen y las anotaciones están actualizadas en el servidor de LabelMe.
- Naranja: la imagen está en el servidor, pero hay modificaciones en la anotación. El número muestra las modificaciones que se han realizado.
Desde la galerı́a se pueden borrar y enviar las imágenes al servidor. Para el modo cuadrı́cula con
el botón Edit de la barra de navegación se pueden enviar y borrar las imágenes seleccionadas,
en cambio para el modo lista sólo sirve para borrar ya que para enviar cada imagen tiene un
boton independiente. Cuando se elimina una imagen se hace localmente, es decir, en el servidor
se mantiene tal y como estaba.
Pantalla de Anotación
En esta pantalla se visualiza la imagen y permite anotar los objetos en ella mediante rectángulos. La manera de acceder a esta pantalla es pulsando una imagen existente en la galerı́a o justo
después de tomar una foto. Como todas las pantallas, tiene una barra de navegación que permite
volver hacia la pantalla anterior. En la parte superior está una barra de herramientas con cuatro
botones, éstos permiten crear y borrar las anotaciones, enviar la imagen y anotacion al servidor
y mostrar una lista con todos los objetos anotados. Para cada objeto aparece una etiqueta para
añadir o modificar el nombre del objeto.
Para selecionar un objeto anotado basta con tocar en la superfı́cie interior al rectángulo que
lo delimita. Cuando la imagen tiene muchas anotaciones puede que haya muchos rectángulos y
uno se superponga a otro, esto puede causar problemas a la hora de seleccionar un objeto. Por
esta razón está la lista de objetos, donde aparecen los nombres de los objetos y el tamaño que
ocupan en pı́xels y a partir de ella puedes seleccionar el objeto deseado.
Pantalla de Ajustes
La pantalla de ajustes permite modificar algunos parámetros del uso. Las funcionalidades
son:
Dolores Blanco
12
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
- Cambiar la foto de perfil. El cambio también se reflejará en la galerı́a.
- Conocer el número de fotografı́as del usuario en el dispositivo.
- Acceder directamente a la versión web.
- Escoger si las fotografı́as tomadas por la aplicación se guardarán también en la galerı́a
del dispositivo o no.
- Determinar la resolución de la imagen.
- Seleccionar si a la hora de subir las imágenes al servidor se utiliza únicamente una conexión Wi-Fi, o cualquiera.
- Determinar si se inicia sesión automáticamente.
- Información sobre LabelMe.
Integración con LabelMe Web
A la hora de subir las imágenes y anotaciones, éstas se almacenan en una colección especifica de la cuenta, llamada iPhoneCollection. Desde la aplicación web se puede acceder, modificar
y añadir anotaciones a las imágenes creadas por la aplicación móvil. Hasta el momento la sincronicación entre las dos aplicaciones es unidireccional, únicamente del dispositivo móvil hacia
el servidor. Esto significa que si modificamos o añadimos una anotación desde la aplicación web
estos cambios no se verán en el dispositivo móvil y además, si volvemos a enviar la anotación
desde el dispositivo móvil las creadas desde la web desaparecerán.
Las anotaciones creadas desde la aplicación móvil tienen la misma estructura en el archivo
xml que las creadas desde la aplicación web. Esto hace que se pueda utilizar el conjunto de
funciones existentes en Matlab Toolbox.
3.2.
Aspectos técnicos
Sobre la programación de la aplicación, al estar destinada para iOS se utiliza Objective - C.
Los aspectos más importantes del diseño de una aplicación para iOS se explican en la sección
2.3, por lo que en este apartado está destinado a explicar como se organizan los archivos y al
comportamiento entre la aplicación y el servidor.
Dolores Blanco
13
3.2. ASPECTOS TÉCNICOS
3.2.1.
Detección de objetos y anotación de imágenes en el iPhone
Organización de los archivos
Para que la aplicación funcione correctamente ésta genera diferentes tipos de archivos. Los
archivos principales son las imágenes y anotaciones, pero no son los únicos. La guı́a sobre cómo
gestionar los archivos que proporciona Apple especifica que los archivos de la aplicación deben
estar almacenados en la carpeta Documents de la aplicación y los temporales en la carpeta
temporal llamada tmp.
En la carpeta Documents, cuando se lanza la aplicación por primera vez se crea una carpeta llamada RememberMe donde se almacena el nombre de usuario en un archivo llamado
username.txt y si está la opción de inicio automático también se guarda la contraseña en un
archivo llamado password.txt. Estos dos archivos se utilizan para iniciar la sesión automáticamente copiando su contenido en los campos de la pantalla de inicio de sesión.
Además de la carpeta RememberMe, la primera vez que se inicia sesión con un usuario en
Documents se crea una carpeta llamada con el nombre del usuario, y dentro de ésta se crean
otras tres carpetas llamadas annotations, images y thumbnail y también dos archivos del tipo
plist (property list) con el nombre settings.plist y otro con el nombre de usuario. En estas
tres primeras carpetas se guarda todo lo referente a las imágenes tomadas y sus anotaciones.
En images se guardan las imagenes con la resolución escogida en la pantalla de settings y un
archivo de texto con la información de la locaclización y en thumbnail una versión más pequeña
para la galerı́a. Las anotaciones se guardan en la carpeta annotations, este archivo contiene una
array con los objetos creados especialmente para cada anotación.
En el caso del archivo nombredeusuario.txt, éste almacena para cada imagen el número
de anotaciones, para el caso de una imagen que no está en el servidor y para el caso en el que
la imagen se haya enviado anteriormente el número de modificaciones desde la última vez que
se envió. La manera en que se en se utiliza este archivo es la siguiente: cuando se toma una
imagen se crea una entrada en la property list con el nombre de la imagen y se le asigna el
valor -1, cada vez que se crea una anotación se decrementa este valor. En el caso que se borre
algun objeto el valor se incrementarı́a. Una vez se envı́a al servidor la imagen y la anotación y
se recibe correctamente este valor se cambia a 0, por lo que si una imagen tiene asociado un 0
significa que está actualizada en el servidor. Una vez la imagen ya está en el servidor, en lugar
de anotaciones el valor representa las modificaciones respecto a la última versión enviada. Una
modificación puede ser tanto la creación, modificación o eliminación de un objeto. Para este
caso la manera modificar el valor asociado a cada imagen es el contrario: para cada modificación
se incrementa el valor y la única manera de decrementarlo es eliminando un objeto que se ha
creado después la última actualización. Es con este valor con el que se obtiene el número que
Dolores Blanco
14
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
aparece en cada imagen de la galerı́a explicado en la seccion 3.1. Siendo v el valor almacenado
en cada entrada de la property list, la manera como se obtiene es la siguiente:
- |v + 1|, si la imagen no está todavı́a en el servidor, es decir, v < 0. El color utilizado es el
rojo.
- v, si la imagen ya está en el servidor, es decir, v > 0. El color es el naranja.
- Cuando el valor es 0 aparece una checkmark informando que está correctamente actualizada en el servidor.
En el archivo settings.plist se guarda la información que se ha escogido en la pantalla de
ajustes, para los ajustes de inicio de sesión automático, conexión wifi y guardar las imágenes en
la galerı́a del dispositivo se utiliza un boleano que indica si estas opiciones están habilitadas o
no. Para la resolución se almacena un número indicando la resolución escogida, en caso de que
sea la máxima se guarda un 0.
Respecto a los archivos temporales almacenados, éstos son los que se utilizan para enviar y
actualizar las imágenes y anotaciones. Estos archivos contienen toda la información necesaria
para enviar al servidor y se guardan con el nombre de la imagen seguido de un número de 10
dı́gitos. La razón por la que se crean estos archivos es por si hay un error en el envio no tenga
que generarse esta información otra vez ya que es lo que se tarda más en procesar. Por lo tanto,
con estos archivos conseguimos que esta información solo se genere una vez y si se produce un
error al enviar la próxima vez ser más rápido. Una vez el servidor ha recibido la información
correctamente o ha pasado cierto tiempo, estos archivos se eliminan de la carpeta.
3.2.2.
Comunicación entre la aplicación y el servidor
La parte del servidor está implementada con lenguaje PHP. La elección de PHP se debe
a su amplio uso en páginas web y también en la aplicación web de LabelMe por lo que facilitó la implentación para la aplicación móvil. La comunicación entre la aplicación y el servidor
es unidireccional, del dispositivo al servidor, por lo que se necesitaba diseñar una manera de
transferir la información en este sentido. Para todos los casos que se necesita enviar datos de
la aplicación al servidor hemos escogido el método POST. El método POST utiliza las cabeceras HTTP para enviar los datos, estos datos pueden ser tanto cadenas de carácteres como datos
binarios. Esta es la razón por la que escogimos este método ya que nos permite enviar más de
un tipo de datos a la vez asociando a cada datos un nombre. Por ejemplo, si queremos enviar
dos cadenas de carácteres y una imagen podriamos asociar éstas a los nombres string1, string2
e image respectivamente.
Dolores Blanco
15
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
A continuación se resumen los protocolos utilizados para cada comunicación del dispositivo
móvil con el servidor.
Inicio de sesión
Para poder iniciar sesión se necesita enviar tanto el nombre de usuario como la contraseña.
Estos pueden estar introducidos mediante el teclado en los campos de la pantalla inicial o bien
pueden ser recordados si esta opción está habilitada. En el POST los nombres de los valores
enviados son username para el nombre de usuario y password para la contraseña. Ambos valores
en este caso son cadenas de carácteres. Una vez el dispositivo ha enviado la información, el
servidor ejecuta el stript PHP. Este stript lo que hace es comprobar que la contraseña enviada
corresponda con la especificada en su base de datos de usuarios. Después de comprobarlo, el
servidor envı́a una cadena de carácteres con la siguiente estrucuta:
[dı́gito] [\n] [descripción]
El valor del dı́gito varı́a dependiendo del resultado de la comprobación, en la tabla 3.1 están
especificadas las posibles respuestas con la acción que lleva a cabo la aplicación cuando las
recibe.
Dı́gito
Descripción
Acción de la aplicación
0
Thanks, you are logged in
Entra en la galerı́a del usuario
1
2
Username is not in the database Lanza una alerta con la descripción
Password is invalid
Lanza una alerta con la descripción
Cuadro 3.1: Inicio de sesión: respuesta del servidor y acción de la aplicación
Creación de una cuenta de usuario
El comportamiento a la hora de crear una cuenta es exactamente el mismo que cuando
se inicia sesión, con la diferencia de que ahora se envia más de dos pares nombre-valor. En
este caso además del nombre de usuario y la contraseña también se envia el nombre real, el
correo electrónico y la institución a la que se pertenece. Los nombres para estos campos del
método POST son: name para el nombre real, email para el correo electrónico y por último,
institution para la institución. Todos estos campos, al igual que en el caso anterior, son cadenas
de carácteres. Lo que realiza el servidor en este caso es verificar que no existe otra cuenta con
el mismo nombre de usuario o correo electrónico y envı́a una respuesta al dispositivo. Igual que
con el inicio de sesión, también hay tres posibles respuestas que se especifican en la tabla 3.2.
Dolores Blanco
16
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
Dı́gito
Descripción
Acción de la aplicación
0
Congratulations! Your account has been created
Vuelve a la pantalla de inicio
1
Username already exists
Lanza una alerta con la descripción
2
This email address already has a user associated Lanza una alerta con la descripción
Cuadro 3.2: Creación de una cuenta de usuario: respuesta del servidor y acción de la aplicación
Olvido de contraseña
Cuando se utiliza la acción de olvido de contraseña la única información que se le pide
al usuario es el correo electrónico con el que se registró, por lo que éste será el único campo
con el nombre email del método POST. En este caso se utiliza el mismo script PHP que en la
aplicación web, por lo que el servidor únicamente envia una respuesta cuando la dirección de
correo electrónico no está en la base de datos. Tanto si la dirección está en la base de datos
o no, la aplicación móvil lanza una alerta diciendo que un correo electrónico será enviado a
la dirección especificada. ste es un error que se solucionará en la próxima actualización de la
aplicación.
Envio de imágenes y anotaciones
Hasta el momento las situaciones explicadas sólo se tenı́a que enviar cadenas de carácteres,
pero para este caso es necesario enviar la imagen además de la anotación. Para enviar una
imagen el método POST necesita una estructura diferente a la de la cadena de carácteres, por
lo demás la composición del método es la misma que en los casos anteriores. Esta estructura
diferente permite añadir información sobre la imagen, como el nombre del archivo o el tamaño.
En este caso especificaremos el nombre de la imagen dado por la aplicación móvil que se
compone de la fecha,la hora que se ha tomado la imagen y el nombre del usuario. Añadiendo
el nombre de la imagen facilitamos la sincronización del dispositivo con el servidor ya que una
misma imagen tendrá el mismo nombre en ambos sitios. En el caso de la anotación, ésta es una
cadena de carácteres con la informacion necesaria para el archivo xml, cada campo está separado
por un delimitador. Como información complementaria también se envia la localización donde
se ha tomado la imagen, si el usuario ha dado su consentimiento. Al igual que la mayorı́a de
información enviada, la localización también es una cadena de carácteres.
Los nombres utilizados para cada una de la información son: imagefile para la imagen,
annotation para la anotación y location para la localización.
La respuesta del servidor al envio de esta información tiene la misma estructura que las
Dolores Blanco
17
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
situaciones anteriores. El comportamiento en este caso se resume en la tabla 3.3.
Dı́gito
Descripción
Acción de la aplicación
0
Nombre del archivo
Envı́a la siguiente foto
o desaparece la vista del progreso
1
Unknown error
Envı́a la siguiente foto
y aumenta el contador de fotos con error
o muestra una alerta si no hay más fotos que enviar.
Cuadro 3.3: Envı́o de imagen y anotación: respuesta del servidor y acción de la aplicación
Desde la galerı́a se puede enviar más de una imagen, el envı́o conjunto se hace secuencialmente. Cuando se recibe la respuesta del servidor, tanto si se ha enviado correctamente o no,
se pasa al siguiente envio. La aplicación va contando todas las imágenes que no se han podido
enviar, y en el caso de que el valor sea mayor que cero envia una alerta al usuario informando
del número de imágenes que han tenido un error en el envio.
Actualización de la anotación
Cuando se actualiza una anotación el comportamiento de la aplicación es muy parecido a
cuando se envia la imagen por primera vez salvo que ahora sólo se envia la parte de la anotación,
ya que la imagen ya está en el servidor. Por lo tanto, el método POST tendrá para este caso el
dos nombres: annotation para la cadena de carácteres con la anotación y filename, otra cadena
de carácteres con el nombre de la imagen, de esta manera el servidor sabe de que imagen se
trata.
Igual que en todos los envios de información anteriores el servidor responde con la misma
estructura, en este caso muy similar a la del envı́o de la imagen pero solo añadiendo el caso
en que el servidor no encuentre la imagen. En este caso envia un mensaje determinado a la
aplicación y ésta vuelve a enviar la imagen y la anotacion de la misma manera que si lo hiciese
por primera vez. En la tabla 3.4 está especificado este comportamiento.
Foto de perfil
En el servidor también se almacena la foto de perfil, la razón para ello es poder recuperarla
si te conectas desde otro dispositivo además que en un futuro también aparezca en LabelMe
Web. Por ello, cada vez que se cambia la foto de perfil la aplicación se conecta al servidor y
se la envia. Además de enviarse la imagen también se envia el nombre de usuario y contraseña
Dolores Blanco
18
3.2. ASPECTOS TÉCNICOS
Detección de objetos y anotación de imágenes en el iPhone
Dı́gito
Descripción
Acción de la aplicación
0
Nombre del archivo
Envı́a la siguiente foto
o desaparece la vista del progreso
1
Unknown error
Envı́a la siguiente foto
y aumenta el contador de fotos con error
o muestra una alerta si no hay más fotos que enviar.
2
This image is not on the server
Vuelve a enviar la imagen
como si fuese la primera vez que la envı́a
Cuadro 3.4: Actualización de la anotación: respuesta del servidor y acción de la aplicación
ya que puede darse el caso que se haya entrado a la aplicación automáticamente y no hubiese
conexión en ese momento, de esta manera la acción se relaizará correctamente. Por lo tanto,
en este caso el método POST tendrá cuatro campos: la imagen con el nombre image en el que
está especificado su nombre, el nombre de usuario y la contraseña con los nombres username y
password respectivamente. Cuando el servidor recibe la imagen la guarda en la carpeta principal
del usario y si ya existia una, la reemplaza por la nueva.
También existe el caso en que se descargue la imagen guardada en el servidor, esto pasa
en el momento que se inicia sesión cuando la aplicación comprueba si existe una foto de perfil
anterior. La foto de perfil siempre tiene el mismo nombre: profilepicture.jpg, por lo que si
no hay ningún archivo con ese nombre en la carpeta del usuario la aplicación envia una petición
al servidor. Esta petición es la única que no es un POST, únicamente lo que hace es que el
servidor ejecute el script espedificado. En este caso el script lo que hace es enviar la imagen de
perfil y si no hay ningun archivo con ese nombre responde con un 1. Por lo tanto, la aplicación
cuando recibe la información y ésta ocupa más de 1 byte guarda esta información como imagen
y en caso contrario no hace nada.
Dolores Blanco
19
Detección de objetos y anotación de imágenes en el iPhone
Capı́tulo 4
Detector de objetos en iOS
Como se explica en el capı́tulo 2 un sistema de reconocimiento de objetos tiene que tener
tres partes: la parte en que se captura la imagen, la que calcula el descriptor de ésta y la que la
compara con un modelo existente. En este capı́tulo se explica el funcionamiento del detector de
objetos diseñado para dispositivos iOS.
Dado que los recursos que tiene un dispositivo móvil son bastante más limitados que los
de un ordenador normal, la versión del detector desarrollada hasta el momento es una versión
sencilla basada en los ya existentes.
4.1.
Captura de la imagen
El detector puede funcionar tanto para utilizarlo con imágenes en tiempo real, capturando
video, como con imágenes almacenadas en el dispositivo. La única diferencia que existe entre
las imágenes es la resolución que es más baja cuando capturas video que cuando tomas una foto.
Esta diferencia no es muy importante ya que antes de calcular los descriptores se disminuye el
tamaño de la imagen. Esto se hace porque el tiempo de cálculo es cuadráticamente proporcional
a la resolución. Esto hace que se tenga que utilizar una resolución mucho más baja de la máxima
de la cámara del dispositivo para que el tiempo sea considerable.
En la tabla 4.1 se pueden ver las especificaciones referentes a las cámaras para todos los
dispositivos compatibles con la aplicación del detector. Para este proyecto hemos utilizado los
dispositivos iPhone 4S, iPhone5 y iPad Retina.
Dolores Blanco
20
4.2. CÁLCULO DE LOS DESCRIPTORES:
Detección HOG
de objetos y anotación de imágenes en el iPhone
Cámara Trasera Cámara Frontal Grabación de Vı́deo
iPhone 5
8 MP
1.2 MP
1080p y 30fps
iPhone 4S
8 MP
1.2 MP
1080p y 30fps
iPhone 4
5 MP
VGA
720p y 30fps
iPhone 3GS
3 MP
VGA
VGA y 30fps
iPod Touch 5th
5 MP
1.2 MP
1080p y 30fps
iPod Touch 4th
960x720
VGA
720p y 30fps
iPad Retina
5 MP
1.2 MP
7200p y 30fps
iPad Mini
5 MP
1.2 MP
7200p y 30fps
iPad 2
960x720
VGA
720p y 30fps
Cuadro 4.1: Especificaciones para todos los modelos de dispositivos compatibles con el detector
4.2.
Cálculo de los descriptores: HOG
Después de reducir el tamaño de la imagen se calculan los descriptores HOG, siguiendo el
esquema de la figura 4.1 que es el procedimiento que se ha resumido en la sección 2.1. El código
utilizado para calcularlos es una adaptación del de Pedro Felzenszwalb [2] para que funcione
correctamente con Objective - C. El código original está escrito con el lenguaje C++ y utiliza un
complemento para poderlo utilizar con MATLAB. Todo lo referente a funciones de MATLAB
es lo que cambiamos por las funciones equivalentes en lenguaje C.
Una de las cosas a tener en cuenta para que funcione correctamente es la manera en la que
se almacenan los pı́xeles de las imágenes en memoria, es decir, si en direcciones consecutivas
de memoria hay pı́xeles de la misma columna o fila. En el código original las imágenes se
almacenan por columnas, pero en el caso de los dispositivos con iOS hay que tener en cuenta
la orientacion del dispositivo con la que se ha tomado la imagen ya que los pı́xeles siempre
se almacenan de la misma manera respecto a la pantalla del dispositivo, tal y como muestra la
figura 4.2. En este caso los descriptores utilizan celdas de 8 pı́xels por lo que los descriptores
resultantes tendrán como dimensiones:
(|
w
h
| − 2, |
| − 2, 32)
sbin
sbin
donde w y h son el ancho y el alto de la imagen en pı́xels respectivamente y sbin el tamaño
de las celdas. Una funcionalidad desarrollada a parte del detector es la visualización de la representación de estos descriptores. Tal y como se puede ver en la figura 4.3, con solo apretar a
un botón en la barra de herramientas de la aplicación se puede visualizar dicha representación.
Dolores Blanco
21
4.3. MODELO
Detección de objetos y anotación de imágenes en el iPhone
Figura 4.1: Cálculo descriptores HOG de [2]
Esta funcionalidad no añade ninguna mejora al funcionamiento de detector, más bien todo lo
contrario. Habilitar la visualización del HOG para el caso de la detección de video en tiempo
real supone un cierto retraso respecto no realizarla. Aunque haga que el detector sea más lento
porque hay que generar la representación. Poder visualizar el HOG es útil porque facilita al
usuario comprobar si se está calculando correctamente.
4.3.
Modelo
Para determinar si el objeto escogido está en la escena hay que tener un modelo de este
objeto con el que comparar los descriptores. Hay distintas maneras de obtener estos modelos,
por ejemplo, se podrı́a utilizar los descriptores HOG de una imagen del objeto en cuestión. El
problema de un modelo tan sencillo es que las imágenes pueden contener objetos que varien
liegramente de forma y/o orientación lo que puede hacer que se reduzcan las posibilidades de
detectar correctamente. Por este motivo la gran mayorı́a modelos se consiguen a partir de un
entrenamiento mediante Machine Learning utilizando imágenes en la que aparece el objeto no
necesariamente en el mismo ángulo y otras imágenes donde el objeto no aparece.
Igual que el código para obtener los descriptores HOG los modelos utilizados también se
han obtenido de Pedro Felzenszwalb [2], aunque este modelo es un modelo con partes sólo
hemos utilizado el nivel que contiene todo el objeto. Se ha escogido solo este nivel del modelo
en lugar de todo el modelo con partes para ganar en velocidad a la hora de obtener el resultado.
Dolores Blanco
22
4.4. CORRELACIÓN
Detección de objetos y anotación de imágenes en el iPhone
Figura 4.2: Orden de almacenamiento de pı́xels según la orientación de la imagen.
4.4.
Correlación
Una vez tienes los descriptores HOG de la imagen o trama de video y el modelo se deben
comparar. La manera de hacerlo es calculando la correlación entre ambos. La manera de hacerla
es como se harı́a para dos imágenes, tal y como muestra la fórmula 4.1 pero para todas las
dimensiones, es decir, para este caso como muestra la fórmula 4.2.
Rxy = ∑ ∑ x[m0 , n0 ]y[m + m0 , n + n0 ]
(4.1)
∑ ∑0 ∑0 x[m0, n0, d]y[m + m0, n + n0, d]
(4.2)
m0 n 0
d m n
Para determinar si un objeto está o no en la imagen el resultado de la correlación debe ser mayor
a b que es un parámetro que resulta del entrenamiento del modelo. Si se da esta condición
significará que si aparece este objeto y los pı́xels correspondientes al objeto corresponderán .
Un problema común es que si un objeto aparece en la imagen el resultado de la correlación
puede dar afirmativo en diferentes zonas de la imagen y éstas se superponen. Para solucionarlo
se utiliza el algortimo Non-maximum suppression que consiste en ordenar de mayor a menor
todas las detecciones obtenidas mediante la correlación e ir comprobando si las regiones de
éstas se superponen. En el caso que se superpongan se deberá fijar cuanto es lo máximo que se
Dolores Blanco
23
4.5. PIRÁMIDE
Detección de objetos y anotación de imágenes en el iPhone
Figura 4.3: Representación HOG para distintas imágenes.
permite y si no excede esa porción se dará por buena la detección. En la figura 4.4 podemos ver
un ejemplo con diferentes usos de este algoritmo.
4.5.
Pirámide
El tamaño del objeto en una imagen es una cosa que se desconoce es por este motivo se
realiza un escalado de la imagen. Este escalado se denomina pirámide y consiste en ir reduciendo la imagen original a imágenes más pequeñas. Con cada una de estas imágenes se realiza el
proceso explicado anteriormente, por lo que con esto se consigue poder detectar el objeto con
tamaños más grandes.
i
El factor que se reduce cada vez es 2 n siendo i el nivel en el que se está de la pirámide y
−
n el número de niveles. La imagen original corresponderı́a al nivel 0 y ası́ hasta un total de n.
Puede pasar que se reduzca tanto la imagen que el modelo sea mayor que ésta, si esto ocurre se
Dolores Blanco
24
4.6. RESULTADOS
Detección de objetos y anotación de imágenes en el iPhone
Figura 4.4: Ejemplos del uso del algoritmo nms para distintas áreas de solapamiento con imágenes de [5].
deja de reducir la imagen.
4.6.
Resultados
Para que funcione correctamente un detector es muy importante el tiempo que tarde en
ejecutarse. En la figura 4.6 aparece el tiempo que se tarda para el cálculo de los descriptores
HOG (a), para la correlación (b) y el tiempo total (c). Esta aplicación se ha probado para iPhone
4S y para iPhone 5, los tiempos de la figura 4.6 corresponde para el iPhone 5. Para iPhone 4S
los tiempos son aproximadamente el doble.
Las caracterı́sticas del detector son:
Tamaño de la celda : 8 pı́xels.
Dolores Blanco
25
4.7. FUTURO
Detección de objetos y anotación de imágenes en el iPhone
Figura 4.5: Pirámide de una imágen.
Tamaño máximo de una imagen: 2448x3264 pı́xels.
Niveles pirámide: 10.
Tamaño del modelo: 11x7 bloques.
Es importante ver que los tiempos son suficientemente bajos para que el detector pueda
funcionar bien en tiempo real.
4.7.
Futuro
El detector implementado sólo es una parte de una aplicación que se sigue desarrollando.
Esta aplicación tiene como objetivo poder entrenar tus propios detectores y estarı́a relacionada
con la de LabelMe 3 compartiendo los usuarios, imágenes y anotaciones. De esta manera los
usuarios podrı́an utilizar las imágenes anotadas mediante LabelMe para crear detectores. El
usuario podrı́a escoger un objeto y entrenar el detector en el servidor ya que hacerlo en el
iPhone supondrı́a mucho más tiempo y consumo de recursos. Una vez se haya entrenado el
detector y estén listos los parámetros, éstos se enviarán al dispositivo y ası́ se podrá comprobar
el resultado. Una opción que está pensada añadir es configurar un comportamiento para cuando
se detecte el objeto, como tomar un a imagen de ese momento o enviar un email.
Dolores Blanco
26
Detección de objetos y anotación de imágenes en el iPhone
8
4
7
3.5
6
3
5
2.5
Time (s)
Time (s)
4.7. FUTURO
4
3
2
1.5
2
1
1
0.5
0
10
20
30
40
50
60
70
Image resolution (%)
80
90
0
10
100
(a) Tiempo cálculo de los descriptores HOG
20
30
40
50
60
70
Image resolution (%)
80
90
100
(b) Tiempo cálculo correlación
80
70
60
Time (s)
50
40
30
20
10
0
10
20
30
40
50
60
70
Image resolution (%)
80
90
100
(c) Tiempo total de detección
Figura 4.6: Tiempos para iPhone5.
Dolores Blanco
27
Detección de objetos y anotación de imágenes en el iPhone
Capı́tulo 5
Conclusiones
La aplicación de LabelMe para dispositivos móviles en este momento lleva dos meses en
la AppStore de Apple y cuenta con más de 200 descargas. Todavı́a es pronto para saber su
aceptación por parte de los investigadores de Computer Vision pero creemos que se ha cumplido
el objetivo principal que era facilitar la recolección de anotaciones en imágenes de manera
sencilla para el usuario.
De cara al futuro serı́a útil incorporar nuevas funcionalidades a la aplicación de LabelMe.
Algunos ejemplos de estas nuevas funcionalidades son: añadir la opción de crear nuevas colecciones dentro de la colección de la aplicación o que la comunicación entre el servidor y
la aplicación sea bidireccional, es decir, que modifiques donde modifiques las anotaciones se
sincronice en los dos extremos.
Por la parte del detector en dispositivos móviles tras hacer esta primera aproximación hemos
comprobado que el detector desarrollado puede funcionar correctamente a tiempo real en estos
dispositivos. Este detector ha sido una primera aproximación, por lo que todavı́a tiene margen
de mejora. Además los componentes de este tipo de dispositivos evolucionan constantemente
mejorando sus prestaciones, por ejemplo, la velocidad del procesador del iPhone 5 es el doble
respecto a la del iPhone 4S. Esto supone que cada vez se puedan utilizar detectores más complejos y con ello mejorar su comportamiento hasta el punto que estos dispositivos se conviertan
en la nueva herramienta para los investigadores.
Dolores Blanco
28
BIBLIOGRAFÍA
Detección de objetos y anotación de imágenes en el iPhone
Bibliografı́a
[1] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In Computer
Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on,
volume 1, pages 886 –893 vol. 1, june 2005.
[2] P.F. Felzenszwalb, R.B. Girshick, D. McAllester, and D. Ramanan. Object detection with
discriminatively trained part-based models. Pattern Analysis and Machine Intelligence,
IEEE Transactions on, 32(9):1627 –1645, sept. 2010.
[3] A. Torralba, B.C. Russell, and J. Yuen. Labelme: Online image annotation and applications.
Proceedings of the IEEE, 98(8):1467 –1484, aug. 2010.
[4] K. Murphy W. T. Freeman B. Russell, A. Torralba. Labelme: a database and web-based
tool for image annotation. International Journal of Computer Vision, 2007.
[5] M. Everingham, L. Van Gool, C. K. I. Williams, J. Winn, and A. Zisserman. The PASCAL Visual Object Classes Challenge 2007 (VOC2007) Results.
http://www.pascal-
network.org/challenges/VOC/voc2007/workshop/index.html.
Dolores Blanco
29
Descargar