trabajo fin de grado evaluación y optimización de un...

44
Graduado en Ingeniería Informática Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros Informáticos TRABAJO FIN DE GRADO Evaluación y optimización de un descriptor de características Autor: Alejandro Cobo Cabornero Tutor: Iago Suárez Director: Luis Baumela Molina MADRID, 3 DE JUNIO DE 2019

Upload: others

Post on 15-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Graduado en Ingeniería Informática

Universidad Politécnica de Madrid

Escuela Técnica Superior deIngenieros Informáticos

TRABAJO FIN DE GRADO

Evaluación y optimización de un descriptor decaracterísticas

Autor: Alejandro Cobo Cabornero

Tutor: Iago Suárez

Director: Luis Baumela Molina

MADRID, 3 DE JUNIO DE 2019

Page 2: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

ÍNDICE1. Introducción y Objetivos 1

2. Estado del Arte 32.1. Detección de Características . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1. Detección de esquinas . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.2. Detección de manchas . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.3. Detección de segmentos rectilíneos . . . . . . . . . . . . . . . . 4

2.2. Descripción de Características . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1. Descriptores ingenieriles . . . . . . . . . . . . . . . . . . . . . . 4

2.2.2. Descriptores basados en aprendizaje automático . . . . . . . . . . 6

2.3. Matching de Características . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Evaluación de Riesgos 9

4. Evaluación y optimización de un descriptor de características 104.1. Evaluación del descriptor de características . . . . . . . . . . . . . . . . 10

4.2. Optimización del descriptor . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.3. Aplicación de Realidad Aumentada . . . . . . . . . . . . . . . . . . . . 16

5. Experimentos y resultados 185.1. Gráficas Precision-Recall . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.2. Tiempos de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6. Conclusiones 22

7. Líneas futuras 23

8. Referencias 24

A. Guía sobre la Transparent API de OpenCV 27

Page 3: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

ÍNDICE DE FIGURAS1. Ejemplo de sub-regiones e histograma empelados por SIFT en el proceso

de descripción de puntos característicos. Figura tomada de [2]. . . . . . . 5

2. Regiones de pares de muestras (primera fila) y heat maps de los pesos

espaciales (segunda fila) empleados por BRIEF, BRISK, ORB, BinBoost

y BELID. Figura tomada de [21]. . . . . . . . . . . . . . . . . . . . . . . 7

3. Funcionamiento de BELID. Se calculan los valores medios de gris de los

píxeles de las cajas rojas y azules. Luego, para cada par de cajas rojas

y azules (weak learner) se restan los valores medios de gris, obteniendo

f(x). Se aplican una serie de umbrales para obtener las respuestas h(x) y,

finalmente, se multiplica por la matriz B para producir el descriptor D(x).Figura tomada de [21]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4. Ejemplo del procedimiento de descripción de puntos característicos em-

pleado por BELID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5. Regiones de los weak learners sobre la imagen anterior rotada 45o. Puede

apreciarse que las cajas no rotan. . . . . . . . . . . . . . . . . . . . . . . 12

6. Distancia L2 entre descriptores del mismo punto y distintos puntos en

función del ángulo de giro de una imagen. (a) BELID, (b) ORB. . . . . . 13

7. Imagen utilizada en los experimentos. . . . . . . . . . . . . . . . . . . . 13

8. Comparación del porcentaje de correspondencias correctas según la tras-

lación aplicada a una imagen para (a) 500 puntos detectados con ORB y

(b) 500 puntos detectados con SIFT. . . . . . . . . . . . . . . . . . . . . 14

9. Comparación del porcentaje de correspondencias correctas según la esca-

la aplicada a una imagen para (a) 500 puntos detectados con ORB y (b)

500 puntos detectados con SIFT. . . . . . . . . . . . . . . . . . . . . . . 14

10. Comparación del porcentaje de correspondencias correctas según el ángu-

lo de rotación de la imagen entre varios descriptores con (a) 500 puntos

detectados con ORB y (b) 500 puntos detectados con SIFT. . . . . . . . . 15

11. Proceso de optimización llevado a cabo para el cálculo de los descriptores

a partir de las respuestas de los weak learners y sus pesos. . . . . . . . . 16

12. Captura del funcionamiento de la aplicación en la que un cubo es proyec-

tado sobre el patrón captado por la cámara. . . . . . . . . . . . . . . . . 17

13. Ejemplos de imágenes del dataset. (a) y (b): transformación de rotación

+ zoom. (c) y (d): cambio de perspectiva. (e) y (f): desenfoque. (g): com-

presión JPEG. (h): cambio de iluminación. . . . . . . . . . . . . . . . . 18

14. Ejemplo de correspondencias entre puntos característicos de dos imáge-

nes obtenidas con SURF. . . . . . . . . . . . . . . . . . . . . . . . . . . 19

15. Resultados obtenidos para cada conjunto de imágenes en el dataset. . . . 20

16. Resultado de la comparativa entre varios descriptores usando toda la base

de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

II

Page 4: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

ÍNDICE DE CUADROS1. Tiempo medio de ejecución (en milisegundos) del proceso de descripción

de 2 imágenes para varios descriptores. . . . . . . . . . . . . . . . . . . . 21

III

Page 5: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Resumen

Distintas características como esquinas, manchas o segmentos rectilíneos

nos permiten reconocer objetos en imágenes digitales. Generar una descrip-

ción compacta, pero a la vez discriminativa de estas características es un pa-

so clave en muchas aplicaciones como Realidad Aumentada, Structure FromMotion, SLAM, etc. BELID es un reciente descriptor creado en el Grupo de

Visión por Computador y Robótica Aérea de la UPM y en este trabajo mos-

tramos un detallado análisis de su comportamiento en conjunto con una im-

plementación eficiente en C++ que permite su ejecución en dispositivos mó-

viles. Además se genera una guía de carácter general para la implementación

de algoritmos eficientes empleando la Transparent API de OpenCV.

Palabras clave: visión por computador, descriptor de imágenes, aprendi-

zaje automático, realidad aumentada.

IV

Page 6: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Abstract

Features like corners, blobs or line segments allow us to recognize objects

in digital images. Generating a compact but powerful description of these fea-

tures is a crucial step in several applications like Augmented Reality, Struc-

ture From Motion, SLAM, etc. BELID is a recent image feature descriptor

created by the Computer Vision for Aerial Robotics group of the UPM. In this

work we show a detailed analysis of its behavior and we propose an efficient

implementation in C++ code that allows its usage in low-poer devices such as

smartphones, tablets or robots. We also generate a general purpose guide of

how to implement efficient algorithms using the OpenCV’s Transparent API.

Keywords: computer vision, feature descriptor, machine learning, aug-

mented reality.

V

Page 7: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

1. INTRODUCCIÓN Y OBJETIVOSEl reconocimiento de objetos es una de las tareas más complejas y demandadas en el

ámbito de la visión por computador. La dificultad de este reconocimiento reside princi-

palmente en la diversidad con la que un mismo objeto o patrón puede presentarse en una

imagen en función de las distintas condiciones de iluminación, perspectiva, etc.

Un problema añadido es la extensión de la información recibida, pues una imagen di-

gital puede constar de millones de píxeles y analizar todos ellos en tiempo real es compu-

tacionalmente muy costoso. Por este motivo es usual reconocer los patrones en base a un

conjunto de elementos o estructuras locales de la imagen, conocidos en la literatura ingle-

sa como “features” (características) de bajo nivel como pueden ser esquinas [1], manchas

[2] o líneas [3].

El flujo de trabajo más común para la detección de objetos en base a estas caracterís-

ticas suele requerir en un primer lugar de un método detector, que sea capaz de detectar

esas características de forma robusta a diferentes condiciones de iluminación, ruido, es-

cala o punto de vista. En segundo lugar, de un algoritmo descriptor que represente esas

características de una forma compacta y representativa. Por último un método de estima-

ción robusta de modelos que permita detectar si las características halladas en una imagen

corresponden a las del patrón aprendido.

En el Grupo de Visión por Computador y Robótica Aérea se ha desarrollado durante

los años 2018 y 2019 BELID, un descriptor de características que es capaz de describir de

forma rápida las características de interés detectadas en una imagen. El cometido de este

Trabajo Fin de Grado es el de evaluar y optimizar ese descriptor para así poder alcanzar

la eficiencia computacional necesaria para su uso en dispositivos móviles.

Las tecnologías que se han empleado para la evaluación y optimización de este des-

criptor son las siguientes:

C++: Lenguaje de programación creado en 1979 que añade al lenguaje C la mani-

pulación de objetos. Es un lenguaje de programación multiparadigma, puesto que

soporta varios paradigmas, como la programación estructurada y la programación

orientada a objetos. Se trata de un lenguaje que permite implementaciones muy

eficientes, por lo que resulta idóneo para labores de optimización de rendimiento.

OpenCV: Se trata de una librería con interfaces en Python, Java, C++ y C que con-

tiene funcionalidades útiles para aplicaciones de visión por computador y permite

el empleo de aceleración hardware para una implementación eficiente.

OpenCL: Herramienta utilizada por OpenCV que permite el desarrollo de aplica-

ciones que se ejecutan tanto en la CPU como en la GPU del computador.

Android: Sistema operativo presente en dispositivos móviles basado en Linux. Es,

actualmente, el sistema operativo móvil más extendido del mundo.

En la Sección 2 se explican los términos básicos del ámbito en el que se ha trabaja-

do en este TFG y se realiza un análisis del estado del arte de los diferentes algoritmos y

métodos existentes. En la Sección 3 se realiza una evaluación de los riesgos y ventajas

1

Page 8: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

que tiene el uso del descriptor y se evalúan otras posibles soluciones. En la Sección 4 se

detalla el proceso de descripción de características empleado por el descriptor en el que se

centrará este TFG y se muestran los resultados obtenidos en varias pruebas que lo compa-

ran con otros descriptores, además de señalar el proceso de optimización llevado a cabo.

En la Sección 5 se describen los experimentos llevados a cabo y los resultados obtenidos.

En la sección 6 se aportan unas conclusiones sobre el trabajo realizado en este TFG. En

la Sección 7 se sugieren varias mejoras que pueden aumentar el rendimiento y reducir el

tiempo de cómputo del descriptor. Por último, se ha realizado en paralelo una guía sobre

el uso de la Transparent API de OpenCV, que permite usar aceleración hardware en có-

digo de OpenCV. Se ha redactado en inglés con el objetivo de ser publicada en Internet

para ayudar a usuarios de la Transparent API a entender mejor el funcionamiento de esta

herramienta. Se ha añadido en el Apéndice A.

2

Page 9: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

2. ESTADO DEL ARTE

2.1. Detección de CaracterísticasPara representar y localizar objetos de forma eficaz es necesario discriminar de todos

los píxeles de una imagen cuáles de ellos son de mayor interés. Estas regiones de interés

corresponden con características físicas de los objetos como pueden ser bordes o cambios

de textura que en una imagen digital dan lugar a un cambio significativo de nivel de gris.

Este cambio de nivel de gris en la imagen es el que forma características como manchas,

esquinas o segmentos rectilíneos a través de los cuales un objeto puede reconocerse.

A continuación detallamos los algoritmos más conocidos para la detección de cada

uno de este tipo de características.

2.1.1. Detección de esquinas

La forma más intuitiva de localizar puntos de interés es buscar esquinas. Las esquinas

en una imagen presentan una variación de intensidad en los valores de los píxeles tanto

en la dirección horizontal como en la vertical, por lo que resulta sencillo encontrar su

posición exacta en varias imágenes.

Algunos de los detectores de esquinas más usados son:

Detector de esquinas de Harris [4]: Se trata de un algoritmo que detecta puntos

característicos (generalmente esquinas) como regiones en la que existe un cambio

significativo de niveles de gris en varias direcciones. Esto se puede hacer de forma

sencilla empleando la matriz de auto-correlaciones de los gradientes, en concreto

buscando regiones de la imagen donde los dos autovalores de la matriz son signi-

ficativos. El detector de puntos de Harris lo hace empleando el determinante y la

traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5] mira tan

solo el menor de los autovalores.

Features from Accelerated Segment Test (FAST) [6]: es una alternativa a otros

detectores que permite una detección rápida y resulta fácilmente integrable en apli-

caciones de tiempo real. Es un detector basado en Machine Learning que selecciona

aquellos píxeles en los que la intensidad de sus vecinos es lo suficientemente dife-

rente a la suya.

2.1.2. Detección de manchas

Una alternativa a la detección de esquinas es la detección de manchas o regiones

reconocibles en la imagen dados los valores de intensidad de los píxeles. Permiten obtener

información sobre la imagen que no se puede conseguir con detectores de esquinas. Estos

detectores suelen generar mejores resultados que los detectores de esquinas, pero son

también computacionalmente más costosos.

Los principales métodos empleados en los detectores de manchas son:

Laplaciana de la Gaussiana: consiste en aplicar un filtro gaussiano y seguida-

mente un operador laplaciano sobre la imagen. El resultado depende de la escala

3

Page 10: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

utilizada (valor σ en el filtro gaussiano), de modo que se aplica varias veces con

distintas escalas, formando un espacio-escala y buscando los puntos en este espacio

3D.

Diferencia de Gaussianas: partiendo de la representación de la imagen como espacio-

escala, una aproximación al operador Laplaciano se puede conseguir mediante la

diferencia de dos imágenes suavizadas con filtros gaussianos a distintas escalas.

Determinante de la matriz Hessiana: dada la matriz Hessiana de la imagen en

espacio-escala, los máximos de la función definida por el determinante de esta ma-

triz permiten obtener regiones características de la imagen robustas a transforma-

ciones afines.

2.1.3. Detección de segmentos rectilíneos

Los segmentos rectilíneos son otras características importantes que suelen ser más

robustas ante cambios de iluminación que las esquinas o las manchas. La aproximación

clásica para la detección de líneas en una imagen suele consistir en el uso de la transforma-

da Hough [7] o de sus versiones optimizadas como la transformada Hough probabilística.

No obstante, todos estos métodos son demasiado costosos debido a su carácter global, en

consecuencia, han surgido nuevas aproximaciones basadas en el agrupamiento local de

píxeles como LSD [8] o EDLines [9]. Estos métodos agrupan un conjunto alineado de pí-

xeles que comparten una dirección común del gradiente y aseguran su validez empleando

un esquema probabilístico basado en el número de falsas alarmas (NFA). El punto más

destacable de estos detectores es que son computacionalmente muy eficientes y por tanto

son válidos para su uso en aplicaciones en tiempo real. Recientemente también se han

propuesto métodos que detectan líneas como varios segmentos alineados entre sí [3].

2.2. Descripción de CaracterísticasUna vez se han detectado las características de interés para el reconocimiento del

objeto, la siguiente tarea consiste en obtener una representación compacta y robusta de

estas “partes” de la imagen. Si esta representación se hace cuidadosamente, el descriptor

obtenido debería de ser robusto ante cambios de iluminación y en cierta medida robusto

a transformaciones geométricas como la isometría o la afinidad.

2.2.1. Descriptores ingenieriles

SIFT [2]: se trata de un detector y descriptor de puntos característicos, invarian-

tes frente a cambios de escala y rotación, y robustos ante transformaciones afines,

cambios de perspectiva, ruido y cambios de iluminación. Para la extracción de los

puntos, utiliza un filtrado en cascada sobre la imagen para reducir el coste compu-

tacional, de modo que las operaciones más caras solo se aplican sobre regiones de

la imagen que pasan un test inicial. Los pasos principales que se llevan a cabo son:

4

Page 11: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

1. Detección de extremos en el espacio de escalas: se buscan posibles puntos de

interés en todas las escalas usando una diferencia de Gaussianas.

2. Obtención de puntos de interés: dados los posibles candidatos obtenidos en el

paso anterior, se seleccionan los puntos de interés en base a mediciones sobre

su estabilidad.

3. Asignación de orientación: se crea una rejilla de 4x4 con las orientaciones

y magnitudes del gradiente de la imagen en una región alrededor del punto.

Posteriormente, se utiliza un histograma de orientaciones que resume los con-

tenidos de las 4x4 sub-regiones. En la Figura 1 se muestra una representación

de este proceso.

4. Descripción de los puntos de interés: los gradientes locales de la imagen se

miden en la correspondiente escala en la región de cada punto de interés.

Figura 1: Ejemplo de sub-regiones e histograma empelados por SIFT en el proceso de

descripción de puntos característicos. Figura tomada de [2].

SURF [10]: este detector y descriptor de puntos característicos también emplea un

filtrado en cascada sobre la imagen, pero empleando la imagen integral y filtros

cuadrados para realizar una aproximación con menos coste computacional. Para

la detección de puntos característicos, se emplea el determinante de la matriz hes-

siana. En cuanto a la fase de descripción, para la asignación de la orientación se

emplean las respuestas del wavelet de Haar. Luego, se construye una región cua-

drada centrada en el punto de interés orientada según el paso anterior. Esta región

se subdivide en 16 regiones, en las que se calculan las respuestas del wavelet deHaar y se aplica un filtro gaussiano. Finalmente, el descriptor se construye con la

unión de estas respuestas.

BRISK [11]: los puntos de interés son seleccionados a través de la imagen y del es-

pacio de escalas. Para una mayor eficiencia computacional, los puntos de interés son

5

Page 12: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

detectados en las capas de la pirámide de la imagen, y se emplea una función cua-

drática para obtener su localización y escala. El descriptor binario de cada punto de

interés se construye en base a la concatenación de los resultados de comparaciones

de iluminación siguiendo un patrón compuesto por círculos, tal como se muestra en

la Figura 2

2.2.2. Descriptores basados en aprendizaje automático

Recientemente, han surgido varios descriptores basados en aprendizaje automático

que realizan esta tarea de forma muy eficaz, superando a otros descriptores clásicos. Al-

gunos de los descriptores más utilizados que se han estudiado para este Trabajo Fin de

Grado son:

ORB [12]: es un detector y descriptor de puntos de interés basado en el detector

FAST y el descriptor BRIEF [13], añadiendo la orientación de los puntos obtenidos

con FAST (oFAST) y resolviendo los problemas que presenta BRIEF ante transfor-

maciones de rotación (rBRIEF). Este descriptor es uno de los primeros aprendidos

ya que aprende sus comparaciones binarias de tal modo que se minimiza la corre-

lación entre ellas.

VGG [14]: Descriptor de imágenes creado por el Oxford Visual Geometry Groupque aprende mediante optimización convexa las posiciones de la mancha detecta-

da donde debe realizar las mediciones. Este descriptor usa patrones geométricos

similares a DAISY [15] y genera un descriptor en coma flotante.

FP-Boost [16]: se trata de un framework basado en la técnica de Boosting [17]

para el aprendizaje automático de descriptores de características invariantes ante

cambios de perspectiva e iluminación. Se realiza una correspondencia no lineal

entre los patches de entrada y el espacio de características con el empleo de weaklearners (medidas locales sobre la imagen) basados en el gradiente.

Boosting es un meta-algoritmo de aprendizaje automático en que se entrenan distin-

tos clasificadores de manera incremental, en el que el conjunto de entrenamiento de

cada clasificador se muestrea de manera selectiva en función de aquellas instancias

mal clasificadas en el paso anterior.

BinBoost [18]: es una extensión de FP-Boost que permite entrenar descriptores

binarios, reduciendo considerablemente el tiempo de cálculo de correspondencias

entre descriptores. Cada bit del descriptor se calcula con una función hash binaria.

Deep Learning: recientemente han surgido varios algoritmos [19, 20] de apren-

dizaje automático que emplean Deep Learning para generar descriptores. Si bien

consiguen un rendimiento mejor que el de SIFT en muchos escenarios, su elevado

coste computacional los hace inviables en aplicaciones de tiempo real para disposi-

tivos móviles.

6

Page 13: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Figura 2: Regiones de pares de muestras (primera fila) y heat maps de los pesos espaciales

(segunda fila) empleados por BRIEF, BRISK, ORB, BinBoost y BELID. Figura tomada

de [21].

2.3. Matching de CaracterísticasUna vez calculados los descriptores, para reconocer un objeto representado por una

serie de ellos debemos ser capaces de determinar si los descriptores pertenecientes a las

características de una determinada imagen corresponden o no con aquellos que conoce-

mos de nuestro objeto. Para ello debe medirse la distancia entre los descriptores alma-

cenados (referencia) y los detectados en la misma imagen, obteniendo así las posibles

correspondencias.

Para los descriptores en coma flotante, la forma más habitual de medir la distancia es

la norma L2 (también llamada distancia euclídea). La norma L2 entre dos descriptores

D1 = d11, d12, ..., d1n y D2 = d21, d22, ..., d2n de tamaño n se define como:

‖D1−D2‖ =

√√√√n∑

i=1

(d1i − d2i)2

donde D1, D2 ∈ Rn y d1i, d2i ∈ R ∀i.

Para los descriptores binarios, se suele utilizar la distancia de Hamming, definida co-

mo el número de bits distintos entre los descriptores. Dados dos descriptores binarios

D1 = d11, d12, ..., d1n y D2 = d21, d22, ..., d2n de tamaño n:

dhamming(D1, D2) =n∑

i=1

(d1i ⊕ d2i)

donde D1, D2 ∈ {0, 1}n y d1i, d2i ∈ {0, 1} ∀i.Una distancia pequeña entre dos descriptores indica que seguramente estén descri-

biendo el mismo punto en dos imágenes distintas.

Los dos tipos de matchers más comúnmente utilizados son los siguientes:

7

Page 14: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

1. Brute force matching: dados dos conjuntos de descriptores, D1 y D2, para cada

descriptor de D1 calcula la distancia con cada descriptor de D2 y lo empareja con

el que esté más cerca. También existe la opción de hacer cross check, de modo que

solo empareja el descriptor i de D1 con el j de D2 si j e i también son el mejor

emparejamiento al comparar los descriptores de D2 con los de D1.

2. FLANN Based matching [22]: se trata de una librería que contiene una colección

de varios algoritmos optimizados para la búsqueda del vecino más cercano en da-tasets grandes. Los dos tipos de algoritmos más usados son:

Basados en KD-Tree: permiten una aproximación eficiente del algoritmo de

búsqueda del vecino más cercano con el uso de árboles KD que van separan-

do los datos eligiendo una dimensión aleatoria entre las D dimensiones con

mayor varianza. Son generalmente usados con descriptores en coma flotante

(SIFT, SURF, etc.).

Basados en Local Sensitive Hashing: son algoritmos que usan funciones

hash para agrupar objetos similares en el mismo valor. Se usan con descripto-

res binarios (BRISK, ORB, etc.).

8

Page 15: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

3. EVALUACIÓN DE RIESGOSLa principal ventaja que tiene el descriptor en el que se centrará este TFG, tal y como

se verá en la Sección 5, es el bajo coste computacional que tiene y su alto rendimiento.

Por otra parte, como se verá en la Sección 4, existen ciertos inconvenientes ligados al

método empleado para construir los descriptores, como es la robustez ante la rotación.

Para comparar este descriptor con otros del estado del arte, se han llevado a cabo ex-

perimentos que ponen en manifiesto el buen rendimiento y reducido coste computacional

del descriptor, siendo una opción viable para la integración en aplicaciones en tiempo

real, sobre todo en dispositivos de bajas capacidades computacionales.

9

Page 16: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

4. EVALUACIÓN Y OPTIMIZACIÓN DE UN DESCRIP-TOR DE CARACTERÍSTICAS

Este Trabajo Fin de Grado presenta la implementación en C++ de un descriptor basa-

do en Machine Learning, concretamente en la técnica de Boosting, así como una demos-

tración en una aplicación de Realidad Aumentada en la plataforma Android.

Este descriptor permite identificar una superficie sobre la que se proyecta un objeto

3D virtual. Es importante, en este caso, la eficiencia con la que lo hace, pues debe ser

capaz de hacerlo en tiempo real y teniendo en cuenta las limitaciones de los dispositivos

móviles.

4.1. Evaluación del descriptor de característicasEl descriptor de imágenes en el que se centrará este Trabajo Fin de Grado es un des-

criptor desarrollado por el grupo de Visión por Computador y Robótica Aérea de la Es-

cuela Técnica Superior de Ingenieros Informáticos, llamado BELID (Boosted EfficientLocal Image Descriptor) [21].

Este descriptor utiliza la técnica de Boosting para entrenar un número de weak lear-ners cuyo trabajo es comparar el nivel medio de gris de dos regiones de la imagen para

determinar si representan la misma estructura. La eficiencia del descriptor surge del uso

de la imagen integral para el cálculo del nivel medio de gris de las regiones.

+1

-1

+1

-1

T

=

T

Figura 3: Funcionamiento de BELID. Se calculan los valores medios de gris de los píxeles

de las cajas rojas y azules. Luego, para cada par de cajas rojas y azules (weak learner) se

restan los valores medios de gris, obteniendo f(x). Se aplican una serie de umbrales para

obtener las respuestas h(x) y, finalmente, se multiplica por la matriz B para producir el

descriptor D(x). Figura tomada de [21].

La imagen integral es una estructura de datos que permite calcular el área de una

región cuadrada en tiempo constante con solo 4 accesos a memoria, independientemente

del tamaño de la región. Su valor para cada punto (x, y) en la imagen se define como:

I(x, y) =∑x′≤xy′≤y

i(x′, y′)

10

Page 17: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

donde i(x, y) es el valor del píxel en el punto (x, y).Una vez calculada la imagen integral, para calcular la suma de los valores de los

píxeles en una región cuadrada con vértices A, B, C y D se realiza la siguiente operación:

I(D) + I(A)− I(B)− I(C)

En la Figura 4 pueden verse estas regiones cuadradas para un conjunto de puntos

característicos. Cada weak learner comparará los niveles de gris de la región en negro con

el de la región en blanco y, en función de si son lo suficientemente parecidos, devolverá 1 o

-1. En este caso, se han representado solo las regiones que utilizará el primer weak learner,

pero el descriptor usará varios para construir el resultado (actualmente hay versiones que

emplean 128, 256 y 512 weak learners).

Figura 4: Ejemplo del procedimiento de descripción de puntos característicos empleado

por BELID.

Uno de los problemas del descriptor es la rotación. Al rotar una imagen y sus puntos

característicos, las regiones de los weak learners no rotan y se obtienen peores resultados,

como se puede apreciar en la Figura 5.

11

Page 18: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Figura 5: Regiones de los weak learners sobre la imagen anterior rotada 45o. Puede apre-

ciarse que las cajas no rotan.

Para evaluar cómo puede afectar esto al proceso de descripción, se ha realizado un

experimento en el que se obtienen 500 puntos característicos de una imagen con ORB y,

a partir de ellos, sus descriptores con BELID. Entonces, la imagen se rota varias veces

junto con los puntos detectados. Para cada imagen rotada, se calculan los descriptores de

los puntos característicos rotados y se mide su norma L2 con los descriptores de la imagen

original.

En la Figura 6 se puede observar que la distancia L2 entre descriptores del mismo

punto varía en función del ángulo de rotación de la imagen. Concretamente, la distancia

es la mitad que la existente entre puntos distintos para BELID. En el caso de ORB, se ha

usado la norma L2 de Hamming, puesto que emplea descriptores binarios.

12

Page 19: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

(a) BELID. (b) ORB.

Figura 6: Distancia L2 entre descriptores del mismo punto y distintos puntos en función

del ángulo de giro de una imagen. (a) BELID, (b) ORB.

A priori, esto podría parecer un problema, pero solo si afecta al proceso del cálculo

de correspondencias entre imágenes. Para poder comparar el rendimiento entre los des-

criptores ante distintas transformaciones sobre una misma imagen, se han llevado a cabo

varios experimentos en los que se calcula el porcentaje de inliers de los descriptores, es

decir, cuántos de los descriptores de la imagen transformada son los que se encuentran a

una menor distancia de sus correspondientes en la imagen original. Cada experimento se

ha realizado detectando puntos característicos en la imagen mostrada en la Figura 7, pri-

mero con ORB y luego con SIFT. En los resultados obtenidos con los puntos detectados

con SIFT no aparece ORB porque su implementación en OpenCV no es compatible con

estos puntos.

Figura 7: Imagen utilizada en los experimentos.

13

Page 20: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

El primer experimento mide el rendimiento de los descriptores ante cambios de tras-

lación. En la Figura 8 se pueden observar los resultados obtenidos.

(a) Puntos ORB. (b) Puntos SIFT.

Figura 8: Comparación del porcentaje de correspondencias correctas según la traslación

aplicada a una imagen para (a) 500 puntos detectados con ORB y (b) 500 puntos detecta-

dos con SIFT.

Los resultados muestran que, excepto SURF y BRIEF, todos los descriptores son in-

variantes ante cambios de traslación.

El siguiente experimento realizado ha comprobado la robustez de los descriptores ante

cambios de escala. En la Figura 9 se muestran los resultados obtenidos.

(a) Puntos ORB. (b) Puntos SIFT.

Figura 9: Comparación del porcentaje de correspondencias correctas según la escala apli-

cada a una imagen para (a) 500 puntos detectados con ORB y (b) 500 puntos detectados

con SIFT.

Puede verse una gran diferencia en el rendimiento de BELID al usar puntos SIFT en

vez de puntos ORB. El descriptor es invariante a la escala al usar puntos ORB pero muy

sensible a ella al usar puntos SIFT.

Por último, se ha realizado un experimento que mide el rendimiento de los descriptores

ante cambios de rotación. En la Figura 10 pueden observarse los resultados obtenidos.

14

Page 21: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

(a) Puntos ORB. (b) Puntos SIFT.

Figura 10: Comparación del porcentaje de correspondencias correctas según el ángulo de

rotación de la imagen entre varios descriptores con (a) 500 puntos detectados con ORB y

(b) 500 puntos detectados con SIFT.

Como puede observarse, al utilizar puntos detectados con ORB, el rendimiento del

descriptor supera al de los demás, obteniendo casi un 100 % de correspondencias correctas

para cualquier ángulo de giro.

Sin embargo, al emplear puntos detectados con SIFT, el rendimiento es menor y solo

se obtienen resultados aceptables ante rotaciones de 90o, 180o y 270o. Esto puede ser

debido a la diferencia del cálculo de la orientación de los puntos detectados con ambos

algoritmos. Lo mismo puede aplicarse a la escala.

4.2. Optimización del descriptorCon el objetivo de integrar el descriptor en una aplicación de realidad aumentada en

dispositivos Android, se ha llevado a cabo un proceso de optimización del descriptor para

reducir lo máximo posible el tiempo de descripción de una imagen.

Las optimizaciones realizadas son:

Cálculo de los descriptores de los puntos en los márgenes de la imagen por sepa-

rado. Como es necesario reubicar los weak learners para que no se salgan de los

márgenes de la imagen, se calculan por separado estos puntos.

Encabezados precompilados para guardar la información de los descriptores.

Umbrales convertidos de números en coma flotante a números enteros.

Uso de paralelismo en la CPU con la función parallel for de OpenCV.

Comparación de la suma de los valores de gris en vez del valor medio en las cajas.

Optimización del producto de matrices. Tal como se ha visto en la Figura 3, el

cálculo de los descriptores se realiza:

D = H ·B

15

Page 22: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

donde D es la matriz N × nDims con los N descriptores, H la matriz N × nWLscon las respuestas de los weak learners y B la matriz nWLs × nDims con los

pesos de los weak learners.

Una forma de optimizar el producto entre matrices es utilizar BT en lugar de B y

multiplicar las matrices por filas para así acceder a posiciones de memoria conti-

guas, de modo que se hace un mejor uso de la memoria caché.

Por último, la matriz H solo contiene dos tipos de valores: 1 y −1, por lo que no

es necesario realizar el producto, sino que basta con comprobar su valor y tomar el

peso en B positivo o negativo y realizar la suma.

Figura 11: Proceso de optimización llevado a cabo para el cálculo de los descriptores a

partir de las respuestas de los weak learners y sus pesos.

4.3. Aplicación de Realidad AumentadaPara poner en manifiesto la eficacia del descriptor, se ha integrado en una aplicación

de realidad aumentada en Android que utiliza la cámara del dispositivo para procesar

imágenes y buscar un patrón sobre el que proyectar un objeto 3D.

Para detectar el patrón, se detectan los puntos característicos de la imagen con ORB

y se calculan sus descriptores con BELID. El siguiente paso es comparar los descriptores

de la imagen con los del patrón usando el matcher FLANN.

Si se encuentra el patrón en la imagen, se calcula una homografía que describe la

transformación que proyecta los puntos del patrón en la imagen y se utiliza para proyectar

un objeto virtual y mostrarlo por pantalla.

Una de las limitaciones es el uso de descriptores en coma flotante por parte del des-

criptor, que hace que el cálculo de correspondencias sea más lento que con el empleo de

16

Page 23: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

descriptores binarios.

Figura 12: Captura del funcionamiento de la aplicación en la que un cubo es proyectado

sobre el patrón captado por la cámara.

17

Page 24: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

5. EXPERIMENTOS Y RESULTADOSCon el objetivo de poner en manifiesto la eficiencia de los algoritmos basados en

Machine Learning, en especial el algoritmo que se optimizará en este Trabajo Fin de

Grado, se ha desarrollado una comparativa entre varios descriptores, basada en el trabajo

de Mikolajczyk [23].

En esta comparativa se evalúan las gráficas 1-Precision - Recall y los tiempos de

ejecución de los descriptores sobre la base de datos de Mikolajczyk. Existen 8 conjuntos

de imágenes con distintas transformaciones (boat, bark, graf, wall, bikes, trees, ubc y

leuven). Para cada conjunto, se compara la primera imagen con todas las demás imágenes

del conjunto. En la Figura 13 se muestran ejemplos de las imágenes empleadas.

(a) Boat (b) Bark

(c) Graf (d) Wall

(e) Bikes (f) Trees

(g) UBC (h) Leuven

Figura 13: Ejemplos de imágenes del dataset. (a) y (b): transformación de rotación +

zoom. (c) y (d): cambio de perspectiva. (e) y (f): desenfoque. (g): compresión JPEG. (h):

cambio de iluminación.

En cada conjunto hay 6 imágenes, por lo que, en total, se realizan 40 correspondencias

entre imágenes. Para cada par, se calculan los puntos de interés con SURF. Luego, con

cada algoritmo descriptor a evaluar, se calculan los descriptores de los puntos detectados

18

Page 25: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

y se hace la correspondencia entre ellos, de modo que cada punto detectado en la imagen

de referencia se empareja con aquel que esté a menor distancia de la segunda imagen, en

base a la distancia L2 para los descriptores en coma flotante y a la distancia de Hamming

para los descriptores binarios.

Por último, se comprueban cuáles de estas correspondencias son válidas proyectando

los puntos de la imagen de referencia sobre la segunda con una homografía y comparando

el área de la intersección con el área de la unión de los puntos. Si el área de la intersec-

ción es igual o superior a la mitad del área de la unión se considera una correspondencia

correcta.

En la Figura 14 se puede observar un ejemplo de correspondencias válidas obtenidas

con este método sobre los descriptores de SURF.

Figura 14: Ejemplo de correspondencias entre puntos característicos de dos imágenes

obtenidas con SURF.

En base al número de correspondencias correctas e incorrectas, se obtiene la gráfica

1-precision - Recall. El Recall es el número de correspondencias correctas con respecto

al número total de correspondencias:

Recall =n◦ de corresp. correctas

n◦ total de corresp.

1-precision representa el número de correspondencias erróneas respecto a la suma entre

el número de correspondencias correctas e incorrectas.

1− precision =n◦ de corresp. incorrectas

n◦ de corresp. correctas + n◦ de corresp. incorrectas

5.1. Gráficas Precision-RecallEl resultado de esta comparativa se muestra en las Figuras 15 y 16. Se han comparado

los descriptores clásicos SIFT y SURF; los descriptores basados en Machine Learning e

implementados en OpenCV LBGM y BGM; la versión U-512 de BELID; y el descriptor

binario ORB. Un mayor área bajo la curva indica un mejor rendimiento del descriptor.

19

Page 26: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

(a) Boat (b) Bark

(c) Graf (d) Wall

(e) Bikes (f) Trees

(g) Ubc (h) Leuven

Figura 15: Resultados obtenidos para cada conjunto de imágenes en el dataset.

20

Page 27: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Figura 16: Resultado de la comparativa entre varios descriptores usando toda la base de

datos.

5.2. Tiempos de ejecuciónTambién se han medido los tiempos de ejecución de los descriptores. El Cuadro 1

muestra los resultados obtenidos. En cada frame, cada algoritmo descriptor calcula los

descriptores de la imagen de referencia y otra imagen del mismo conjunto, y finalmente

se calculan los tiempos medios de todos los frames.

Descriptor Tiempo de ejecución (ms)SIFT 49.1948

SURF 9.45102

OpenCV LBGM 38.5759

OpenCV BGM 36.154

BELID-U-512 0.94258

ORB 0.6512721

Cuadro 1: Tiempo medio de ejecución (en milisegundos) del proceso de descripción de 2

imágenes para varios descriptores.

21

Page 28: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

6. CONCLUSIONESDe la Figura 15 se pueden obtener las siguientes conclusiones:

BELID presenta más o menos el mismo rendimiento que SIFT ante transformacio-

nes de rotación y zoom. El rendimiento de ORB en estos casos es bastante peor que

el de los demás descriptores.

Si bien las imágenes de graf y wall presentan transformaciones de cambio de pers-

pectiva, resulta evidente que el problema de descripción de puntos característicos

en graf es más complicado, debido a la alta variación en las intensidades de los

píxeles. Puede apreciarse que el rendimiento de todos los descriptores es menor en

este caso.

BELID es especialmente eficaz en las pruebas de desenfoque, compresión JPEG y

cambios de iluminación.

En la Figura 16 se muestra un promedio del rendimiento de todos los descriptores

sobre toda la base de datos. BELID iguala a SIFT en cuanto a rendimiento, y supera a

ORB. Además, como se ha mostrado en el Cuadro 1, lo hace con un tiempo de ejecución

muy similar al de ORB y varios órdenes de magnitud inferior a SIFT.

El descriptor de características de imágenes ha logrado buenos resultados tanto de

rendimiento como de tiempos de ejecución, siendo comparable a SIFT en cuanto a calidad

de los descriptores generados y a ORB en cuanto a velocidad.

Los resultados obtenidos muestran que es mejor utilizar este descriptor con puntos ca-

racterísticos obtenidos con detectores de esquinas o con SURF. Su rendimiento es menor

al usar puntos SIFT.

El descriptor presenta un buen rendimiento en aplicaciones en tiempo real en disposi-

tivos con capacidad computacional limitada, resultando lo más costoso el cálculo de las

correspondencias debido al uso de descriptores en coma flotante.

22

Page 29: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

7. LÍNEAS FUTURASAlgunas de las mejoras que se pueden realizar sobre el descriptor son las siguientes:

Binarizar los descriptores generados: el cálculo de la distancia de Hamming en

el proceso de matching es más rápido y eficiente que el de la distancia L2 entre

descriptores. Una forma de mejorar los tiempos de ejecución en una aplicación

en tiempo real es usar descriptores binarios, por lo que puede resultar interesante

experimentar con diferentes algoritmos de binarización [24].

Usar BinBoost para generar descriptores binarios: otra alternativa al empleo de

algoritmos de binarización es generar directamente descriptores binarios mediante

BinBoost en lugar de AdaBoost.

Emplear LDA para optimizar los pesos de AdaBoost: el Análisis Discriminante

Lineal (LDA) puede tomar como variables los cuadrados de las diferencias entre

h(x) y h(y), donde h es la respuesta del weak learner y x e y dos patches de

la base de datos. Al usar como pesos la proyección lineal calculada con LDA en

AdaBoost se puede incrementar el rendimiento sin añadir un coste computacional

relevante.

Uso de la Transparent API de OpenCV para el cálculo de la imagen integral:el tiempo del cálculo de la imagen integral puede reducirse al ejecutarse en la GPU

en vez de la CPU.

23

Page 30: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

8. REFERENCIAS[1] E. Rosten, R. Porter y T. Drummond, «Faster and better: A machine learning ap-

proach to corner detection», IEEE transactions on pattern analysis and machineintelligence, vol. 32, n.o 1, págs. 105-119, 2008.

[2] D. G. Lowe, «Distinctive Image Features from Scale-Invariant Keypoints», Int.J. Comput. Vision, vol. 60, n.o 2, págs. 91-110, nov. de 2004, ISSN: 0920-5691.

DOI: 10.1023/B:VISI.0000029664.99615.94. dirección: https://doi.org/10.1023/B:VISI.0000029664.99615.94.

[3] I. Suárez, E. Muñoz, J. M. Buenaposada y L. Baumela, «FSG: A statistical ap-

proach to line detection via fast segments grouping», en 2018 IEEE/RSJ Internatio-nal Conference on Intelligent Robots and Systems (IROS), oct. de 2018, págs. 97-102.

DOI: 10.1109/IROS.2018.8594434.

[4] C. Harris y M. Stephens, «A combined corner and edge detector», en In Proc. ofFourth Alvey Vision Conference, 1988, págs. 147-151.

[5] J. Shi y C. Tomasi, «Good Features to Track», Ithaca, NY, USA, inf. téc., 1993.

[6] E. Rosten y T. Drummond, «Machine Learning for High-speed Corner Detection»,

en Proceedings of the 9th European Conference on Computer Vision - Volume PartI, ép. ECCV’06, Graz, Austria: Springer-Verlag, 2006, págs. 430-443, ISBN: 3-

540-33832-2, 978-3-540-33832-1. DOI: 10.1007/11744023_34. dirección:

http://dx.doi.org/10.1007/11744023_34.

[7] R. O. Duda y P. E. Hart, «Use of the Hough Transformation to Detect Lines and

Curves in Pictures», Commun. ACM, vol. 15, n.o 1, págs. 11-15, ene. de 1972,

ISSN: 0001-0782. DOI: 10.1145/361237.361242. dirección: http://doi.acm.org/10.1145/361237.361242.

[8] R. G. Von Gioi, J. Jakubowicz, J.-M. Morel y G. Randall, «LSD: A fast line seg-

ment detector with a false detection control», IEEE transactions on pattern analy-sis and machine intelligence, vol. 32, n.o 4, págs. 722-732, 2010.

[9] C. Akinlar y C. Topal, «Edlines: Real-time line segment detection by Edge Drawing

(ed).», en ICIP, B. Macq y P. Schelkens, eds., IEEE, 2011, págs. 2837-2840, ISBN:

978-1-4577-1304-0. dirección: http://dblp.uni-trier.de/db/conf/icip/icip2011.html#AkinlarT11.

[10] H. Bay, A. Ess, T. Tuytelaars y L. Van Gool, «Speeded-Up Robust Features (SURF)»,

Comput. Vis. Image Underst., vol. 110, n.o 3, págs. 346-359, jun. de 2008, ISSN:

1077-3142. DOI: 10.1016/j.cviu.2007.09.014. dirección: http://dx.doi.org/10.1016/j.cviu.2007.09.014.

[11] S. Leutenegger, M. Chli y R. Y. Siegwart, «BRISK: Binary Robust Invariant Scala-

ble Keypoints», en Proceedings of the 2011 International Conference on Compu-ter Vision, ép. ICCV ’11, Washington, DC, USA: IEEE Computer Society, 2011,

págs. 2548-2555, ISBN: 978-1-4577-1101-5. DOI: 10.1109/ICCV.2011.6126542. dirección: http://dx.doi.org/10.1109/ICCV.2011.6126542.

24

Page 31: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

[12] E. Rublee, V. Rabaud, K. Konolige y G. Bradski, «ORB: An Efficient Alternative

to SIFT or SURF», en Proceedings of the 2011 International Conference on Com-puter Vision, ép. ICCV ’11, Washington, DC, USA: IEEE Computer Society, 2011,

págs. 2564-2571, ISBN: 978-1-4577-1101-5. DOI: 10.1109/ICCV.2011.6126544. dirección: http://dx.doi.org/10.1109/ICCV.2011.6126544.

[13] M. Calonder, V. Lepetit, C. Strecha y P. Fua, «BRIEF: Binary Robust Independent

Elementary Features», en Proceedings of the 11th European Conference on Com-puter Vision: Part IV, ép. ECCV’10, Heraklion, Crete, Greece: Springer-Verlag,

2010, págs. 778-792, ISBN: 3-642-15560-X, 978-3-642-15560-4. dirección: http://dl.acm.org/citation.cfm?id=1888089.1888148.

[14] K. Simonyan, A. Vedaldi y A. Zisserman, «Learning local feature descriptors using

convex optimisation», IEEE Transactions on Pattern Analysis and Machine Intelli-gence, vol. 36, n.o 8, págs. 1573-1585, 2014.

[15] E. Tola, V. Lepetit y P. Fua, «A fast local descriptor for dense matching», en

2008 IEEE conference on computer vision and pattern recognition, IEEE, 2008,

págs. 1-8.

[16] T. Trzcinski, M. Christoudias, V. Lepetit y P. Fua, «Learning image descriptors

with the boosting-trick», en Advances in neural information processing systems,

2012, págs. 269-277.

[17] ——, «Learning Image Descriptors with the Boosting-Trick», en Advances in Neu-ral Information Processing Systems 25, F. Pereira, C. J. C. Burges, L. Bottou

y K. Q. Weinberger, eds., Curran Associates, Inc., 2012, págs. 269-277. direc-

ción: http://papers.nips.cc/paper/4848-learning-image-descriptors-with-the-boosting-trick.pdf.

[18] T. Trzcinski, M. Christoudias y V. Lepetit, «Learning image descriptors with boos-

ting», IEEE transactions on pattern analysis and machine intelligence, vol. 37,

n.o 3, págs. 597-610, 2015.

[19] X. Han, T. Leung, Y. Jia, R. Sukthankar y A. C. Berg, «MatchNet: Unifying Fea-

ture and Metric Learning for Patch-Based Matching», en The IEEE Conference onComputer Vision and Pattern Recognition (CVPR), jun. de 2015.

[20] Y. Tian, B. Fan y F. Wu, «L2-Net: Deep Learning of Discriminative Patch Des-

criptor in Euclidean Space», en 2017 IEEE Conference on Computer Vision andPattern Recognition (CVPR), jul. de 2017, págs. 6128-6136. DOI: 10.1109/CVPR.2017.649.

[21] I. Suárez, G. Sfeir, J. M. Buenaposada y L. Baumela, «BELID: Boosted Efficient

Local Image Descriptor», en IbPRIA 2019: 9th Iberian Conference on Pattern Re-cognition and Image Analysis, 2019, págs. 1-12.

25

Page 32: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

[22] M. Muja y D. G. Lowe, «Fast Approximate Nearest Neighbors with Automatic

Algorithm Configuration.», en VISAPP (1), A. Ranchordas y H. Araújo, eds., INS-

TICC Press, 2009, págs. 331-340, ISBN: 978-989-8111-69-2. dirección: http://dblp.uni-trier.de/db/conf/visapp/visapp2009-1.html#MujaL09.

[23] K. Mikolajczyk y C. Schmid, «A performance evaluation of local descriptors»,

Pattern Analysis and Machine Intelligence, IEEE Transactions on, vol. 27, n.o 10,

págs. 1615 -1630, oct. de 2005, ISSN: 0162-8828. DOI: 10.1109/TPAMI.2005.188. dirección: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1498756&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D1498756.

[24] J. Wang, W. Liu, S. Kumar y S.-F. Chang, «Learning to Hash for Indexing Big

Data - A Survey.», CoRR, vol. abs/1509.05472, 2015. dirección: http://dblp.uni-trier.de/db/journals/corr/corr1509.html#WangLKC15.

26

Page 33: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

A. GUÍA SOBRE LA TRANSPARENT API DE OPENCV

27

Page 34: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

OpenCV Transparent API performanceevaluation

A detailed report on the usage of hardwareacceleration in computer vision

Alejandro Cobo, Iago Suarez, Luis Baumela

Technical University of Madrid

June 3, 2019

Page 35: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Contents1 Introduction 2

1.1 Using the Transparent API . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Example code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Performance comparison 52.1 Chaining several consecutive operations . . . . . . . . . . . . . . . . . . 6

3 Supported functions 6

4 Good practices 74.1 Checking if the data is in GPU or CPU . . . . . . . . . . . . . . . . . . . 7

5 References 9

1

Page 36: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

1 IntroductionOpenCV Transparent API (or T-API) is a mechanism to add hardware acceleration to

some OpenCV features, reducing drastically the execution time of some tasks. This was

first introduced in OpenCV 2.4 with the Open CL (OCL) Module.

Since OpenCV 3.0, this module is hidden behind an interface called “Transparent

API”. This makes the function execution path to be selected dynamically at runtime. The

T-API encapsulates the data exchange with OCL devices and makes their usage very

simple.

1.1 Using the Transparent APIIn order to use the T-API you need to have at least one OpenCL compatible device. You

can check whether your computer have it or not by running clinfo on Linux:

sudo apt-get install clinfoclinfo

This should list all the devices you can use with OpenCL. Then, you must compile

OpenCV to work with OpenCL. You can run the following commands to compile and

install OpenCV:

# Dependenciessudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev \pkg-config libavcodec-dev libavformat-dev libswscale-dev# Clone OpenCV repository:git clone https://github.com/opencv/opencv# If you want to use extra modules:git clone https://github.com/opencv/opencv_contrib# Create the build directory and the install folder:cd opencvmkdir build && cd buildmkdir install# Compile OpenCV:cmake \-D CMAKE_BUILD_TYPE=RELEASE \-D OPENCV_ENABLE_NONFREE=ON \-D WITH_OPENCL=YES \-D CMAKE_INSTALL_PREFIX=./install \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \..

makesudo make install

2

Page 37: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

1.2 Example codeHere’s an example of how minimal are the changes that have to be done to the code to

use hardware acceleration. First, we write a simple program that reads an image, detects

and computes its keypoints with SURF and displays the execution time in seconds. I

recommend using a large image, like this one.

Python:

import cv2, time

start = time.time()img = cv2.imread("example.jpg", cv2.IMREAD_GRAYSCALE)

surf = cv2.xfeatures2d.SURF_create()kps = surf.detect(img)kps, desc = surf.compute(img, kps)

print(time.time() - start)

C++:

#include <iostream>

#include <opencv2/xfeatures2d.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui.hpp>

int main(int argc, char** argv){

double start = cv::getTickCount();cv::Mat img = cv::imread("../../example.jpg",

cv::IMREAD_GRAYSCALE);↪→

cv::Ptr<cv::Feature2D> surf =cv::xfeatures2d::SURF::create();↪→

std::vector<cv::KeyPoint> kps;surf->detect(img, kps);cv::Mat desc;surf->compute(img, kps, desc);

std::cout << ((double)cv::getTickCount() -start)/cv::getTickFrequency() << std::endl;↪→

}

3

Page 38: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

To make this code run on the GPU, we only have to convert the image from Mat to

UMat. Here’s the resulting code:

Python:

import cv2, time

start = time.time()img = cv2.UMat(cv2.imread("example.jpg",

cv2.IMREAD_GRAYSCALE))↪→

surf = cv2.xfeatures2d.SURF_create()kps = surf.detect(img)kps, desc = surf.compute(img, kps)

print(time.time() - start)

C++:

#include <iostream>

#include <opencv2/xfeatures2d.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui.hpp>

int main(int argc, char** argv){

double start = cv::getTickCount();cv::UMat img;cv::imread("../../example.jpg",

cv::IMREAD_GRAYSCALE).copyTo(img);↪→

cv::Ptr<cv::Feature2D> surf =cv::xfeatures2d::SURF::create();↪→

std::vector<cv::KeyPoint> kps;surf->detect(img, kps);cv::Mat desc;surf->compute(img, kps, desc);

std::cout << ((double)cv::getTickCount() -start)/cv::getTickFrequency() << std::endl;↪→

}

4

Page 39: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

This minor change has made the code run 10 times faster. Also, if we execute this

code in a computer without any OpenCL compatible device, we won’t get any error and

it will automatically run on the CPU.

It should be considered, however, that moving the image to the GPU takes some time,

and using the T-API only makes sense if we are doing some expensive operations on it.

The aim of this guide is to provide some good practices in the use of the T-API on

common computer vision tasks.

2 Performance comparisonIn order to measure the performance boost we can get using hardware acceleration, we

are going to compare SURF and ORB execution times both in the CPU and the GPU. To

do so, we will use the image dataset used in [1] and run both descriptors on all images.

In each iteration, we will read an image, copy it to the GPU, and perform the following

operations on both copies:

• Convert them to gray scale.

• Detect and compute their keypoints with SURF.

• Detect and compute their keypoints with ORB.

Note that we are using OpenCV default constructors for the descriptors, so SURF will

detect as many keypoints as possible whereas ORB will only detect 500.

The computer this test was executed on has the following hardware specifications:

• CPU: 8 x Intel Xeon E5620 @ 2.40GHz.

• GPU: NVIDIA Quadro K4200.

Table 1 shows the results we have obtained. We can see that the most expensive op-

erations (SURF detection and description) are also the ones with the biggest performance

boost. There are 48 images in total, and the average size is 889 x 646 pixels.

Process CPU GPUUpload process to the GPU - 0.353099

Color conversion 0.134374 0.14149

SURF Detection 43.4989 8.93069

SURF Description 111.656 5.49074

ORB Detection 9.599 10.6355

ORB Description 5.13525 5.90021

Total 170.023524 31.451729

Table 1: Average execution time (in milliseconds) of several operations performed over

an image.

5

Page 40: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

There are a couple of tasks that run faster on the CPU. First, if we measure the execu-

tion time of the color conversion with a big image, like the one we used in Section 1, then

it is reduced from 31.4118 ms on the CPU to 4.1735 ms on the GPU. However, unless we

are working with very big images, the execution time of the color conversion alone will

generally be worse if we use the GPU. Second, the reason why ORB is executing faster

on the CPU is because we are only using 500 keypoints, but if we use 10000, then the

detection time is reduced from 15.363 ms to 12.77 ms and the description time is reduced

from 14.3557 ms to 7.35523 ms. ORB implementation in OpenCV makes it difficult to

truly take advantage of GPU capabilities.

2.1 Chaining several consecutive operationsThis time we are going to compare the execution time of some operations chained together

and executed first on the CPU and then on the GPU. These are the operations we are going

to test:

• Gray scale conversion.

• ORB detection.

• ORB description.

• Brute Force Matching.

Using the same dataset as before, the average execution times for each image are:

• 14.7477 ms using the CPU.

• 19.0385 ms using the GPU.

GPU is a bit slower using 500 keypoints. Again, by using 5000 keypoints the results

change:

• 122.025 ms using the CPU.

• 20.7836 ms using the GPU.

3 Supported functionsThe list of available functions in the T-API is continually growing and you can check

which one is implemented by taking a look at OpenCV’s Github page. Here are some of

them:

• features2d module: AKAZE, Brute Force Match, FAST, ORB.

• xfeatures2d module: SURF.

• imgproc module: canny, cvtColor, filter2D, GaussianBlur, integral, Laplacian, me-

dianBlur, moments, warpAffine, warpPerspective.

• video module:BackgroundSubtractorKNN, BackgroundSubtractorMOG2.

6

Page 41: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

4 Good practicesUnless you are working with very small images and a very reduced number of keypoints,

is it always recommended to use UMat instead of Mat when reading an image.

When using fast descriptors, like ORB, beware of the number of keypoints that are

being computed. If this number is too small, it should be considered to execute it on the

CPU and check if it runs faster.

In C++, there are two ways to convert a Mat to UMat:

cv::Mat imgCPU = cv::imread("example.jpg");cv::Umat imgGPU = imgCPU.getUMat(cv::ACCESS_READ);

cv::Mat imgCPU = cv::imread("example.jpg");cv::UMat imgGPU;imgCPU.copyTo(imgGPU);

By doing some tests, we have found that using getUMat doesn’t allocate the object in

the GPU, while using copyTo does. For example, if you read an image with getUMatand convert it to gray scale, the execution times are:

• getUMat: 8.50085 ms.

• Color conversion: 22.7733 ms.

Using copyTo:

• copyTo: 30.8753 ms.

• Color conversion: 3.81341.

Using getUMat makes the object to wait for an operation to allocate the image in the

GPU.

4.1 Checking if the data is in GPU or CPUUnfortunately, there aren’t any flags in the UMat class that can tell us if it has been

uploaded to the GPU.

The UMat object is allocated in the GPU when the function copyTo is called. OpenCV

checks if OpenCL is available and uses an special allocator, called OpenCLAllocatorwhich allocates the data in the GPU. Here’s an UML diagram that shows some methods

and implementations of the MatAllocator class.

7

Page 42: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Figure 1: UML diagram of the MatAllocator class.

8

Page 43: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

5 References[1] K. Mikolajczyk and C. Schmid, “A performance evaluation of local descriptors”,

Pattern Analysis and Machine Intelligence, IEEE Transactions on, vol. 27, no. 10,

pp. 1615 –1630, Oct. 2005, ISSN: 0162-8828. DOI: 10.1109/TPAMI.2005.188. [Online]. Available: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1498756&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D1498756.

9

Page 44: TRABAJO FIN DE GRADO Evaluación y optimización de un ...oa.upm.es/55778/1/TFG_ALEJANDRO_COBO_CABORNERO.pdf · traza de la matriz mientras que el detector de esquinas de Shi-Tomasi[5]

Este documento esta firmado porFirmante CN=tfgm.fi.upm.es, OU=CCFI, O=Facultad de Informatica - UPM,

C=ES

Fecha/Hora Mon Jun 03 22:11:07 CEST 2019

Emisor delCertificado

[email protected], CN=CA Facultad deInformatica, O=Facultad de Informatica - UPM, C=ES

Numero de Serie 630

Metodo urn:adobe.com:Adobe.PPKLite:adbe.pkcs7.sha1 (AdobeSignature)