Table Of ContentUniversidad de Alcalá
Escuela Politécnica Superior
Grado en Ingeniería en Electrónica y Automática
Industrial
Trabajo Fin de Grado
Configuración y ejecución de algoritmos de visión artificial en la
tarjeta Nvidia Jetson TK1 DevKit
Autor: Mario Luis Álvarez Pastor
Tutores: Cristina Losada Gutiérrez y David Jiménez Cabello
2017
UNIVERSIDAD DE ALCALÁ
ESCUELA POLITÉCNICA SUPERIOR
Grado en Ingeniería en Electrónica y Automática Industrial
Trabajo Fin de Grado
Configuración y ejecución de algoritmos de visión artificial en la
tarjeta Nvidia Jetson TK1 DevKit
Autor: Mario Luis Álvarez Pastor
Directores: Cristina Losada Gutiérrez y David Jiménez Cabello
Tribunal:
Presidente: Elena López Guillén
Vocal 1o: María Soledad Escudero Herranz
Vocal 2o: Cristina Losada Gutiérrez
Calificación: ..........................................................................
Fecha: ...................................................................................
Me gustaría dedicar este trabajo a todas aquellas personas que me han apoyado en todo
este tiempo, especialmente a mi madre, que ha hecho posible que esté hoy aquí haciendo
este trabajo, a mis tutores, que han tenido infinita paciencia conmigo, a mis amigos, que
siempre han estado ahí animandome, sobre todo a David Fuentes, que ha estado conmigo
incontables horas trabajando a mi lado...
“¡¿Pero quién dijo que la vida fuera justa?!”
David Fuentes
Agradecimientos
¿Por qué esta magnífica tecnología científica, que ahorra
trabajo y nos hace la vida mas fácil, nos aporta tan poca
felicidad? La repuesta es ésta: simplemente, porque aún
no hemos aprendido a usarla con tino.
Albert Einstein (1879-1955) Científico alemán
nacionalizado estadounidense
Este trabajo es el fruto de muchas horas dededicación, tanto porinvestigacióndel funcionamiento de
latarjetayexploracióndesuslímites,comoporlaprogramaciónyevaluacióndelosdiferentesalgoritmos
ejecutados en ella. Es por ello que me gustaría escribir estos agradecimientos.
MenciónespecialmerecenmistutoresCristinaLosada,quehaestadoahísiemprequelahenecesitado,
en todo momento presta a ayudarme, y David Jiménez, el cuál me ha enseñado muchísimo y me ha
ayudado a sobrepasar los problemas surgidos durante el desarrollo de este trabajo. También cabe alabar
la paciencia que han tenido conmigo, por todo lo que he tardado en desarrollar este proyecto.
TambiénquierodarlasgraciasaJose,RaquelyMarcos, porlacompañíaquemehanhechomientras
desarrollaba el trabajo, y especialmente a David Fuentes, en el cual no sólo he encontrado un compañero
de investigación, sino también una maravillosa persona, divertida y amena, que ha hecho más llevadero
eldesarrollodeestetrabajo,yhahechoposiblelarealizacióndenuevosproyectosdefuturoentrelosdos.
Finalmente, agradecer a mi madre por haberme ayudado a llegar hasta donde estoy, porque sin ella
no hubiera sido posible, y a Google, ya que la mayoría de ayudas y ejemplos los encontré gracias a su
magia, y aunque seguro que me he dejado alguna referencia hacia los ejemplos, desde aquí les doy las
gracias a todos ellos por compartir su saber con el mundo.
vii
Índice general
Índice general ix
Índice de figuras xiii
Índice de tablas xv
Resumen xvii
Abstract xix
Resumen extendido xxi
Lista de acrónimos xxv
1 Introducción 1
1.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Estudio teórico 5
2.1 Arquitectura de cálculo en paralelo en GPU . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Arquitectura general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Modelo de programación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.4 Modelo de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4.1 Memoria global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4.2 Memoria local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.4.3 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.4.4 Memoria compartida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.4.5 Memoria constante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.4.6 Memoria de texturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.5 Estructura del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.6 Ventajas y dificultades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
x ÍNDICE GENERAL
2.2 Visión estéreo para la obtención de información de profundidad . . . . . . . . . . . . . . . 14
2.2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Base teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.3 Visión estéreo en paralelo utilizando CUDA . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Tarjeta de desarrollo NVidia Jetson TK1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.2 Características del hardware y software de la tarjeta de desarrollo NVidia Jetson
TK1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.3 Ventajas y limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Desarrollo 21
3.1 Algoritmo desarrollado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Captura de imágenes estéreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1 Características de las cámaras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Calibración de las cámaras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.3 Proceso de captura de imágenes estéreo . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Extracción de la información de profundidad a partir de visión estéreo . . . . . . . . . . . 27
4 Resultados 33
4.1 Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Imágenes estéreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Resultados de disparidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.1 Alternativa 1: umbralización y erosión de la imagen de disparidad . . . . . . . . . 39
4.3.2 Alternativa 2: algoritmo watershed . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4 Resultados finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5 Conclusiones y líneas futuras 47
5.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Líneas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Pliego de condiciones 49
6.1 Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Requisitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2.1 Requisitos mínimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2.2 Requisitos de hardware recomendados . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3 Condiciones hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.4 Requisitos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.1 Requisitos mínimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.2 Requisitos de software recomendados . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Description:This final degree thesis (TFG) adresses the evaluation of the NVidia Jetson TK1 The Jetson TK1 includes Tegra K1 SOC (System on placa Jetson TK1 incluye características similares a una Raspberry Pi [16], . un vídeo), el programa carga en memoria pares de imágenes y ejecuta el algoritmo