Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Director
ING.ROBERT ALEXANDER LIMAS SIERRA
Codirector
ING. WILSON JAVIER PÉREZ HOLGUÍN, PHD.
4
DEDICATORIA
Esto es opcional y corresponde a una redacción donde el autor o autores dedican su trabajo.
5
AGRADECIMIENTOS
Esto es opcional y corresponde a la mención que los autores realizan de las personas o
entidades que contribuyeron en la realización del trabajo. No se debe confundir con la
dedicatoria.
6
CONTENIDO
pág.
1. INTRODUCCIÓN.......................................................................................................13
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA....................................15
2.1. Marco Conceptual...............................................................................................15
2.1.1. Limitación Visual...........................................................................................15
2.1.2. Gpu............................................................................................................... 15
2.1.3. Cuda............................................................................................................. 17
2.1.4. Imagen Digital...............................................................................................18
2.1.5. Espacios De Color........................................................................................20
2.1.6. Convolución..................................................................................................23
2.1.7. Filtros............................................................................................................ 24
2.1.8. Operaciones Morfológicas En Imágenes Binarias.........................................27
2.1.9. Mapa De Profundidad De Campo.................................................................30
2.1.10. Algoritmos De Inteligencia Artificial Ia.........................................................31
2.1.11. Algoritmos Secuenciales.............................................................................31
2.1.12. Pwm............................................................................................................ 32
2.1.13. Rpi Gpio......................................................................................................33
2.2. Estado Del Arte...................................................................................................33
2.2.1. Dispositivos No Basados En Cámaras..........................................................33
2.2.2. Dispositivos Basados En Cámaras...............................................................35
2.2.3. Dispositivos Híbridos.....................................................................................37
3. DESARROLLO........................................................................................................... 40
3.1. Materiales Y Técnicas.........................................................................................40
3.1.1 Hardware.......................................................................................................40
3.1.2 Firmware Y Software......................................................................................42
3.1.3 Técnicas.........................................................................................................42
3.2. Desarrollo............................................................................................................ 47
3.2.1 Determinación De Las Características Mínimas De Diseño...........................47
3.2.2 Definición Del Diseño De Alto Nivel Del Prototipo..........................................48
3.2.3 Selección De Hardware Necesario Para Funcionamiento Del Prototipo.........48
3.2.4 Estudio De La Arquitectura Y Tecnología Del Kit De Desarrollo Para GPU
NVIDIA Jetson........................................................................................................ 51
3.2.5 Sensores A Utilizar.........................................................................................52
7
3.2.6 Análisis, Revisión Y Selección De Los Algoritmos Para La Detección De
Objetos................................................................................................................... 54
3.2.6 Análisis Del Algoritmo Seleccionado Y Detección De Las Etapas Que
Intervienen En Su Funcionamiento.........................................................................56
3.2.7 Análisis De Los Requerimientos Por Etapas Del Algoritmo Seleccionado Para
Su Implementación En CUDA.................................................................................57
3.2.8 Diseño De Alto Nivel De Cada Una De Las Etapas Para Implementación En
CUDA 59
3.2.9 Implementación, Simulación Y Test Del Diseño Realizado Para Cada Etapa.
60
3.2.10 Verificación Y Validación Del Sistema Implementado Con Personas En
Condición De Discapacidad Visual.........................................................................66
4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS....................................................67
4.1. Identificar Los Algoritmos De Visión Artificial Más Empleados En La Detección De
Obstáculos................................................................................................................. 67
4.2. Seleccionar Y Realizar Pruebas A Nivel Software Del Algoritmo De Detección De
Obstáculos Tomando Como Parámetro De Desempeño El Menor Tiempo De
Ejecución.................................................................................................................... 68
4.3. Sintetizar El Algoritmo De Detección De Obstáculos Sobre El Kit De Desarrollo
Jetson Nano Mediante Cuda......................................................................................69
4.4. Verificar La Efectividad Del Prototipo Y Validar Su Funcionamiento En Condición
De Discapacidad Visual.............................................................................................70
5. CONCLUSIONES......................................................................................................74
6. RECOMENDACIONES..............................................................................................75
7. BIBLIOGRAFÍA.......................................................................................................... 76
8
LISTA DE TABLAS
pág.
9
LISTA DE FIGURAS
pág.
10
Figura 34 Matriz resultante de detección de objetos......................................................
Figura 35 Vector de generación de alertas.....................................................................
Figura 36 Asistente de navegación................................................................................
Figura 37 Pista de obstaculos para las pruenas de validación.......................................
Figura 38 Grafica de comodidad al portar el prototipo (1 muy incómodo, 10
bastante cómodo)............................................................................................................
Figura 39 Grafica de preferencia de emisión de alertas.................................................
Figura 40 Grafica facilidad de interpretación de alertas por parte de los usuarios
(1 muy difícil de interpretar, 10 muy fácil de interpretar).................................................
11
LISTA DE ANEXOS
pág.
12
1. INTRODUCCIÓN
Cerca del 70% de información que obtiene el ser humano del entorno que lo rodea
proviene del sentido de la vista. Esto demuestra su importancia, ya que permite que las
personas puedan realizar actividades importantes para su vida diaria tales como la
capacidad de movilizarse de manera independiente y llevar a cabo diferentes tareas que
aporten a su desarrollo físico, mental y social(Novoa & Rojas, 2019). Según el Instituto
Nacional para Ciegos (INCI), para el año 2019, las personas con discapacidad visual
representan el 7,2% de la población total del país(Pulido, 2020). En Colombia, según el
censo realizado por el DANE para el año 2005, el 2,49% de la población total del país
presenta alguna discapacidad visual y representa el 43,2% del total de discapacitados
del país (censos de población y vivienda de 2005). De esta población, el 48,1%
considera que las actividades de movilidad (caminar, correr y saltar) son de gran
importancia, y para el 35,6%, las actividades con mayor relevancia son el aprendizaje
(estudiar). Este censo determinó que el aspecto con más relevancia para las personas
invidentes es la movilidad(Romero et al., 2018).
Para solventar de forma parcial o total algunos de los problemas de dichos dispositivos,
actualmente se dispone de diferentes plataformas como las Unidades de Procesamiento
Gráfico (Graphics Processing Units - GPU) con la que es posible brindar un menor
tiempo de procesamiento de la información(Owens et al., 2008). También se han usado
microcontroladores como fuente principal de procesamiento en los asistentes de
navegación. Sin embargo, estos últimos generan una barrera que es ocasionada por su
limitada velocidad de procesamiento y la baja complejidad de datos que pueden
analizar(Miño & GÁMEZ, 2020). Otra plataforma en la cual se han implementado este
tipo de asistentes son los Smartphone que a pesar de su gran variedad de sensores,
fácil asequibilidad y manejo por parte del usuario, tienen el problema de requerir un alto
13
consumo energético para su funcionamiento en operaciones de alto volumen de
procesamiento de datos como en éste caso(Murata et al., 2018).
14
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA
Visión normal
Discapacidad visual moderada
Discapacidad visual grave
Ceguera
Se considera visión normal cuando la persona puede realizar tareas o actividades que
dependan totalmente o en su mayoría del sentido de la vista sin ningún tipo de
asistencia al momento de ejecutarlas y la facultad de percibir imágenes claras del
entorno que lo rodea. Por otro lado, la discapacidad visual moderada hace referencia a
la dificultad de percibir los objetos de manera clara lo que causa que se realicen tareas
de manera casi normal con algún tipo de asistencia visual como los lentes correctivos. A
diferencia de las dos definiciones anteriores la discapacidad visual grave se refiere a
aquella limitación para realizar tareas que requieren de una gran agudeza visual para
controlar detalles. Por último, la ceguera es la pérdida de la facultad de percibir
imágenes del ambiente, lo que dificulta realizar tareas básicas de orientación la cual no
se puede corregir con gafas o lentes de contacto (SEGURA & LOZADA, 2019).
Según (Bourne et al., 2021) entre los años de 1990 y 2020 los adultos mayores de 50
años presentaron una diminución de pérdida total de visión en un 28,5%. Sin embargo,
el número de personas que perdieron la vista aumentó en un 50,6% debido a la pérdida
progresiva de visión por edad avanzada; y para el año 2020 se estimó que 43.3 millones
de personas sufrían de pérdida total de la visión a nivel mundial, con lo cual se estima
que para el año 2050 el número total de personas que perderán la visión será de 61
millones. Esto demuestra la creciente tendencia a que las personas puedan sufrir de
discapacidad visual debido al envejecimiento y otros factores.
15
2.2.2 Gpu
Muchas de estas unidades usan una arquitectura constituida por varios cientos de
grupos de SM (Streaming MultiProcessors) y a su vez cada uno de los SM está
compuestos por SP (Stream Procesors). Un ejemplo de este tipo de arquitecturas es la
arquitectura Fermi (Ver Figura 1) de la compañía NVIDIA(Hernández et al., 2013).
16
imágenes en las que es necesario procesar miles de millones de pixeles por segundo.
Para esto las GPU deben ofrecer una gran capacidad de procesamiento para satisfacer
aplicaciones complejas en tiempo real. Adicionalmente, cuentan con un proceso de
pipeline para realizar el paralelismo que a su vez es aplicable a muchos otros campos
computacionales (Owens et al., 2008).
2.2.3 Cuda
Los hilos se pueden organizar en grupos, dado que pueden sobrepasar el numero
permitido para un bloque según lo defina la arquitectura de la GPU. El término bloque
(Block) hace referencia a un conjunto de hilos (Threads) los cuales también tienen un
límite de instancias para ser lanzadas durante la ejecución, cuyo valor está dado por la
arquitectura de cada dispositivo en particular. Los bloques de hilos están organizados
de manera conceptual en matrices de 1, 2 y 3 dimensiones denominadas cuadriculas
(Grids) según sea la necesidad de la aplicación. Estas Grids son útiles cuando se
necesita procesar grandes cantidades de datos en paralelo (Ver Figura 2) (NVIDIA,
2021).
17
Para obtener una alta eficiencia en la ejecución de los kernels se cuenta con el modelo
SIMT (Single Instruction-Multi Thread) que permite el manejo de cientos o miles de hilos
a ser ejecutados en paralelo. Su jerarquía en memoria por lo general se divide en dos
espacios direccionales: una memoria local que es pequeña y rápida, visible por un
subconjunto de procesos o hilos en ejecución, y una memoria global la cual es más
grande pero más lenta, que es visible por todos los hilos en ejecución. La desventaja del
modelo SIMT es que éste no es eficiente cuando hay la necesidad de sincronizar la
cantidad de hilos para garantizar una exclusión mutua en una sección critica (Villegas et
al., 2015).
CUDA ofrece las siguientes formas de acceder a los datos mediante múltiples espacios
de memoria durante la ejecución: 1) una memoria global que puede acceder a todos los
hilos ejecutados dentro del kernel; 2) una memoria compartida que posee una velocidad
de acceso intermedia y que permite acceder a todos los hilos en un bloque; y 3) una
memoria local que tiene el menor tiempo de respuesta y permite acceder a un hilo de
los que fue asignada esta memoria (NVIDIA, 2021).
Para administrar los modelos de memoria, NVIDIA proporciona diferentes etiquetas que
le permiten al compilador distinguir entre las funciones que se pueden ejecutar en la
CPU (host), o en la GPU (divice). Estas etiquetas se muestran en la Tabla 1.
Fuente.(NVIDIA, 2021)
Una imagen digital se define como una función bidimensional f (x , y ) donde x e y son
las coordenadas del plano que contiene un número finito de puntos o elementos
conocidos como pixeles que componen la imagen, y la función f (x , y ) es la amplitud en
el punto con coordenadas ¿, y ¿ la cual también es conocida como la intensidad o nivel
de gris que la imagen tiene en ese píxel. Se habla de una imagen digital si en la función
de la imagen hay valores de intensidad finitos y discretos(Dobernak, 2015).
18
Fuente (Dobernak, 2015)
Dentro de las imágenes digitales existe un tipo de imagen conocida como imagen en
escala de grises. Las imágenes de este tipo son arreglos bidimensionales los cuales
contienen información acerca de la intensidad de luz o luminancia que presenta cada
píxel de la imagen. Normalmente, los valores de cada pixel se encuentran codificados
en 8 bits, es decir, cada pixel puede tomar un valor entre 0 y 255, siendo 0 el valor
numérico correspondiente al color negro y 255 al color blanco.
Fuente(MatLab, 2022)
Existen varios métodos por los cuales es posible realizar la transformación de una
imagen en color a una imagen en escala de grises. La mayoría de estos métodos
utilizan el espacio RGB para pasar una imagen en color a su equivalente en escala de
grises debido a su simplicidad de manejo. Una de las formas más usadas es el
promedio de las tres componentes del espacio RGB (ver Ecuación 1) (Cortes Osorio et
al., 2011):
19
R ( x , y ) +G ( x , y ) , B( x , y)
ImGris(x , y)= (1)
3
Los espacios de color hacen referencia a los distintos planos espaciales con los cuales
se puede trabajar una imagen digital a color. Existen varias representaciones espaciales
entre ellas están el RGB, HSV, HSI y el modelo YCbCr.
El espacio RGB es uno de los modelos más utilizados por los sistemas informáticos
para crear y realizar la reproducción de colores en los monitores. La representación
gráfica del modelo establece los ejes R, G, B. Cada componente de color depende de
una coordenada especifica como se muestra en la Figura 5.
Las siglas HSV (Hue, Saturation, Value) hacen referencia al tono, saturación y valor
respectivamente. El sistema coordenado para este espacio es cilíndrico. La pirámide
hexagonal presentada en la Figura 6 corresponde al subconjunto en donde la
distribución de colores varía dependiendo a la ubicación dentro del plano espacial. En
este modelo los colores más brillantes están contenidos en el área hexagonal donde el
valor de la componente es V=1. Para medir el tono en este plano se usa el ángulo de
apertura tomando como referencia el eje S. El color rojo se sitúa a 0º, el verde a los
120º y el azul a los 240º, mientras que los colores complementarios se encuentran a
180° de su color primario. El vértice en donde las componentes S y V tienen un valor
igual a 0 corresponde al color negro, el color blanco corresponde a las coordenadas
donde S=0 y V=1.
20
Fuente Tomada de: (Dobernak, 2015)
Este espacio puede ser obtenido a partir de una transformación no lineal del espacio
RGB, usando las siguientes expresiones (ver Ecuaciones 2 a 4):
Este espacio tiene la ventaja de ser invariante a las condiciones de luz. Sin embargo, la
alta complejidad computacional que requiere para ser implementada sobre todo en
plataformas como FPGA dificulta su uso (Dobernak, 2015).
El espacio HSI (Hue, Saturation, Intensity) tono, Saturación, Intensidad, es también una
transformación no lineal del espacio RGB el cual modifica el sub espacio del cubo
transformándolo en dos conos unidos por la base. Geométricamente, está compuesto
por las componentes S, H e I, que corresponden a una componente de saturación (S)
que es la distancia radial del cono y proporciona una medida del grado del color que se
mezcla con la luz blanca, la componente del tono (H) que es el ángulo respecto al eje
rojo y da una magnitud de la longitud de onda dominante, varía en 360° con
separaciones angulares de 120° entre cada color primario con igual separación para los
colores secundarios, la componente de intensidad (I) que es la distancia a lo largo del
eje perpendicular al plano de color e indica el valor del brillo y la información acromática,
valores bajos en este eje componente corresponden a los colores oscuros y los
superiores están asociados a los colores claros hasta llegar al blanco (ver Ecuaciones 5
a 8. Transformaciones no lineales del espacio RGB a HSI) (Dobernak, 2015).
21
Figura 7 Representación del modelo HSI
H=
{360−θ
θ si B ≤G
si B> G
(5)
{ }
−1 ( R−G ) +(R−B)
θ=cos 1 (6)
2
2 [ ( RG ) +( R−B)(G−B)] 2
3 min [R ,G ; B ]
S=1− (7)
(R+G+ B)
1
I = (R +G+ B) (8)
3
A pesar de las ventajas que este espacio ofrece, tiene la misma limitante que el modelo
HSV debido a que tiene una alta complejidad computacional para ser implementada
debido a sus transformaciones no lineales lo que lo hace poco práctico.
El modelo YCbCr es una codificación no lineal del espacio RGB, usada comúnmente
por los estudios de televisión europeos y en la compresión de imágenes. En este
modelo el color se representa por tres componentes o parámetros, uno de ellos es la
luminancia (Y) y dos valores diferentes de color (Cb y Cr) que son características del
color. L, en cuanto a la luminancia es la cantidad lineal de luz que es directamente
proporcional a su intensidad física. Puede ser calculada como una suma ponderada de
los componentes del espacio RGB.
22
Las características que tiene este modelo en cuanto a la separación de luminancia e
información cromática, hacen que éste tenga una mayor ventaja en cuanto a
compresión y transferencia de información de la imagen. Esto se debe a que la mayor
parte de información está contenida en la componente de luminancia y se transmite con
mayor precisión, lo cual causa que los valores de las componentes Cb y Cr disminuyan,
contribuyendo a disminuir la perdida de información.
En el caso de los sistemas digitales, la ventaja que tiene este modelo es que ahorra
recursos computacionales y ancho de banda para su transmisión. Sin embargo, este
espacio no ofrece buenos resultados con los algoritmos de visión por computadora
como por ejemplo en la segmentación de objetos por color (ver Ecuaciones 9 a 10.
Transformaciones no lineales del espacio RGB a YCrCb) (Dobernak, 2015).
2.2.6 Convolución
Para realizar esta misma operación en tiempo discreto y con sistemas digitales se tiene
la siguiente expresión (Ver Ecuación 13) (Gonzalez et al., 2009).
∞
y [ n]= ∑ h [ k ] x [ n−k ] (13)
k=−∞
23
La convolución bidimensional discreta es la base de algunos procesamientos comunes,
como el filtrado de imágenes; al realizar la convolución entre una imagen y la máscara
espacial o ventana, el valor del pixel de salida se calcula en función de una suma
ponderada de los pixeles vecinos (Baron et al., 2002) .
Pixel resultado =( 40∗0 ) + ( 42∗1 ) + ( 46∗0 )+ ( 46∗0 ) + ( 50∗0 ) + ( 55∗0 ) + ( 52∗0 )+ ( 56∗0 )+ ( 58∗0 )=42
(15)
2.2.7 Filtros
24
Figura 9 Mecanismo de filtro espacial lineal
25
1.
2.
2.1.
2.1.1.
2.1.2.
2.1.3.
2.1.4.
2.1.5.
2.1.6.
2.1.7.
Este filtro se usa para destacar los bordes de una imagen. Usa el operador de Laplace
en la imagen, éste no es más que un operador isotrópico (es decir, es independiente a
la dirección de la discontinuidad en la imagen) por lo cual recibe este nombre. Éste filtro
está definido por la siguiente expresión (Ver ecuación 16):
2
∂ f
2 calculo del gradiente en sentido de las columnas.
∂x
2
∂ f
cálculo del gradiente en sentido de las filas.
∂ y2
2
∇ f vector gradiente.
2 2
2∂ f ∂ f
∇ f= 2+ 2 (16)
∂x ∂ y
26
Cabe resaltar que este filtro no se usa directamente en la práctica por ser muy sensible
al ruido que presente la imagen por lo que se aplica este filtro después de usar una
máscara para realzar los contornos (González et al., 2009).
El filtro de gauss difumina las imágenes y eliminar ruido de éstas, este es similar al filtro
de media, pero se usa una máscara diferente que se obtiene por medio de la ecuación
18, logrando así un difuminado mucho más uniforme
g ( x , y )= 2
е (18).
2 лδ
Las ventajas que tiene este filtro es que es separable lo que quiere decir que en vez de
realizar una operación bidimensional es posible realizar 2 operaciones unidimensionales
una de ellas se realiza en sentido horizontal y la operación restante en sentido vertical
(González et al., 2009).
Este se define como como uno de los operadores para la detección de bordes, el filtro
de Roberts realiza la detección de bordes mediante el cálculo de la primera y segunda
derivada las cuales permiten identificar los puntos de interés en la imagen: estos
operadores son representados mediante la siguiente expresión (Ver ecuación 19):
[]
∂f
∇ f =grad =
gx
gy
=
[ ]
∂x
∂f
(19)
∂y
El operador de Roberts es el más simple de todos, este utiliza la dirección diagonal para
calcular el vector gradiente usado en su respectiva máscara o matriz(González et al.,
2009).
27
2.1.7.4. Filtro De Prewitt:
Este filtro u operador al igual que el de Roberts sirve para realizar la detección de
bordes, este operador expande la definición del gradiente a una máscara de 3x3 con lo
cual hace que sea más inmune al ruido, este utiliza las ecuaciones de Sobel, a
diferencia del operador de Sobel este no le da importancia a los pixeles de la imagen
que estén cercanos al centro de la máscara (Ver Figura 10) (González et al., 2009).
2.1.7.5. Erosión:
Consiste en eliminar todos los pixeles del objeto en donde al menos uno de sus pixeles
en su vecindad pertenezca al fondo, la aplicación de este filtro tiene el efecto de reducir
el objeto o eliminar objetos que sean muy pequeños (Ver Figura 11) (Fernández, 2020).
28
Fuente tomado de:(Rafa Docencia, 2021.)
2.1.7.6. Dilatación:
Todos los pixeles que pertenezcan al fondo se convierten en pixeles del objeto si al
menos uno de los pixeles que este en su vecindad pertenece a dicho objeto. Esta
operación tiene como efecto aumentar el tamaño de los objetos o rellena agujeros que
puedan estar dentro del objeto a destacar (Ver Figura 12) (Fernández, 2020).
2.1.7.7. Apertura:
29
Fuente:(Rafa Docencia,2021.)
I imagen digital
H ventana de operación
I ○ H =(I ⦵ H )⨁ H (20)
2.1.7.8. Clausura:
Para realizar esta operación se aplica en primer lugar dilatación, posterior a esto se
realiza erosión. La clausura fusiona dos objetos separados por un margen delgado,
además de eliminar pequeños orificios manteniendo el tamaño del objeto, rellenar o
suavizar el contorno (Fernández, 2020).
Fuente:(Rafa Docencia,2021.)
I imagen digital
H ventana de operación
30
de los objetos a analizar entre otros. Este tipo de mapas se usan en aplicaciones como
visión artificial, navegación autónoma e inspección de partes mecánicas (Chang &
Maruyama, 2018).
Existen varios métodos por los cuales es posible generar este tipo de mapa; uno de
ellos es la técnica de visión estéreo, este se basa en tomar la imagen de la escena a
analizar usando dos cámaras puestas a la misma distancia, pero con una separación
entre ellas. Con esta técnica de visión estéreo se busca hacer una reconstrucción
geométrica de la imagen mediante la comparación de pixeles de las dos imágenes y
encontrando las equivalencias entre los pixeles de las dos imágenes capturadas,
además de determinar su distancia relativa entre los pixeles que coincidan entre si y de
esta manera generar un mapa de profundidad; la desventaja de este método es que
requiere mayor capacidad computacional para el análisis de las imágenes además de
tener que implementar algoritmos para dicho análisis (Ver figura 15)(Parissaki &
OTERO, 2019).
Otro método para obtener estos mapas es mediante cámaras que no solo cuentan con
señores RGB sino también sensores infrarrojos. En este método se lanza el rayo del
láser infrarrojo a la superficie del objeto y se realiza la grabación de la proyección del
láser para así determinar la geometría del ambiente. Una vez determinada la geometría
de entorno las coordenadas de la luz reflejada se pueden estimar por triangulación para
generar una nube de puntos con la cual se detecta movimientos en los tres ejes
espaciales (x, y, z) de los objetos escena o de la cámara. Esta nube de puntos se puede
proyectar en un espacio 2D en donde los pixeles del mapa que genera contienen los
valores de distancia en lugar de valores de intensidad. El uso de una cámara
generalmente suele ser suficiente; sin embargo, si el objeto esta ocluido en referencia a
la cámara el mapa generado puede quedar incompleto para solucionar este problema
se recurre al uso de varias cámara láseres (Ver Figura 16) (Parissaki & OTERO, 2019).
31
Fuente (Xu & Fujimura, 2003)
Dentro del proceso de investigación de la IA, fueron creadas las redes neuronales con
las cuales surgió la posibilidad de realizar tareas cotidianas para las personas, pero
ahora con la asistencia de un equipo de cómputo. Tareas como el reconocimiento de
patrones, caracteres, voz, rostros y objetos, entre otras se han logrado efectuar con
este tipo de algoritmos (Vasquez & Cardona, 2019).
Uno de los algoritmos más populares basado en IA, es el algoritmo YOLO (You Only
Look Once) este algoritmo hace uso de redes neuronales para realizar la detección de
objetos en tiempo real y ha sido muy utilizado en diversas aplicaciones como detectar
señales de tráfico, personas, parquímetros y animales y objetos (Jadhav et al., 2020).
Este tipo de algoritmos puede dividirse en tres tipos: procesamiento a alto nivel,
procesamiento a nivel medio y procesamiento de bajo nivel. Para cada nivel en
particular se realiza un conjunto de operaciones diferentes como se muestra en la Tabla
2 (De Frías et al., 2019).
32
Bajo en cuenta todos los pixeles de la filtrado, modificación del histograma,
imagen detección de bordes.
Se realizan operaciones más Segmentación de la imagen,
Medio complejas, usando bloques o grupos etiquetado de regiones, conectividad
de pixeles de pixeles.
Usa operaciones con alta Correlación, Matching, cálculo de
complejidad, son costosas distancia de objetos u obtención de
computacionalmente hablando y usa datos en 3 dimensiones
Alto pixeles concretos de la imagen
2.2.12 Pwm
La modulación PWM (Pulse Width Modulation) es una técnica que consiste en realizar
la variación del ancho de pulso o ciclo de trabajo de una señal periódica (típicamente
cuadrada), el cual determinara el tiempo en el que la señal se encuentre en nivel alto o
bajo con respecto al periodo de la señal, este tipo de modulación tiene diversas
aplicaciones que van desde el control de brillo de leds, velocidad de motores hasta
aplicaciones de electrónica de potencia (Ver Figura 17)(Vanegas & MARULANDA,
2017).
τ
D= (22)
T
En donde
D es el ciclo de trabajo
τ es el ancho de pulso
T es el periodo de la señal
33
2.2.13 Rpi Gpio
Esta librería permite realizar el control de los puertos GPIO que poseen las tarjetas
Jetson nano de NVIDIA los cuales se pueden configurar como puertos entrada o salida
digital. Esta librería es compatible con las tarjetas Jetson debido a que el cabezal GPIO
es muy similar al de las Raspberry por lo cual es posible realizar la programación de
este puerto mediante el lenguaje de programación Python usando el paquete
JetsonGPIO, el cual tiene la misma API que la biblioteca RPIGPIO con el fin de facilitar
la migración de proyectos realizados en las tarjetas Raspberry(NVIDIA, 2019).
Por otro lado, existe un dispositivo electrónico de asistencia para personas invidentes,
el cual es un chaleco en el cual se ubican cuatro sensores ultra sónicos además de 2
microcontroladores uno de ellos el maestro que se encarga de recibir la información
34
proveniente de los sensores y enviar las alerta audibles, las cuales son mensajes
pregrabados que le informan al usuario acerca de lo que hay en su entorno; el otro
microcontrolador el esclavo se comunica con el maestro mediante un receptor
inalámbrico por comunicación serial RS232.Este último se encarga de generar las
alertas hápticas al usuario mediante seis motores vibratorios que se ubican en el
chaleco (OBANDO & SOTOMAYOR, 2015)
Un proyecto con mayor aporte a este campo es el Smart Cane, este es un dispositivo
portable el cual consta de una red de sensores ultrasónicos, un sensor de humedad y
un microcontrolador con el cual se realiza el procesamiento de datos provenientes de
los sensores; para interactuar con el usuario este tiene una serie de motores hápticos y
un zumbador , este último realiza la detección de objetos en frente del usuario y de esta
manera enviar mensajes de audio y alertas hápticas al usuario para advertir de un
obstáculo (Vasquez & Cardona, 2019).
Los sensores infrarrojos también han sido utilizados como una alternativa para el
desarrollo de dispositivos de navegación de interiores, estos son usados para medir la
distancia a la que se encuentran los objetos dentro de la escena en la que se encuentra
la persona con discapacidad visual; el rango dinámico de estos sensores oscila entre
0.2 a 14 metros. La desventaja de los sistemas basados en estos sensores, es que son
demasiado complejos e ineficientes en comparación con otros asistentes que usan otras
tecnologías de para este propósito (Plikynas et al., 2020).
35
Sin embargo, los asistentes basados en estas tecnologías no han tenido gran acogida
en el mercado, dado a que estos pueden sufrir fallas además de que su interfaz de
comunicación transmite poca información del entorno, lo cual que puede generar un
peligro potencial de colisión (Vasquez & Cardona, 2019).
Los sistemas basados en cámaras usan sensores RGB como fuente principal de
información, siendo capaces de reconocer objetos algunos de estos sistemas emplean
únicamente una cámara y se apoyan en sensores de códigos de respuesta rápida
(Quick Response code - QR)(Idrees et al., 2015).
Los Smartphone también han sido usados para el desarrollo de estos asistentes, para
los Smartphone con sistema Android, se ha desarrollado una aplicación la cual identifica
códigos QR; la ventaja de este es que no requiere ningún hardware adicional para su
funcionamiento, además los códigos QR están distribuidos en el piso a una distancia
determinada. Este código brinda información al usuario de su posición actual y solicita el
lugar de destino al cual se quiere dirigir para trazar la ruta óptima y así llegar al lugar de
destino; La aplicación cuenta con un rastreo de ruta para detectar desviaciones y enviar
alertas audibles al usuario, para ayudarlo a regresa a la ruta inicialmente trazada. Uno
de los inconvenientes es que se debe estar todo el tiempo en línea, pero con ayuda del
módulo GPS se espera poder suplir este inconveniente y que la aplicación pueda ser
usada no solo para interiores sino también para exteriores (Idrees et al., 2015)
Dentro de los prototipos desarrollados para el apoyo apersonas con limitación visual,
existe un asistente de navegación, el cual se compone de un sensor Kinect de
Microsoft, un teclado numérico un sensor táctil y finalmente un bastón blanco además
de otros dispositivos de retroalimentación; el sensor Kinect se usa para capturar
imágenes del entorno e identificar los objetos presentes en la imagen, y luego enviar
una retroalimentación al usuario mediante el sensor táctil, este cuenta con la capacidad
de reconocer varias clases de objetos como, sillas ,escaleras, entre otros objetos que
estén fuera de rango de detección del bastón, este está diseñado para enviar la
cantidad justa de información al usuario y de la manera más eficiente posible (Takizawa
et al., 2015).
36
ellas los tres estados de un semáforo (rojo, amarillo, verde), este asistente primero
realiza una etapa de pre procesamiento con el fin de destacar la información de mayor
importancia, para dar más facilidad al seccionamiento de los objetos de interés. Luego
realiza una comparación y distinción de los objetos identificados y de esta manera
enviar un mensaje con la información obtenida por medio de notas audibles. La
desventaja de este prototipo es el tiempo que tarda entre la recepción de los datos a
analizar y el envío una alerta el cual es de 4.3 segundos en promedio. Lo cual hace que
la fluidez con la que el usuario transita por el entorno se vea afectada (SEGURA &
LOZADA, 2019)
37
2.2.16 Dispositivos Híbridos
Las FPGA (Field Programmable Gate Array) han sido utilizadas con el fin de desarrollar
prototipos eficaces de asistencia de navegación para personas con discapacidad visual,
para ello se ha aplicado el uso de algoritmos de disparidad, y diferentes arquitecturas
de hardware eficientes para describir estos algoritmos sobre la FPGA; con los cuales es
posible estimar la distancia del obstáculo y enviar la alerta correspondiente al usuario
mediante señales audibles, la desventaja de esto es que para realizar un sistema veloz
se requiere el uso de muchos elementos lógicos a pesar de optimizar el algoritmo, por lo
cual ha recurrido a arquitecturas semiparalelas para reducir los elementos lógicos en la
implementación del sistema(Sekhar et al., 2016).
38
hasta 6 metros. Para distancias inferiores a 3 metros, la detección de obstáculos era
realizada mediante los sensores ultrasónicos que enviaban la información al
computador a través de la tarjeta de adquisición. Para distancias mayores a los 3
metros, la detección de obstáculos era realizada a través de las imágenes obtenidas por
las cámaras. Por último, los actuadores de vibración le indican al usuario la mejor ruta
de navegación. Una de las recomendaciones de este trabajo fue estudiar la viabilidad
de implementar el algoritmo general en un sistema embebido, con el fin de aumentar la
velocidad de procesamiento y la portabilidad del sistema. El dispositivo desarrollado en
el año 2010 no tenía las capacidades para detectar puertas de acceso, interruptores,
escalones, huecos y objetos pequeños. Además, de tener un tiempo de procesamiento
elevado, aproximadamente de treinta segundos por imagen, demostrando el principal
problema de esta implementación (ARIZA et al., 2010).
Basado en cámaras
Computador Cámara web
personal Cámara integrada Algoritmo YOLO (Jadhav et al., 2020)
Smartphone
Harris Corner detector-
Computador Cámara Kinect Visión stereo (Takizawa et al.,
2015)
39
Cámara
No registra BLE Beacon Algoritmo de Dijkstra (Nair et al., 2018)
Google Tango
3. DESARROLLO
1.
2.
3.1. Materiales Y Técnicas
3.1.1 Hardware
2.1.7.9. JETSON
40
memoria DRAM de 8GB LPDDR4x.
almacenamiento de 16GB de memoria eMMC 5.1.
4 puertos USB 3.1.
GPIO de 40 pines, donde varios de estos están dedicados a módulos
específicos como son dos módulos PWM.
cuenta también con un conector HDMI.
conector Gigabit ethernet (Nvidia, 2020b) (Gpu et al., 2020).
2.1.7.11. Kinect
Debido a que la comunicación del dispositivo con la plataforma Jetson, es por medio de
interfaz USB 2.0 también fue necesaria la instalación de la librería libusb-1.0, la cual
permitió acceder a la información proveniente del módulo USB de la Jetson.
41
2.1.7.12. Sensor De Ultrasonido Hrlv-Maxsonar-Ez0
El módulo de vibración fue dividió en dos secciones: La primera sección del módulo
constó en el uso de dos motores de referencia N20, el cual tiene una tensión de
alimentación entre 1.5 a 9v, El módulo de vibración fue dividido en dos secciones: La
primera sección del módulo consta en el uso de dos motores con referencia N20, los
cuales cuentan con una tensión de alimentación entre 1.5 a 9v y una corriente nominal
de 90mA logrando alcanzar velocidades de rotación hasta los 8800 RPM. La segunda
sección es el driver de potencia el cual está conformado por el módulo Arduino
DRV8833, este es un dispositivo el cual cuenta con un puente H dual para el control de
giro para motores DC, el cual cuenta con funciones de protección contra cortos y sobre
corrientes, un bloqueo por sub tensión y sobre calentamiento. Este puede ser
alimentado en un rango de tensión entre 3 v a 11.8 v y en sus entradas digitales
tensiones entre -0.5v a 7v (Texas, 2015).
2.1.7.15. Herramientas
42
versión 8.10 utilizado principalmente para la prueba y depuración del algoritmo descrito
para el microcontrolador.
2.1.7.16. PyCUDA
3. Un obstáculo con medidas 67cm x 106cm, como se muestra en la Figura 18, fue
ubicado frente a la cámara primeramente a una distancia mínima de 50cm,
siendo desplazado con variaciones de 10 cm hasta una distancia máxima de
350cm. Se almacenaron 8 datos por variación.
43
Fuente Tomada de (Autores)
5. Con los datos en la hoja de cálculo, se promediaron los 8 valores obtenidos por
cada distancia recorrida obteniendo así un valor representativo de pixel.
Cabe resaltar que, se realizó la misma prueba en diferentes horas del día y con
variaciones en el nivel de luminosidad tabulando y promediando los resultados
obtenidos, llegando a una ecuación característica del funcionamiento general del
sensor.
44
4. Se fracciona la imagen en 15 secciones y se evalúa el valor cada uno de los
pixeles que las componen, (Teniendo en cuenta que la imagen es binarizada) si
existe al menos un pixel en 1 se determina que hay presencia de un obstáculo
en determinada sección, logrando además identificar su posición en la imagen.
Los resultados serán plasmados en una matriz donde un 1 significa presencia de
un objeto y un 0 la ausencia del mismo por cada una de las secciones.
(La grilla y los números para cada sección se realiza de manera representativa, debido
a que esto no será visualizado en ningún momento por el sistema)
45
Está situada a 0 grados
respecto al horizonte (Y = 90°)
a = altura a la que se sitúa la
cámara es conocida
β = apertura del lente de la
cámara es de 69°
Donde:
a
c= (25)
cos β b=c∗sin β (26)
46
2.1.7.21. Filtro De Media Movil
∑ Si
(27)
i=n−4
Sn=
5
AUDIBLES
Para las alertas audibles se definió una función la cual selecciona la posición 4
del vector de alertas como entrada con el fin de reproducir una alerta pregrabada
correspondiente a la ruta sugerida para luego ser reproducida.
HAPTICAS
Para estas alertas también se definió una función la cual generara una señal
PWM modificada que varía su ancho de pulso y su frecuencia. La salida de esta
señal se realiza por dos pines del GPIO de la siguiente manera:
200 300 30 25
47
3.2. Desarrollo
Una vez establecidas las características de diseño, el primer paso fue definir la
arquitectura interna del prototipo. Su definición fue de gran importancia debido a que,
partiendo de ésta, fue posible evaluar la selección de componentes, sensores y demás
elementos que la conforman.
Figura 21 Esquema general de la arquitectura interna del dispositivo de guía para invidentes
48
Fuente Tomada de (Autores)
Por último, debe contar con diversas interfaces de periféricos, o que, en su defecto la
plataforma facilite la implementación de estas, debido a que es necesario contar con las
interfaces de comunicación necesarios para lograr una recepción y envío de datos con
los diversos componentes que componen el proyecto.
49
128 ARM RAM: Rango 1 puerto 69.6 mm
núcleos de Cortex-A57 2GB temperatura de para tarjeta x 45 mm
arquitectura (Quad o -25C°-97C° microSD
Maxwell Core) con Potencia de 5 4 Puertos
con soporte una 4GB
a 10W USB
Jetson para Open frecuencia
GL 4.6, maxima de Voltaje de 1 módulo
NANO alimentación PWM
Open GL- operación
ES, CUDA, de 1.43 Almacena de 5V 1 UART,
Vulkan1.1 GHz miento: dos
con una eMMC módulos
frecuencia 16 GB SPI
máxima de 1 conector
Operación para
921MHz rasbian
cam,
1 módulos
I2C
1 puerto
GPIO de 40
pines
50
Asimismo, en comparación a las otras plataformas consultadas estas dos presentan un
costo asequible en el mercado.
Se observa que cada una de las GPU integradas en las plataformas Jetson posee una
micro arquitectura diferente, siendo ésta la que define características cruciales del
funcionamiento del sistema, se procedió a realizar un estudio de aspectos clave de cada
una de ellas además de evaluar su importancia para el proyecto. obteniendo los
siguientes resultados:
Con base en lo descrito, para cada micro arquitectura se observa que la cantidad y
características descritas para los SM son las diferencias más notables entre estas, y
teniendo en cuenta que, según (NVIDIA, 2017), la cantidad de SM es comúnmente
asociado a muchos más registros en general, por ende, mayor cantidad de hilos y
bloques de subprocesos, que a su vez ofrece importantes mejoras en el rendimiento, la
eficiencia energética y la facilidad de programación (Hernández et al., 2013). Teniendo
esto en cuenta, se selecciona la plataforma de desarrollo Xavier, debido a que sus
características en cuanto al hardware de su GPU brindarían el mayor rendimiento de
procesamiento y que además pese a ser más compleja internamente, se trabaja de
igual forma que la Jetson nano.
51
2.2.23 Sensores A Utilizar
USB 3.0
Profundidad: sensor Campo de visión vertical: 55 1920 × 1080 1.8 vatios
infrarrojo grados 32-bit de color
monocromático y @30 FPS
proyector de luz IR Rango de profundidad del
sensor: 10 centímetros – 1.5
metros
Teniendo en cuenta la Tabla 6, la cámara Intel presenta ventajas tales como su bajo
consumo, un mayor y mejor flujo de datos además de un amplio campo de visión, sin
embargo, la cámara Kinect presenta mejores prestaciones en cuanto a conectividad, ya
que no necesita específicamente de un puerto 3.0 para funcionar. Sin embargo, este
último dispositivo presentó la característica de contar con un rango más amplio de
profundidad del sensor, lo cual se traduce en mayor tramo de distancia para la
52
detección de objetos en el entorno, mejorando la eficacia del sistema al momento de
entregar una ruta para transitar
Sin embargo, debido a que la cámara del Kinect tiene un ángulo de apertura de 69°, al
estar ubicada a una altura considerable del suelo, genera un espacio con forma de
triángulo rectángulo tal como se muestra en la Figura 20 donde su área representa el
punto ciego del sensor, zona donde, cualquier objeto que se encuentre dentro de esta
genera un alto riesgo de colisión al usuario.
Para dar solución a este problema, nos remitimos inmediatamente al estado del arte,
donde se observó que los sensores de ultrasonido son ampliamente utilizados al
momento de realizar mediciones a cortas distancias, de forma precisa, sencilla y
económica (Tabla 3 Estado del arte). Una vez definido el tipo de tecnología, se consulta
con los fabricantes especializados y generales sobre el sensor adecuado que cumpla
con los requerimientos para la aplicación a desarrollar encontrando que
53
Fuente. (Hojas de especificaciones de los sensores consultados).
Inteligencia artificial
YOLO (You Only Look Once) es un sistema de código abierto, enfocado a la detección
de objetos en tiempo real, el cual hace uso de una única red neuronal convolucional
para detectar objetos en imágenes. Para su funcionamiento, la red neuronal divide la
imagen en regiones, prediciendo cuadros de identificación y probabilidades por cada
región; las cajas son ponderadas a partir de las probabilidades predichas. El algoritmo
aprende representaciones generalizables de los objetos, permitiendo un bajo error de
detección para entradas nuevas, diferentes al conjunto de datos de entrenamiento
(Ammar et al., 2019).
54
Otro algoritmo de IA usado para la detección de objetos es el algoritmo MobileNet este
al igual que YOLO está basado en una arquitectura de redes neuronales
convolucionales con la diferencia es que dichas redes están optimizadas para ser más
livianas y trabajar de mejor manera en las plataformas móviles, este algoritmo ha
tratado de obtener un buen equilibrio entre el volumen de cálculo y espacio de
almacenamiento, sin embargo al tratar de ser más liviano este ha reportado predicas en
la precisión de detección en comparación de otros algoritmos (Howard et al., 2017)
Algoritmos secuenciales
55
2.2.25 Análisis Del Algoritmo Seleccionado Y Detección De Las Etapas
Que Intervienen En Su Funcionamiento
Fuente (Autores)
56
2.2.26 Análisis De Los Requerimientos Por Etapas Del Algoritmo
Seleccionado Para Su Implementación En CUDA.
Con base en la Figura 40, se definieron los pasos base para cada uno de los procesos
que realicen el procesamiento en el device, de la siguiente manera:
Retornar a la memoria del Host los valores procesados para ser enviados a la
siguiente etapa del algoritmo.
57
Para definir el arreglo matricial necesario para el almacenamiento y procesamiento de
los datos a trabajar, es necesario analizar el tipo y cantidad de datos que le ingresan al
subsistema observando que: los datos provenientes del sensor de profundidad son de
tipo vector de 8 bits, con un tamaño de 640 × 480 en un solo canal. Con el fin de
realizar el procesamiento de dichos valores se procedió a establecer los parámetros
para reservar el espacio en memoria en el device de la siguiente manera:
El primer parámetro establecido fue el número mínimo de hilos por cada bloque
que se debieron lanzar para procesar la imagen, dicho valor se calculó mediante
las ecuaciones 28 y 29:
ancho de la imagen
¿ hilos ancho=
100
(28)
alto de la imagen
¿ hilos alto= (29)
100
Por medio de la ecuación 30, se obtuvo el número mínimo de hilos por bloque
requeridos para procesar la imagen, esta cantidad fue 30.72 hilos, debido a que
solo se pueden lanzar números enteros de hilos en cada bloque esta cantidad se
aproxima al valor entero siguiente, con lo cual el resultado fue 31 hilos por
bloque.
A demás de estos parámetros se definieron los pasos base para cada uno de los
procesos que realicen el procesamiento en el device, de la siguiente manera:
Retornar a la memoria del Host los valores procesados para ser enviados a la
siguiente etapa del algoritmo.
58
2.2.27 Diseño De Alto Nivel De Cada Una De Las Etapas Para
Implementación En CUDA
Partiendo de los procesos del algoritmo resultante, se procedió en el diseño de alto nivel
y descripción de cada etapa propuesta enfocada a su implementación en CUDA.
Fuente (Autores)
Fuente (Autores)
Para la última etapa solo interviene el proceso 6, en este, se optimizo la manera en que
se entregan los datos resultantes además de configurar los parámetros necesarios para
realizar de nuevo la ejecución del algoritmo.
59
Figura 27 Diseño Etapa post Procesamiento
Fuente (Autores)
Fuente (Autores)
Sin embargo, cuando se realizó la escalización del sensor de profundidad con el fin de
encontrar su ecuación característica, se observó que la cuantización correspondiente a
los niveles de gris entregados por la cámara, no estaban dispuestos de manera
progresiva lineal, lo cual complicaba su cálculo, Ver Figura 29 A. Por recomendación del
autor de la librería, fue necesario realizar un reajuste de su resolución a 10 bits para
luego efectuar un desplazamiento de dos posiciones, eliminando los 2 bits de menor
peso y dio como resultado un vector donde el valor en cada posición fuese
representado en 8 bits de resolución. Gracias a este reajuste, los datos obtenidos
presentaron un comportamiento casi lineal, Ver Figura 29 B.
Figura 29 Valor pixel respecto a la distancia tomados con una resolución de 10 bits y 8 bits
60
VALOR PIXEL RESPECTO A LA DISTANCIA TOMADOS CON
UNA RESOLUCIÓN DE 10 BITS
330
280
230
180 A
130
80
40 90 140 190 240 290 340
280
230
B
180
130
80
30
100 120 140 160 180 200 220 240
Fuente (Autores)
Con base en las gráficas obtenidas y por medio del software de código abierto para
análisis de datos LibreOffice, fue posible hallar la ecuación característica, observando
que la ecuación resultante de Figura 29 B, cuya gráfica es un polinomio de orden 5 y
dado que en dicha grafica los pixeles aumentan su valor respecto al incremento de la
distancia, se obtiene la Ecuación 29:
61
F
uente (Autores)
Figura 31 Detección de ruido sal y pimienta y eliminación del ruido mediante operaciones
morfológicas.
62
Fuente (Autores)
Para la etapa de detección, fue necesaria la carga de cada una de las imágenes
provenientes de la anterior etapa, con el fin de ejecutar el kernel correspondiente al
algoritmo de detección. Como primer paso, mediante valores pre definidos, se fracciona
la imagen en tres partes verticales y cinco horizontales (para efecto representativo, esta
división es visualizada por la grilla verde, Ver Figura 32) con los cuales fue posible
designar la ubicación espacial en la que se encuentran los pixeles en la imagen,
considerando la distorsión de perspectiva del observador y el efecto túnel que esto
genera, es necesario también que esta varíe su tamaño de análisis conforme aumenta
la distancia que se analiza.
A B C
D E F
Fuente: (Autores)
(En la Figura 32 se observa la secuencia del barrido para la estimación espacial de los
objetos).
63
no cumplirse esta condición, la región será identificada como riesgosa, además,
mediante la ecuación característica es posible definir la distancia que cada capa
representa y de manera directa se referencia la distancia a la que están los objetos
encontrados en cada una de ellas. Debido a que en el mapa de profundidad el suelo
también es representado como un objeto, fue necesario aplicar el algoritmo para su
discriminación, en el momento de realizar la detección, explicado en la sección de
técnicas (Ver Figura 33).
F
uente: (Autores)
Por cada capa analizada se genera un vector de 16 posiciones donde cada posición
representa el análisis de cada uno de los fragmentos y si éste está libre de objetos o no;
en la última posición se almacena la distancia en la que se realizó el análisis. Dado que
se generan múltiple cantidad de capas (donde por cada una se crea un vector
correspondiente), fue necesario anexar cada una a una sola matriz.
64
Figura 34 Matriz resultante de detección de objetos.
Fuente: (Autores)
Fuente: (Autores)
La configuración del puerto serial que posee la tarjeta de desarrollo se realizó por medio
de la librería serial, donde se activa el puerto 1 y se ajustan los mismos parámetros para
la comunicación, establecidos en el microcontrolador. Cada vez, que en el programa
principal se genera un pulso por un pin del GPIO hacia el pin de interrupción del
microcontrolador, y si el valor recibido por el puerto serial, indica la presencia de un
obstáculo a una distancia igual o menor a 80 cm, se genera inmediatamente una alerta
de riesgo la cual tiene la prioridad de ser reproducida durante la ejecución del programa
principal. Debido a que la alerta puede ser disparada cuando el usuario se acerque
65
intencionalmente a un objeto o que incluso se encuentre con otra persona, la alarma
solo sonará tres vece seguidas y luego se pausará, hasta que detecte un cambio de
distancia por encima del umbral.
Por último, la creación de las alertas audibles fue realizada mediante la librería gtts
(Google text to speach) con la cual, mediante la función (gTTS()) se configuró el texto y
el lenguaje al que se deseó reproducir la indicación definida en formato de audio.
Puesto que para su funcionamiento se necesitaba conexión constante a internet, se
identificó que esta limitación disminuiría la autonomía del prototipo, por ello, se
generaron y se almacenaron los audios con las palabras que conforman la alerta por
separado. La función utilizada para la reproducción del audio, extrae el dato en formato
string, en la posición 4 del vector obtenido del subsistema de elaboración de rutas, el
cual, al adicionarle la terminación .mp3 coincide con el nombre del audio a reproducir.
A B
Fuente: (Autores)
66
pista de obstáculos, usando los tres modos de emisión de alertas por parte del
asistente (alertas hápticas, audibles e híbridas). Para la prueba se contó con la
presencia de 6 particiapantes entre 20 a 25 años de edad, quienes firmaron un
consentimiento informado que se presenta en el Anexo xx.
Fuente: (Autores)
67
diferentes versiones, MobileNet y watershed, con los que se realizaron las pruebas en
software obteniendo los resultados que se muestran en la sección 4.2.
YOLO
Debido a que esta técnica cuenta con diversas versiones (cada una con distintas
cualidades), se implementaron aquellas facilitadas por el desarrollador que
estuvieran enfocadas a plataformas móviles con sistema operativo Linux.
Yolo v2
yolov2-tiny Variación en tamaño y ejecución 4 FPS
de yolov2
Yolo v3
yolov3- Adición de activación SELU 6 FPS
openimages
yolov3-tiny-prn No presenta 5 FPS
Tal como se muestra en la Tabla 8, cada versión cuenta además con variantes,
las cuales poseen algún cambio ya sea en el tamaño, distribución o arquitectura
de la red neuronal utilizada, así como en parámetros de entrada o en el tamaño
o método del set de entrenamiento. Pese a esto, se observa que ninguna
68
muestra un rendimiento óptimo para el sistema, además de que no entregan con
la suficiente certeza ni en su totalidad la identificación de los objetos de interés.
Mobilenet
Tabla 9 Tiempos de ejecución total y de cada una de las etapas del algoritmo
Para la síntesis del algoritmo, fue necesario tener en cuenta los requerimientos para su
implementación en CUDA, además del análisis por etapas presentados en el anterior
capitulo. La síntesis resultante es presentada en la sección de anexos.
69
observa que en cuanto a tiempos de ejecución por cada función principal se
presentaron mejoras notables, mejoras dadas principalmente por el proceso de
obtención del mapa de profundidad. Sin embargo, se observa que el número de
llamadas realizadas a las funciones por parte del prototipo anterior fueron mucho
menos, comparadas con las del prototipo presente, esto se puede deber a la diferencia
del funcionamiento del algoritmo además del software utilizado para su ejecución.
Tabla 10 Tiempos obtenidos del prototipo anterior soportado en CPU i3 core de segunda
generación
Funciones principales Llamadas Tiempo (seg)
Guide 1 0
Pre procesamiento 1 0,125
Obtención disparidad 1 0,078
Post procesamiento 1 0,623
Ruta 2 0,235
Sonido (comando voz) 1 1,44
Tabla 11 Tiempos obtenidos del prototipo anterior soportado en CPU ARMv8.2 y GPGPU
NVIDIA Carmel
Funciones principales Llamadas Tiempo (seg)
Sistema de adquisición 1 0,0016152
Pre procesamiento 16 0,0647164
Detección 16 0,0064916
Post procesamiento 16 0,0014233
Generación alertas 1 0,0031030
Fuente: Autores
70
4.4. Verificar La Efectividad Del Prototipo Y Validar Su Funcionamiento En
Condición De Discapacidad Visual
Como se mencionó en el capítulo anterior, para aplicar las pruebas de validación del
proyecto desarrollado, se realizó una serie de recorridos con la ayuda de 6
participantes, dichas experiencias fueron consignadas en una encuesta la cual arrojó los
siguientes resultados.
71
Fuente Tomada de (Autores)
Al usar únicamente las alertas hápticas, el 33,3% de las personas manifestaron que
este tipo de alertas dieron mejores resultados en comparación a las alertas audibles al
momento dar guía a los voluntarios. Y el 0% prefirió las alertas audibles únicamente,
puesto que según los voluntarios estas no brindaban la información necearía para
transitar de manera correcta la pista de obstáculos, además de ser confusa al momento
de dar la guía en la ruta trazada por el dispositivo.
Otro parámetro evaluado en las pruebas realizadas del funcionamiento del prototipo, fue
la facilidad de la interpretación de las alertas. Para esto se le pidió a los participantes
dar una calificación en cuanto a la facilidad de interpretación de las alertas emitidas por
el dispositivo después de un breve tiempo de entrenamiento para entenderlas, esta
valoración también se dio en un rango de 1 a 10 (1 muy difícil de interpretar, 10 muy
fácil de interpretar), los resultados obtenidos de esta calificación se muestran en la
gráfica de la Figura 40
Figura 40 Gráfica facilidad de interpretación de alertas por parte de los usuarios (1 muy difícil de
interpretar, 10 muy fácil de interpretar)
72
Fuente: (Autores)
Como muestra la Figura 40, el 33,33% de las personas encuestadas manifestó que la
interpretación de alertas era bastante fácil e intuitiva, al 33,4% de las personas
encuestadas le resultó muy difícil y confusa la interpretación de las indicaciones dadas
por el asistente; el porcentaje restante manifestó que las alertas que provenían del
dispositivo eran bastante intuitivas para interpretar, las personas que manifestaron que
las alertas emitidas por el asistente fueron confusas al momento de indicar la ruta a
transitar. Recomendaron que al menos las alertas audibles fueran más descriptivas,
además de dar más información acerca de la ruta a transitar; también expresaron que
sería bueno modificar las alertas hápticas para hacer más fácil su interpretción.
5. CONCLUSIONES
Se observó que la cámara Kinect es una buena alternativa como dispositivo para
adquisición de imágenes en este tipo de aplicaciones, sin embargo, esta presenta una
limitante debido a su tamaño, siendo lo que afecta directamente, la portabilidad del
dispositivo.
73
y 80 cm. Cabe resaltar que estas medidas pueden variar en función de la altura de la
persona que porte el asistente.
Al hacer la comparación del prototipo realizado por (ARIZA et al., 2012) con el
propuesto en el trabajo, se observa una notoria mejoría, en la cantidad de información
que este capta para procesar y la velocidad en la que lo hace. Sin embargo, a pesar de
estas mejorías es evidente que aún se pueden realizar optimizaciones para reducir aún
más los tiempos de procesamiento con el objetivo de dar mayor fluidez al usuario al
momento de realizar la navegación.
6. RECOMENDACIONES.
También se recomienda usar plataformas con mayor capacidad de cómputo, con el fin
de mejorar el tiempo de procesamiento de datos y ofrecer a los usuarios una respuesta
en tiempo real, mejorando así su movilidad.
Para trabajos futuros se recomienda tener en cuenta la ubicación de los lentes del
Kinect para el mejoramiento del dispositivo, o hacer uso de una cámara con
características más pequeñas, pero con un menor tamaño para mejorar la portabilidad
del dispositivo.
74
7. BIBLIOGRAFÍA
Ammar, A., Koubaa, A., Ahmed, M., Saad, A., & Benjdira, B. (2019). Aerial Images
Processing for Car Detection using Convolutional Neural Networks: Comparison
between Faster R-CNN and YoloV3. 1–37.
https://doi.org/10.3390/electronics10070820
ARIZA, J., PÉREZ, W., & TALERO, G. (2010). ELECTRONIC GUIDE SYSTEM FOR
BLIND PEOPLE IN CONTROLLED INDOOR ENVIRONMENTS. 9.
ARIZA, J., TALERO, G., & PEREZ, W. (2012). DISEÑO E IMPLEMENTACIÓN DE UN
SISTEMA ELECTRÓNICO DE GUÍA PARA PERSONAS INVIDENTES EN
ESPACIOS CERRADOS CONTROLADOS (BLIND GUIDANCE SYSTEM).
Unioversidad Pedagógica y Tecnológica De Colombia.
Baron, D., Lino, M., Memoria, S., & Sanchez, F. (2002). Fundamentos de
Procesamiento de Imágenes Evento: CONATEC 2002. In Conatec 2002.
universidad Áutonoma De Baja California.
Bourne, R. R. A., Steinmetz, J. D., Flaxman, S., Briant, P. S., Taylor, H. R., Resnikoff,
S., Casson, R. J., Abdoli, A., Abu-Gharbieh, E., Afshin, A., Ahmadieh, H., Akalu, Y.,
Alamneh, A. A., Alemayehu, W., Alfaar, A. S., Alipour, V., Anbesu, E. W., Androudi,
S., Arabloo, J., … Vos, T. (2021). Trends in prevalence of blindness and distance
and near vision impairment over 30 years: An analysis for the Global Burden of
75
Disease Study. The Lancet Global Health; Elsevier Ltd.
https://doi.org/10.1016/S2214-109X(20)30425-3
Chang, Q., & Maruyama, T. (2018). Real-Time Stereo Vision System: A Multi-Block
Matching on GPU. IEEE Access, 6, 42030–42046.
https://doi.org/10.1109/ACCESS.2018.2859445
Cortes Osorio, J., Urueña, W., & Mendoza Vargas, J. (2011). Técnicas alternativas para
la conversión de imágenes a color a escala de grises en el tratamiento digital de
imágenes. Scientia Et Technica, XVII(47), 207–212.
https://doi.org/10.22517/23447214.533
darknet/cfg at master · AlexeyAB/darknet · GitHub. (n.d.). Retrieved April 6, 2022, from
https://github.com/AlexeyAB/darknet/tree/master/cfg
De Frías, C., HERNÁNDEZ, J., & MARTINEZ, S. (2019). Visión artificial aplicada en la
identificación de objetos y su parametrización geométrica [Universidad Carlos III
DE Madrid]. https://e-archivo.uc3m.es/handle/10016/29643
Dobernak, N. A. (2015). procesamiento de imágenes. 42–72.
Fernández, R. (2020). Aplicación de filtros morfológicos en imágenes.
https://riunet.upv.es/bitstream/handle/10251/145903/Ruiz - Aplicación de filtros
morfológicos en imágenes.pdf?sequence=1
Giesteira, C., Zattera, A., & V. Godall, P. (2013). La Enseñanza de la música para
personas con discapacidad visual. In CienciaUAT (Vol. 2, Issue 2).
http://www.once.es/new/servicios-especializados-en-discapacidad-visual/
publicaciones-sobre-discapacidad-visual/nueva-estructura-revista-integracion/
copy_of_numeros-publicados/numero-64/la-ensenianza-de-la-musica-para-
personas-con-discapacidad-visual-elabo
gimp org. (2021). 8.2. Matriz de convolución. https://docs.gimp.org/2.6/es/plug-in-
convmatrix.html
Gonzalez, R. C., Woods, R. E., & Masters, B. R. (2009). Digital Image Processing, Third
Edition. In PEARSON (Ed.), Journal of Biomedical Optics (THIRD EDIT, Vol. 14,
Issue 2). https://doi.org/10.1117/1.3115362
Gpu, V., Arm, C., Gb, G. B. L., & Cpu, C. (2020). NVIDIA Jetson Xavier NX System-on-
Module. 1–40.
Guerrero, D., & Villaluenga, L. (2013). Microsoft Kinect. In Universidad Politécnica de
Catalunya. Universidad Politécnica de Catalunya.
GUERRERO, J. (2018). DISEÑO DE UN SISTEMA DE DETECCIÓN DE
OBSTACULOS EN AMBIENTES CERRADOS PRA PERSONAS CON CEGUERA
TOTAL EN SAN JUAN DE PASTO (Vol. 2, Issue 1) [Universidad Autónoma De
Nariño].
http://link.springer.com/10.1007/978-3-319-76887-8%0Ahttp://link.springer.com/
10.1007/978-3-319-93594-2%0Ahttp://dx.doi.org/10.1016/B978-0-12-409517-
5.00007-3%0Ahttp://dx.doi.org/10.1016/j.jff.2015.06.018%0Ahttp://dx.doi.org/
10.1038/s41559-019-0877-3%0Aht
Hameed, A., & Ahmed, H. A. (2019). Survey on indoor positioning applications based on
different technologies. 12th International Conference on Mathematics, Actuarial
Science, Computer Science and Statistics, MACS 2018 - Proceedings, 1–5.
https://doi.org/10.1109/MACS.2018.8628462
Hernández, M., Guerrero, G. D., Cecilia, J. M., García, J. M., Inuggi, A., Jbabdi, S.,
Behrens, T. E. J., & Sotiropoulos, S. N. (2013). Accelerating Fibre Orientation
Estimation from Diffusion Weighted Magnetic Resonance Imaging Using GPUs.
PLoS ONE, 8(4). https://doi.org/10.1371/journal.pone.0061892
Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto,
M., & Adam, H. (2017). MobileNets: Efficient Convolutional Neural Networks for
Mobile Vision Applications. http://arxiv.org/abs/1704.04861
Idrees, A., Iqbal, Z., & Ishfaq, M. (2015). An efficient indoor navigation technique to find
optimal route for blinds using QR codes. Proceedings of the 2015 10th IEEE
76
Conference on Industrial Electronics and Applications, ICIEA 2015, 690–695.
https://doi.org/10.1109/ICIEA.2015.7334197
Jadhav, R., Anand, D. S., Gupta, A. K., Khare, S., Sharma, D., & Tapadiya, P. (2020).
Real-Time Object Detection for Visually Challenged. Advances in Intelligent
Systems and Computing, 1311 AISC(Iciccs), 281–296. https://doi.org/10.1007/978-
981-33-4859-2_28
Klöckner, A. (2021). Home - pycuda 2021.1 documentation.
https://documen.tician.de/pycuda/
Li, B., Munoz, J. P., Rong, X., Chen, Q., Xiao, J., Tian, Y., Arditi, A., & Yousuf, M.
(2019). Vision-Based Mobile Indoor Assistive Navigation Aid for Blind People. IEEE
Transactions on Mobile Computing, 18(3), 702–714.
https://doi.org/10.1109/TMC.2018.2842751
Mainzer, D., & Zachmann, G. (2015). GPU Computing and Applications. In Springer
(Ed.), GPU Computing and Applications. https://doi.org/10.1007/978-981-287-134-
3_9
MatLab. (2022). Tipos de imagen - MATLAB & Simulink - MathWorks América Latina.
https://la.mathworks.com/help/matlab/creating_plots/image-types.html
MaxBotix Inc. (2021). HRLV - MaxSonar ® - EZ TM Series. 1–17.
https://www.maxbotix.com/
MICROCHIP. (2010). Datasheet - PIC12F629 PIC12F675.
Miño, J., & GÁMEZ, B. (2020). Diseño De Un Dispositivo De Apoyo Para La Movilidad
De Personas Con Discapacidad Visual. Universidad Técnica Del Norte.
Murata, M., Ahmetovic, D., Sato, D., Takagi, H., Kitani, K. M., & Asakawa, C. (2018).
Smartphone-based Indoor Localization for Blind Navigation across Building
Complexes. 2018 IEEE International Conference on Pervasive Computing and
Communications, PerCom 2018, 1–10.
https://doi.org/10.1109/PERCOM.2018.8444593
Nair, V., Tsangouri, C., Xiao, B., Olmschenk, G., Zhu, Z., & Seiple, W. (2018). A Hybrid
Indoor Positioning System for the Blind and Visually Impaired Using Bluetooth and
Google Tango. Journal on Technology and Persons with Disabilities, 6, 62–82.
Novoa, K., & Rojas, L. (2019). La importancia de la comunicación no verbal en el
desarrollo de la comunicación efectiva del relacionador público en la organización.
Universidad Viña Del Mar, 53(9), 1689–1699.
Nvidia. (n.d.). CUDA Overview. Retrieved August 14, 2021, from
http://cuda.ce.rit.edu/cuda_overview/cuda_overview.htm
Nvidia. (2020a). Jetson Xavier Nx.
Nvidia. (2020b). XAVIER NX The World ’ s Smallest AI Supercomputer for Embedded
and Edge Systems.
NVIDIA. (2017). Nvidia Tesla V100 GPU Volta Architecture. White Paper, v1.1, 53.
http://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-
whitepaper.pdf%0Ahttp://www.nvidia.com/content/gated-pdfs/Volta-Architecture-
Whitepaper-v1.1.pdf
NVIDIA. (2019). Jetson-gpio: una biblioteca de Python que permite el uso de GPIO de
Jetson. https://github.com/NVIDIA/jetson-gpio
NVIDIA. (2020). DATA SHEET NVIDIA Jetson Nano System.
https://developer.nvidia.com/embedded/jetson-nano-developer-kit
NVIDIA. (2021). Cuda C Programming Guide. Programming Guides, September, 1–261.
OBANDO, V., & SOTOMAYOR, N. (2015). DISEÑO Y CONTRUCCIÓN DE UN
SISTEMA DE ORIENTACIÓN PARA AYUDA EN LA MOVILIDAD DE PERSONAS
INVIDENTES. Escuela Politecnica Nacional.
Osma-Ruiz, V., Godino-Llorente, J. I., Sáenz-Lechón, N., & Gómez-Vilda, P. (2007). An
improved watershed algorithm based on efficient computation of shortest paths.
Pattern Recognition, 40(3), 1078–1090.
https://doi.org/10.1016/j.patcog.2006.06.025
77
Owens, J. D., Houston, M., Luebke, D., Green, S., Stone, J. E., & Phillips, J. C. (2008).
GPU Computing. GPGPU Programming for Games and Science, 33–120.
https://doi.org/10.1201/b17296-8
Parissaki, B., & OTERO, J. (2019). Desarrollo E implementación De Una Arquitectura
Hardware Para El Calculo De Mapas De Profundidad Para Visión Estereoscipica.
Universidad Politecnica De Madrid.
Patel, C. T., Mistry, V. J., Desai, L. S., & Meghrajani, Y. K. (2018). Environment for
Visually Impaired People. 2018 Second International Conference on Intelligent
Computing and Control Systems (ICICCS), Iciccs, 1–4.
Plikynas, D., Žvironas, A., Budrionis, A., & Gudauskis, M. (2020). Indoor navigation
systems for visually impaired persons: Mapping the features of existing
technologies to user needs. Sensors (Switzerland), 20(3), 18.
https://doi.org/10.3390/s20030636
Pulido, G. (2020). Las estadísticas, un insumo necesario. | Instituto Nacional para
Ciegos. https://www.inci.gov.co/blog/las-estadisticas-un-insumo-necesario
Rafa Docencia. (n.d.). Operaciones morfologicas . Retrieved September 14, 2021, from
http://eia.udg.es/~rafa/docencia/morfologia.pdf
Romero, D., Rodríguez, F., & Pérez, M. (2018). Diseño de un Sistema Portátil para la
Detección de Obstáculos por medio de Kinect, como Apoyo a Personas con
Limitaciones Visuales [Universidad Distrital Francisco José De Caldas].
http://repository.udistrital.edu.co/bitstream/11349/14039/3/RodriguezFernandezWil
marFelipe2018.pdf
Sabrent. (2021). Sabrent USB Aluminum External Stereo Sound Adapter | Black (AU-
EMCB) | AU-EMCB. https://www.sabrent.com/product/AU-EMCB/usb-aluminum-
external-stereo-sound-adapter-black/
Sadi, M. S., Mahmud, S., Kamal, M. M., & Bayazid, A. I. (2014). Automated walk-in
assistant for the blinds. 1st International Conference on Electrical Engineering and
Information and Communication Technology, ICEEICT 2014.
https://doi.org/10.1109/ICEEICT.2014.6919037
SEGURA, O., & LOZADA, P. (2019). DISEÑO Y CONSTRUCCIÓN DE UN SISTEMA
ELECTRÓNICO PARA PERSONAS NO VIDENTES COMO AYUDA PARA EL
CRUCE DE LAS CALLES URBANAS BASADO EN EL PROCESAMIENTO DE
IMÁGENES. Escuela Superior Pilitecnica De Chimborazo.
Sekhar, V. C., Bora, S., Das, M., Manchi, P. K., Josephine, S., & Paily, R. (2016).
Design and Implementation of Blind Assistance System Using Real Time Stereo
Vision Algorithms. Proceedings of the IEEE International Conference on VLSI
Design, 2016-March, 421–426. https://doi.org/10.1109/VLSID.2016.11
Simoes, W. C. S. S., Da Silva, L. M., Da Silva, V. J., & De Lucena, V. F. (2018). A
Guidance System for Blind and Visually Impaired People via Hybrid Data Fusion.
Proceedings - IEEE Symposium on Computers and Communications, 2018-June,
1261–1266. https://doi.org/10.1109/ISCC.2018.8538480
SONZA, M., STERPONE, L., RODRIGUEZ, J., DU, B., & PENAGLIA, C. (2019). Master
’ s Degree in Embedded Systems Master ’ s Thesis Reliability issues in GPGPUs
(Issue December). Politecnico Di Torino.
Takizawa, H., Yamaguchi, S., Aoyagi, M., Ezaki, N., & Mizuno, S. (2015). Kinect cane:
an assistive system for the visually impaired based on the concept of object
recognition aid. Personal and Ubiquitous Computing, 19(5–6), 955–965.
https://doi.org/10.1007/s00779-015-0841-4
Tapu, R., Mocanu, B., Bursuc, A., & Zaharia, T. (2013). A smartphone-based obstacle
detection and classification system for assisting visually impaired people.
Proceedings of the IEEE International Conference on Computer Vision, 444–451.
https://doi.org/10.1109/ICCVW.2013.65
Texas, I. (2015). DUAL H-BRIDGE MOTOR DRIVER. August.
Vanegas, E., & MARULANDA, J. (2017). Consideraciones de diseño para un circuito de
78
disparo de tiristores en un rectificador trifásico totalmente controlado. Universidad
Tecnológica De Pereira.
Vasquez, R., & Cardona, A. (2019, April). Dispositivos de asistencia para la movilidad en
personas con discapacidad visual: una revisión bibliográfica. Revista Politécnica,
15(28), 107–116. https://doi.org/10.33571/rpolitec.v15n28a10
Villa, O., Stephenson, M., Nellans, D., & Keckler, S. W. (2019). NVBit: A dynamic binary
instrumentation framework for NVIDIA GPUs. Proceedings of the Annual
International Symposium on Microarchitecture, MICRO, 372–383.
https://doi.org/10.1145/3352460.3358307
Villegas, A., Asenjo, R., & Plata, O. (2015). Memoria Transaccional Hardware en
Memoria Local de GPU.
World Health organization. (2010). Global data on visual impairments 2010.
https://www.who.int/emergencies/diseases/novel-coronavirus-2019?
gclid=CjwKCAjw092IBhAwEiwAxR1lRkDG_cAxXX61_wj1cEluDWtKYOrbEsyxU3nF
9UpkLXhpMSIR8A780RoC540QAvD_BwE
Xu, F., & Fujimura, K. (2003). Human detection using depth and gray images.
Proceedings - IEEE Conference on Advanced Video and Signal Based
Surveillance, AVSS 2003, 115–121. https://doi.org/10.1109/AVSS.2003.1217910
Zhang, H., & Ye, C. (2016). An indoor navigation aid for the visually impaired. 2016
IEEE International Conference on Robotics and Biomimetics, ROBIO 2016, 467–
472. https://doi.org/10.1109/ROBIO.2016.7866366
Zhang, Z. (2012). Microsoft kinect sensor and its effect. IEEE Multimedia, 19(2), 4–10.
https://doi.org/10.1109/MMUL.2012.24
79