$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Implementación de detección de peatones en HLS
La Figura 4 muestra los resultados de la simulación en la herramienta HLS para la detección de peatones usando HoG + SVM. Se alimenta una imagen de entrada con un peatón como entrada de prueba al código, y se muestra la salida con los peatones detectados. Hay dos secciones en la imagen. La primera detección muestra muchas cajas delimitadoras alrededor del mismo peatón una y otra vez, y en la segunda imagen, las cajas superpuestas se eliminan y se suprimen, quedando solo las cajas principales de detección.

Figura 4: Resultado de simulación de la herramienta HLS. (A,B) Dos imágenes de entrada diferentes y las imágenes resultantes con los peatones detectados. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
La herramienta HLS también proporciona informes de síntesis sobre el momento y la utilización de recursos. El resumen de tiempos destaca el periodo de tiempo requerido por el diseño y proporciona los valores máximos y mínimos de latencia en términos del número de ciclos. Esta información es útil para estimar cuánto tiempo requiere el diseño para ejecutarse y cuál debería ser la frecuencia de reloj al pasar a la implementación real del hardware. La tabla 2 siguiente muestra el informe de temporización tras la síntesis HLS, que muestra claramente que el periodo de reloj objetivo era de 6 ns y el diseño tardaba 5,25 ns, que es menos que el objetivo, por lo que el periodo puede ser de 6 ns o más, pero no inferior a 5 ns.
| Resumen de tiempos |
| Reloj | Objetivo | Estimado |
| 6,00 ns | 5.250 ns |
| Resumen de utilización |
| Total / Disponible | Porcentaje de utilización |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
Tabla 2: Informe estimado de tiempo y utilización de recursos de la herramienta HLS para la detección de peatones usando HoG-SVM.
La Tabla 2 también muestra el informe de utilización. Muestra el porcentaje de utilización de recursos importantes de FPGA a bordo según la placa objetivo seleccionada. Para este diseño de detección de peatones, el informe de utilización muestra que el diseño consume el 14% de las tablas de consulta (LUTs), el 3% de los Flip Flops (FF), el 3% del procesamiento digital de señales (DSP) y el 5% de la memoria de acceso aleatorio por bloques (BRAM). Estas estimaciones no son los informes exactos de utilización, pero los informes reales se acercan a estas estimaciones. Estas son solo las estimaciones que pueden calcularse las herramientas HLS. La implementación real suele ser muy diferente de estas estimaciones.
La implementación real resulta de la programación por hardware
Una vez que el código se mapea a una IP, que se importa en la herramienta de programación FPGA, y el diseño se implementa en el hardware real del FPGA, también se generan varios informes. La primera es el resumen de tiempos, que muestra si la frecuencia de reloj proporcionada al diseño es suficiente o no. Si se cumplen todas las restricciones de tiempo y no hay violaciones, entonces el diseño puede avanzar. La tabla 3 siguiente muestra el resumen de tiempos generado por la herramienta. Como se muestra en la tabla, el resumen de tiempos indica el peor margen negativo, que es de 4,073 ns. Como este valor es positivo, indica que aún queda disponible este tiempo. Los valores negativos indican que el FPGA tarda más en completar la tarea y el reloj avanza rápido. Dado que en este caso no hay valores negativos, lo que significa que se cumplen las restricciones temporales.
| Resumen del Tiempo de Diseño |
| Configuración | Espera | Ancho de pulso |
| Peor holgura negativa 4,073 ns | Peor holgura de sujeción 0,010 ns | Peor ancho de pulso: holgura 3.500 ns |
Tabla 3: Resumen real del tiempo para la detección de peatones en la placa FPGA.
Además, la herramienta muestra los informes de utilización de recursos, que son la utilización real de los recursos a bordo según la placa FPGA seleccionada. En este caso, la placa seleccionada es la placa de desarrollo FPGA27 basada en Zynq UltraScale+ MPSoC (Multi-Processor System On Chip). La siguiente tabla 4 muestra la utilización de recursos y la Figura 5 muestra la representación diagramática de la utilización de recursos.
El resumen de utilización indica el consumo real de los recursos a bordo, dado que se utilizan 8 IPS HoG en paralelo, y las estimaciones reportadas por la síntesis HLS eran para una única IP HoG. Pero incluso después de un uso tan extenso, la utilización de recursos para cada recurso es inferior al 50%. La Tabla 4 indica claramente la utilización respecto a los distintos recursos y su porcentaje de utilización, que se representa pictóricamente en la Figura 5.
| Recurso | Utilización | Disponible | Porcentaje de utilización |
| LUT | 40536 | 70560 | 57.45% |
| LUTRAM | 7304 | 28800 | 25.36% |
| FF | 33342 | 141120 | 23.63% |
| BRAM | 68 | 216 | 31.48% |
| DSP | 128 | 360 | 35.56% |
| BUFG | 2 | 196 | 1.02% |
Tabla 4: Informe de utilización real para la detección de peatones en la placa FPGA.

Figura 5: Utilización de recursos para la detección de peatones en la placa FPGA tras la implementación real. Consulta tablas (LUT): 57%, LUTRAM: 25%, Flip flops (FF): 24%, RAM bloqueada (BRAM): 31%, procesadores de señal digital (DSP): 36%, búferes: 1%. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
El tercer informe trata sobre las estimaciones de potencia de la placa para la cantidad de consumo energético por el diseño. La figura 6 a continuación muestra el informe de consumo energético, que muestra que la potencia total en el chip es de 2,435 W. También se muestran la temperatura de la unión y la potencia consumida por cada red y componente importante. Las mediciones de potencia no muestran ningún consumo alarmante y, por tanto, el diseño puede considerarse eficiente energéticamente.

Figura 6: Estimación de potencia para la detección de peatones en la placa FPGA tras la implementación real. El informe de potencia generado por las herramientas muestra la potencia total consumida como 2,435 W y también muestra la distribución de la potencia entre los distintos recursos en la placa FPGA. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
Se realiza otro análisis para entender la ventaja de usar 8 IPs HoG en lugar de una IP HoG única o más de 8 en el diagrama de bloques creado, como se muestra en la Figura 3. Las métricas de rendimiento relacionadas con el hardware se calcularon tanto para una IP HoG como para 8 IP HoG en paralelo. La tabla 5 a continuación muestra la comparación.
| Métrica de rendimiento | 1 IP | 8 IPs |
| Sincronización (ns) | 5.312 | ~5.25 |
| Frecuencia (MHz) | 188 | 150 |
| Potencia (W) | 1.9 | 2.43 |
| LUTs | 4998 | 40536 |
| FF / Registros | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
Tabla 5: Comparación de métricas de rendimiento usando IPs HoG únicas frente a múltiples.
La Tabla 5 indica claramente que cuando se consideran los recursos como las LUTs, FFs, DSPs y BRAM, entonces con una IP HoG única y 8 IPs HoG, la escala es lineal con un aumento de casi 8 veces en los recursos utilizados. Esto es claramente de esperar, ya que más IPs llevarán a que se consuman más recursos. Además, si se observa la frecuencia, la frecuencia máxima también se degrada ligeramente un 20% de 188 MHz a 150 MHz. Esto también es de esperar, ya que más bloques conducen a más conexiones y, por tanto, a caminos más largos, provocando un aumento de rutas críticas. Pero los factores ventajosos como los frames por segundo (FPS) mejoran de 10 a 83, demostrando un escalado no lineal en el caso de los FPS debido al concepto introducido de paralelismo, debido a 8 IPs HoG. Además, la potencia escala de 1,9 W a 2,4 W, lo que indica una mejora en la eficiencia energética gracias a la tubería de tubería. Por tanto, este análisis indica claramente que la introducción de 8 IPs HoG es beneficiosa para el diseño, y escalar más allá de 8 puede causar un sobreconsumo de recursos; por tanto, el número de bloques superiores a 8 no se considera favorable.
Resultados de detección de peatones tras la implementación de FPGA
Finalmente, todo el sistema está integrado en la placa FPGA y se genera el archivo de flujo de bits, que luego se programa en la placa a través de la tarjeta SD arrancada con capacidad de programabilidad en Python. Una vez que la placa arranca con la tarjeta SD, se puede acceder a la interfaz jupyter y se puede escribir y ejecutar código Python en la plataforma. El código Python se ejecuta y prueba para detectar peatones en diferentes imágenes de entrada. El resultado de algunas imágenes se muestra en la Figura 7 a continuación. Estas imágenes se utilizan del conjunto de datos INRIA, así como imágenes aleatorias de peatones obtenidas de fuentes onlinede código abierto 26,27.

Figura 7: Resultados de detección de peatones en imágenes fijas a través de la placa FPGA. Las imágenes probadas incluyen imágenes del conjunto de datos INRIA, imágenes de código abierto disponibles en Google para comprobar la precisión de detección en calles concurridas de India. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
El sistema también se prueba en captura de fotogramas en tiempo real mediante una cámara web y detecta a los peatones en el encuadre, así como se prueba con entradas de vídeo ya grabadas de peatones. Los resultados de esto se muestran en la Figura 8 y la Figura 9. La Figura 8 muestra un conjunto de fotogramas de ejemplo capturados por la cámara web y los resultados de la detección de peatones en cada fotograma, mientras que la Figura 9 muestra los resultados de la detección de peatones implementados en un vídeo de entrada proporcionado al sistema.

Figura 8: Resultados de detección de peatones en un fotograma capturados por una cámara en tiempo real a través de la placa FPGA. Captura en tiempo real de vídeo mediante cámara web 720 P y demostración de la detección en tiempo real de peatones. Las imágenes borrosas se producen al tomar instantáneas del vídeo en directo en curso. Por favor, haz clic aquí para ver una versión ampliada de esta figura.

Figura 9: Resultados de detección de peatones en vídeos proporcionados como entrada a la placa FPGA. Los vídeos fueron tomados de enlaces de código abierto. Por favor, haz clic aquí para ver una versión ampliada de esta figura.
Estimación de métricas de rendimiento
Para calcular la eficiencia y analizar el rendimiento del diseño implementado anteriormente, es esencial calcular métricas de rendimiento útiles para evaluar el rendimiento. Las métricas de rendimiento para detectar la eficiencia de un algoritmo de detección dependen básicamente de los valores de verdaderos positivos (TP), verdaderos negativos (TN), falsos positivos (FP) y falsos negativos (FN). A partir de estos valores, las métricas de rendimiento como precisión, recuerdo, puntuación F1, falsos positivos por imagen y precisión pueden calcularse según las ecuaciones que se indican a continuación. Se ha observado que la mayoría de los artículos de investigación informan su rendimiento de detección a través del parámetro de precisión. Pero se ha observado que el cálculo de precisión que implica el uso de TN puede ser un parámetro engañoso, ya que el valor de TN no puede calcularse correctamente en un sentido verdadero, ya que implica encontrar el conteo de todas las ventanas de detección en una imagen que en realidad no tiene un peatón, y el algoritmo implementado también lo informa como sin detecciones. Este número suele ser muy grande, ya que el número total de ventanas de detección en una imagen es grande, y las áreas de fondo en cada imagen suelen corresponder a regiones sin peatones. Observando detenidamente la fórmula de precisión mostrada en las ecuaciones [1] – [5], se puede deducir que, dado que el valor de TN será bastante alto en comparación con TP+FP+FN, el parámetro de precisión suele tener un valor alto. Para evaluar realmente el rendimiento, es mucho mejor informar de métricas como precisión, recuerdo y puntuación F1 que no dependen del TN y, por tanto, son mucho más precisas.
[1]
[2]
[3]
[4]
[5]
Para encontrar los valores de TP, TN y FN para este artículo, el experimento con imágenes fijas se repitió en un gran número de imágenes. A partir de los resultados de cada imagen, se calculó el valor de los verdaderos positivos, que es el número de peatones detectados correctamente, falsos positivos, el número de peatones detectados erróneamente y falsos negativos, que son los peatones reales que no fueron detectados. Los siguientes valores se informaron tras los experimentos realizados y se muestran en la Tabla 6 a continuación.
| Métrica de rendimiento | Valor |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| Precison | 0.786 (78.6%) |
| Revocación | 0.883 (88.3%) |
| Puntuación de F1 | 0.831 (83.1%) |
| FPPI | 0.867 |
Tabla 6: Métricas de rendimiento para el algoritmo de detección de peatones implementado basado en FPGA.
La Tabla 6 anterior describe así la precisión del algoritmo de detección de peatones a través de las distintas métricas de rendimiento, precisión, recuerdo, puntuación F1 y FPPI, cuando el algoritmo se implementa en la plataforma de hardware.
Comparación de rendimiento con implementaciones HoG basadas en FPGA existentes
Finalmente, el trabajo realizado puede compararse con la literatura previa para señalar cualquier contribución significativa de esta investigación. Esta comparación se muestra en la Tabla 715, 16, 17, 21, 24a continuación. Los artículos con los que se realiza la comparación se basan todos en aplicaciones de detección de peatones implementadas en plataformas FPGA, y los algoritmos usados para estas detecciones también son los mismos para todos, que es HoG combinado con un clasificador, que es un clasificador Adaboost o SVM. El tamaño de imagen también es el mismo para cada uno (640 × 480). La comparación se basa en parámetros como la frecuencia de reloj que afecta a la velocidad, los fotogramas por segundo, el consumo de energía y la utilización de recursos en términos de LUTs, DSPs, memoria, slices y registros. Para inducir una comparación justa, los artículos de investigación considerados para comparación tienen una resolución de imagen similar, y para normalizar la comparación de recursos, cada utilización de recursos se normaliza dividiendo el número de recursos consumidos por el total de recursos disponibles según la placa FPGA utilizada.
| Referencia | Tamaño de la imagen | Placa FPGA | Frecuencia de reloj | Fotogramas por segundo (FPS) | Energía | Píxeles /reloj | LUTs (%) | DSP48s (%) | BRAMs /Bits de memoria (%) | Registros/FF (%) |
| 15 | 640×480 | Xilinx Zynq | 82,2 MHz | 40 | - | 1 | 40 | 2 | 0 | - |
| 24 | 640×480 | Virtex 6 | 150 MHz | 10 | 19 W | | 39 | 53 | 22 | - |
| 16 | 640×480 | Ciclón V | 162 MHz | 526 | 9 W | 0.99 | 21 | 86 | 100 | 21 |
| 17 | 640×480 | Altera DE2-115 | 50 MHz | 129 | 3,6 W | - | 73 | - | 72 | 60 |
| 21 | 640×480 | Zync 7000 | 100 MHz | 240 | 1,6 W | - | 13 | 3 | 1 | 10 |
| ESTA OBRA | 640 x 480 | Ultra 96 v2 | 150 MHz | 83 | 2,435W | 0.0632 | 57 | 35 | 31 | 24 |
Tabla 7: Comparación de parámetros y rendimiento para implementaciones de detección de peatones en FPGA
Como es visible en la Tabla 7 anterior, se puede observar que cuando se compara la implementación en esta investigación con los trabajos anteriores, las comparaciones muestran mejoras significativas en términos de velocidad. La placa FPGA es capaz de funcionar a una frecuencia de reloj de 150 MHz, lo que indica que el periodo de tiempo para completar toda la tarea es inferior a 6 ns. Aunque algunos trabajos previos reportan un aumento significativo de FPS, mediante un examen cuidadoso puede analizarse que esta ventaja tiene el coste de un mayor consumo energético y de una utilización casi completa de ciertos recursos. Si se considera el consumo energético, en este trabajo la potencia reportada también es inferior y las utilizaciones de recursos sugieren que el consumo de cada recurso es ligeramente superior al de ciertas implementaciones, pero igual o inferior al 50% (57% LUTs, 35% DSPs y 31% BRAM), lo que muestra un margen significativo para que se implementen más tareas en este diseño. En general, se puede afirmar que el trabajo implementado en este documento logra un equilibrio equilibrado entre rendimiento, energía y utilización de recursos. Además, el trabajo presentado mostró paralelismo escalable a través de múltiples bloques IP sin afectar drásticamente los parámetros de rendimiento.
Archivo suplementario 1: Script_1_train_test.py.Por favor, haga clic aquí para descargar este archivo.
Archivo suplementario 2: Script_2_HLS_hog.cpp. Por favor, haga clic aquí para descargar este archivo.
Archivo suplementario 3: Script_3_HLS_test_bench.cpp. Por favor, haga clic aquí para descargar este archivo.
Archivo suplementario 4: Script_4_HLS_consts.h.Por favor, haga clic aquí para descargar este archivo.
Archivo suplementario 5: Script_5_jupyter_code.txt.Por favor, haga clic aquí para descargar este archivo.