$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Implémentation de la détection piétonne sur HLS
La figure 4 montre les résultats de simulation sur l’outil HLS pour la détection des piétons en utilisant HoG + SVM. Une image d’entrée avec un piéton est envoyée comme entrée de test au code, et la sortie avec les piétons détectés est affichée. L’image comporte deux sections. La première détection montre de nombreuses boîtes englobantes autour du même piéton, encore et encore, et dans la seconde image, les boîtes qui se chevauchent sont supprimées, et elles sont supprimées, ne laissant que les boîtes principales de détection.

Figure 4 : Résultat de simulation de l’outil HLS. (A,B) Deux images d’entrée différentes et les images résultantes avec les piétons détectés. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
L’outil HLS fournit également des rapports de synthèse sur le moment et l’utilisation des ressources. Le résumé temporel met en évidence la période requise par la conception et fournit les valeurs de latence maximale et minimale en termes de nombre de cycles. Ces informations sont utiles pour estimer le temps nécessaire pour l’exécution de la conception et quelle devrait être la fréquence d’horloge lors du passage à la mise en œuvre matérielle réelle. Le tableau 2 ci-dessous montre le rapport de temporisation après la synthèse HLS, qui montre clairement que la période d’horloge cible était de 6 ns et que la conception a pris 5,25 ns, ce qui est inférieur à la cible, et donc la période peut être de 6 ns ou plus mais pas en dessous de 5 ns.
| Résumé des horaires |
| Horloge | Cible | Estimation |
| 6,00 ns | 5,250 ns |
| Résumé de l’utilisation |
| Total / Disponible | Pourcentage d’utilisation |
| BRAM18K | 22 / 432 | 5% |
| DSP48E | 13 / 360 | 3% |
| FF | 5611/ 141120 | 3% |
| LUT | 9904/ 70560 | 14% |
| URAM | 0 | 0 |
Tableau 2 : Estimation du calendrier et du rapport d’utilisation des ressources à partir de l’outil HLS pour la détection des piétons utilisant HoG-SVM.
Le tableau 2 présente également le rapport d’utilisation. Il montre le pourcentage d’utilisation des ressources FPGA embarquées importantes selon la carte cible sélectionnée. Pour cette conception de détection piétonne, le rapport d’utilisation montre que la conception consomme 14 % des tables de recherche (LUT), 3 % des Flip Flops (FF), 3 % du traitement numérique du signal (DSP) et 5 % de la mémoire d’accès aléatoire par blocs (BRAM). Ces estimations ne sont pas les rapports d’utilisation exacts, mais les rapports réels sont proches de ces estimations. Ce ne sont que les estimations qui peuvent être calculées par les outils HLS. La mise en œuvre réelle est généralement très différente de ces estimations.
L’implémentation réelle résulte de la programmation matérielle
Après que le code a été mappé dans une IP, qui est importée dans l’outil de programmation FPGA, et que la conception est implémentée sur le matériel FPGA réel, plusieurs rapports sont également générés. La première est le résumé du chronométrage, qui montre si la fréquence d’horloge fournie à la conception est suffisante ou non. Si toutes les contraintes de temps sont respectées et qu’il n’y a pas de violations, alors la conception peut avancer. Le tableau 3 ci-dessous présente le résumé des délais généré par l’outil. Comme indiqué dans le tableau, le résumé du timing indique le pire marge de jeu négatif, soit 4,073 ns. Comme cette valeur est positive, elle indique que ce temps reste disponible. Les valeurs négatives indiquent que le FPGA met plus de temps à accomplir la tâche, et que l’horloge file rapidement. Puisque dans ce cas il n’y a pas de valeurs négatives, ce qui signifie que les contraintes temporelles sont respectées.
| Résumé du calage de conception |
| Mise en place | Tiens | Largeur d’impulsion |
| Pire Negative Slack 4,073 ns | Pire marge de maintien 0,010 ns | Pire largeur d’impulsion : Mou 3,500 ns |
Tableau 3 : Résumé réel du timing pour la détection des piétons sur la carte FPGA.
De plus, l’outil affiche les rapports d’utilisation des ressources, qui correspondent à l’utilisation réelle des ressources embarquées selon la carte FPGA sélectionnée. Dans ce cas, la carte de développement sélectionnée est la carte de développementFPGA 27 basée sur Zynq UltraScale+ MPSoC (Multi-Processor System On Chip). Le tableau 4 ci-dessous montre l’utilisation des ressources et la figure 5 montre la représentation diagrammatique de l’utilisation des ressources.
Le résumé d’utilisation indique la consommation réelle des ressources embarquées, étant donné qu’il y a 8 IP HoG utilisés en parallèle, et que les estimations rapportées par la synthèse HLS concernaient une seule IP HoG. Mais même après une utilisation aussi étendue, l’utilisation des ressources pour chaque ressource est inférieure à 50 %. Le tableau 4 indique clairement l’utilisation par rapport aux différentes ressources et leur pourcentage d’utilisation, représenté de manière picturale à la Figure 5.
| Ressource | Utilisation | Disponible | Pourcentage d’utilisation |
| 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% |
Tableau 4 : Rapport d’utilisation réel pour la détection des piétons sur la carte FPGA.

Figure 5 : Utilisation des ressources pour la détection des piétons sur la carte FPGA après la mise en œuvre effective. Consultez les tableaux (LUT) : 57 %, LUTRAM : 25 %, tongs (FF) : 24 %, RAM par bloc (BRAM) : 31 %, processeurs de signal numérique (DSP) : 36 %, tampons : 1 %. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Le troisième rapport concerne les estimations de puissance de la carte pour la consommation d’énergie par la conception. La figure 6 ci-dessous montre le rapport de consommation électrique, qui indique que la puissance totale embarquée sur puce est de 2,435 W. La température de jonction et l’énergie consommée par chaque réseau et composant importants sont également indiqués. Les mesures de puissance ne mettent pas en évidence une consommation d’énergie alarmante, et la conception peut donc être considérée comme économe en énergie.

Figure 6 : Estimation de la puissance pour la détection des piétons sur la carte FPGA après la mise en place effective. Le rapport de puissance généré par les outils indique la puissance totale consommée à 2,435 W et montre également la répartition de la puissance entre les différentes ressources sur la carte FPGA. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Une autre analyse est réalisée pour comprendre l’avantage d’utiliser 8 IP HoG au lieu d’une seule IP HoG ou plus de 8 dans le schéma bloc créé, comme montré à la Figure 3. Les métriques de performance liées au matériel étaient calculées en parallèle pour une seule IP HoG et 8 IP HoG. Le tableau 5 ci-dessous montre la comparaison.
| Métrique de performance | 1 IP | 8 IP |
| Chronométrage (ns) | 5.312 | ~5,25 |
| Fréquence (MHz) | 188 | 150 |
| Puissance (W) | 1.9 | 2.43 |
| LUTs | 4998 | 40536 |
| FF / Registres | 4,031 | 33,342 |
| DSP | 16 | 128 |
| BRAM | 8.5 | 68 |
| FPS | ~10–11 | 83 |
Tableau 5 : Comparaison des indicateurs de performance utilisant une seule IP de HoG vs plusieurs IP HoG.
Le tableau 5 indique clairement que lorsque les ressources sont considérées comme les LUT, FF, DSP et BRAM, alors avec une IP HoG unique et 8 IP HoG, la mise à l’échelle est linéaire avec une augmentation de près de 8 fois des ressources utilisées. Cela est clairement attendu, car plus de propriétés intellectuelles entraîneront une consommation accrue de ressources. De plus, si la fréquence est observée, alors la fréquence maximale se dégrade légèrement de 20 % de 188 MHz à 150 MHz. Cela est également attendu, car plus de blocs entraînent plus de connexions et donc des chemins plus longs, ce qui entraîne une augmentation des chemins critiques. Mais les facteurs avantageux comme les images par seconde (FPS) passent de 10 à 83, démontrant une mise à l’échelle non linéaire dans le cas des FPS grâce au concept introduit de parallélisme, grâce à 8 IP HoG. De plus, la puissance passe de 1,9 W à 2,4 W, ce qui indique une amélioration de l’efficacité énergétique grâce au pipeline. Ainsi, cette analyse indique clairement que l’introduction de 8 IP HoG est bénéfique pour la conception, et qu’une mise à l’échelle au-delà de 8 peut entraîner une surconsommation des ressources ; ainsi, le nombre de blocs au-delà de 8 n’est pas considéré comme favorable.
Résultats de détection des piétons après la mise en œuvre du FPGA
Enfin, l’ensemble du système est intégré sur la carte FPGA, et le fichier bitstream est généré, qui est ensuite programmé sur la carte SD via la carte SD démarrée avec la capacité de programmation Python. Une fois la carte connectée au démarrage de la carte SD, l’interface jupyter peut être accessible et du code Python peut être écrit et exécuté sur la plateforme. Le code Python est exécuté et testé pour la détection des piétons sur différentes images d’entrée. Le résultat de quelques images est montré à la Figure 7 ci-dessous. Ces images sont utilisées à partir de l’ensemble de données INRIA ainsi que des images aléatoires de piétons obtenues à partir de sources en ligne opensource 26,27.

Figure 7 : Résultats de détection des piétons sur des images fixes via FPGA Board. Les images testées incluent des images issues de l’ensemble de données INRIA, des images open source disponibles sur Google pour tester la précision de la détection dans les rues bondées de l’Inde. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Le système est également testé en capture d’images en temps réel via une caméra web et la détection des piétons dans le cadre ainsi que sur les entrées vidéo déjà enregistrées des piétons. Les résultats de ce processus sont représentés dans les figures 8 et 9. La figure 8 montre un ensemble d’images d’exemple capturées par la caméra web et les résultats de la détection des piétons dans chaque image, tandis que la figure 9 montre les résultats de la détection des piétons mise en œuvre sur une vidéo d’entrée fournie au système.

Figure 8 : Résultats de détection des piétons sur une image capturée en temps réel par une caméra via la carte FPGA. Capture vidéo en temps réel via une caméra web 720 P et démonstration de la détection en temps réel des piétons. Les images floues sont causées par des instantanés pris à partir de la vidéo en direct en cours. Veuillez cliquer ici pour voir une version agrandie de cette figurine.

Figure 9 : Résultats de détection de piétons sur les vidéos fournies en entrée au FPGA Board. Les vidéos ont été prises à partir de liens open source. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Estimation des indicateurs de performance
Pour calculer l’efficacité et analyser la performance du design implémenté ci-dessus, il est essentiel de calculer des indicateurs de performance utiles pour évaluer la performance. Les indicateurs de performance pour détecter l’efficacité d’un algorithme de détection dépendent essentiellement des valeurs des vrais positifs (TP), des vrais négatifs (TN), des faux positifs (FP) et des faux négatifs (FN). À partir de ces valeurs, les métriques de performance telles que la précision, le rappel, le score F1, les faux positifs par image et la précision peuvent être calculées selon les équations ci-dessous. Il a été observé que la plupart des articles de recherche rapportent leur performance de détection via le paramètre de précision. Mais il a été observé que le calcul de précision impliquant l’utilisation de TN peut être un paramètre trompeur, car la valeur de TN ne peut pas être calculée correctement au sens réel, car cela implique de trouver le nombre de toutes les fenêtres de détection dans une image qui ne contient pas réellement de piéton, et l’algorithme implémenté le signale également comme aucune détection. Ce nombre est généralement très élevé, car le nombre total de fenêtres de détection dans une image est important, et les zones de fond correspondent généralement à des zones sans piétons. En examinant de près la formule de précision présentée dans les équations [1] – [5], on peut réaliser que, comme la valeur de TN sera assez élevée comparée à TP+FP+FN, le paramètre de précision a généralement une valeur élevée. Pour vraiment évaluer la performance, il est bien préférable de rapporter des métriques comme la précision, la mémoire et le score F1 qui ne dépendent pas du TN et sont donc beaucoup plus précises.
[1]
[2]
[3]
[4]
[5]
Pour trouver les valeurs de TP, TN et FN pour cet article, l’expérience sur les images fixes a été répétée sur un grand nombre d’images. À partir des résultats de chaque image, la valeur des vrais positifs, soit le nombre de piétons détectés correctement, les faux positifs, le nombre de piétons détectés à tort, et les faux négatifs, c’est-à-dire les piétons réels qui n’ont pas été détectés, a été calculée. Les valeurs suivantes ont été rapportées après les expériences réalisées et sont présentées dans le tableau 6 ci-dessous.
| Mesure de performance | Valeur |
| TP | 143 |
| FP | 39 |
| FN | 19 |
| Précison | 0.786 (78.6%) |
| Rappel | 0.883 (88.3%) |
| F1 Score | 0.831 (83.1%) |
| FPPI | 0.867 |
Tableau 6 : Indicateurs de performance pour l’algorithme de détection des piétons basé sur le FPGA implémenté.
Le tableau 6 ci-dessus décrit ainsi la précision de l’algorithme de détection des piétons à travers les différentes métriques de performance, la précision, le rappel, le score F1 et le FPPI, lorsque l’algorithme est implémenté sur la plateforme matérielle.
Comparaison des performances avec les implémentations HoG existantes basées sur FPGA
Enfin, le travail réalisé peut être comparé à la littérature antérieure pour indiquer les contributions significatives de cette recherche. Cette comparaison est illustrée dans le tableau 715, 16, 17, 21, 24ci-dessous. Les articles avec lesquels la comparaison est réalisée sont tous basés sur des applications de détection de piétons implémentées sur des plateformes FPGA, et les algorithmes utilisés pour ces détections sont également les mêmes pour tous, c’est-à-dire HoG combiné à un classificateur, qui est soit un classificateur Adaboost, soit un SVM. La taille de l’image est également la même pour chaque image (640 × 480). La comparaison se fait sur la base de paramètres tels que la fréquence d’horloge qui influence la vitesse, les images par seconde, la consommation d’énergie et l’utilisation des ressources en termes de LUT, DSP, mémoire, tranches et registres. Pour induire une comparaison équitable, les articles de recherche envisagés pour la comparaison ont une résolution d’image similaire, et pour normaliser la comparaison des ressources, chaque utilisation des ressources est normalisée en divisant le nombre de ressources consommées par le nombre total de ressources disponibles selon la carte FPGA utilisée.
| Référence | Taille de l’image | Carte FPGA | Fréquence d’horloge | Images par seconde (FPS) | Puissance | Pixels /clock | LUTs ( %) | DSP48 ( %) | BRAMs /bits mémoire ( %) | Caisses/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 | Cyclone 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 |
| CETTE ŒUVRE | 640 x 480 | Ultra 96 v2 | 150 MHz | 83 | 2,435W | 0.0632 | 57 | 35 | 31 | 24 |
Tableau 7 : Comparaison des paramètres et des performances pour les implémentations de la détection des piétons sur FPGA
Comme visible dans le tableau 7 ci-dessus, on peut noter que lorsque la mise en œuvre dans cette recherche est comparée aux travaux précédents, les comparaisons montrent des améliorations significatives en termes de rapidité. La carte FPGA peut fonctionner à une fréquence d’horloge de 150 MHz, ce qui signifie que le délai pour accomplir l’ensemble de la tâche est inférieur à 6 ns. Bien que certains travaux antérieurs rapportent un nombre significativement plus élevé de FPS, il est possible d’examiner attentivement que cet avantage se fait au détriment d’une consommation d’énergie plus élevée ainsi qu’une utilisation quasi complète de certaines ressources. Si l’on considère la consommation d’énergie, alors dans ce travail, la puissance déclarée est également inférieure et les utilisations des ressources suggèrent que la consommation de chaque ressource est légèrement supérieure à celle de certaines implémentations, mais égale ou inférieure à 50 % (57 % LUTs, 35 % DSP et 31 % BRAM), ce qui montre une marge significative pour davantage de tâches à implémenter dans cette conception. Dans l’ensemble, on peut affirmer que le travail mis en œuvre dans cet article permet un compromis équilibré entre performance, énergie et utilisation des ressources. De plus, le travail présenté mettait en avant un parallélisme évolutif à travers plusieurs blocs IP sans affecter drastiquement les paramètres de performance.
Dossier supplémentaire 1 : Script_1_train_test.py.Veuillez cliquer ici pour télécharger ce fichier.
Dossier supplémentaire 2 : Script_2_HLS_hog.cpp. Veuillez cliquer ici pour télécharger ce fichier.
Dossier supplémentaire 3 : Script_3_HLS_test_bench.cpp. Veuillez cliquer ici pour télécharger ce fichier.
Fichier supplémentaire 4 : Script_4_HLS_consts.h.Veuillez cliquer ici pour télécharger ce fichier.
Dossier supplémentaire 5 : Script_5_jupyter_code.txt.Veuillez cliquer ici pour télécharger ce fichier.