Download presentation
1
Mémoire de Projet de Fin d'Études
Université de Sousse Ecole Nationale d’Ingénieurs de Sousse Mémoire de Projet de Fin d'Études Implémentation d’un algorithme de détection de mouvement sur une carte ZedBoard Réalisé par : Sirine Bouslama Soutenu le 25 juin 2016 devant le jury Merci Madame la présidente du jury , honorables membre de jury, bonjour Bonjour cher auditoires, Permettez moi de vous présenter mon projet de fin d’etude intitulé *** , pour cela je vais suivre le plan suivant Encadreur : M. Abdelaziz AMMARI, ENISo Encadreur : M. Anouar BEN KHALIFA, ENISo
2
Plan Introduction Environnement de développement
Conception de l’accélérateur Implémentation Je vais commencer par introduire le domaines dans lequel nous évoluons Par la suite je présenterai l’environnement de travail Ensuite la conception de l’accélérateur et l’implémentation Et finalement, je terminerai par la conclusion et les perspectives Conclusion & Perspectives
3
La vision embarquée Vision intelligente Systèmes Embarqués
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La vision embarquée Vision intelligente Systèmes Embarqués Afin de bien commencer notre travail, il est important d’introduire le domaine dans le quel nous évoluons: la vision embarqué La vision embarqué représente la rencontre de deux univers: la vision intelligente et les systèmes embarqués, La vision intelligente est une branche de l’intelligence artificielle dont le but est de permettre aux systèmes de comprendre ce qu’il voit lorsque on le connecte à une ou plusieurs caméras. Commençons donc par donner un petit aperçu sur les domaines d’application de la vision intelligente
4
Les domaines d’application de la vision intelligente:
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Les domaines d’application de la vision intelligente: Vidéosurveillance Assistance à la conduite Interaction Homme machine les domaines d’application d’un système de vision sont diverses: Par exemple, Il est utilisé dans des applications de vidéosurveillance pour alerter les agents de sécurités des activités anormales Dans les applications d’assistance à la conduite, on peut trouver dans des fonctions de détection de piétons ou encore d’analyse du comportement du conducteur, on peut le retrouver dans le domaine d’interaction homme-machine ou les application concerne essentiellement le canal gestuel de letre humain afin de reconnaitre le langage des signes par exemple, ou encore dans le domaine de reconnaissance des activités humaines, pour détecter les chutes des personnes Dans l’industrie, il peut être utilisé pour l’identification et le suivie des objets Reconnaissance des activités humaines Vision industrielle
5
Processus d’un système de vision
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Détecter le mouvement Prise de décision Acquisition Des images Suivi et classification Toutes ces applications présentent un point en commun : il doivent détecter un mouvement pour pouvoir l’analyser, le suivre afin de le classifier et prendre une décision Processus d’un système de vision
6
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives 480x640 ≈ 0,3 720x1280 ≈ 0,6 1920x1080 ≈ 2 4000x2000 ≈ 8 Mégapixels Comme montre cette illustration, le traitement des données d’une image est très intense, En plus , plus la taille de l’image augmente, plus les calculs deviennent complexes. Par exemple, pour une image FHD, nous devons traiter plus de 2mega octets de pixels. En considérant ces grandes dimensions, n’importe quel traitement impliquant ces pixels requiert un architecture bien spécifique,
7
La vision par ordinateur: Système d’acquisition Un PC
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La vision par ordinateur: Système d’acquisition Un PC Les architectures dédiées aux implémentation matérielle/logicielle des applications de vision: Les FPGAs Les ASICs Les DSPs Les microprocesseurs Traditionnellement, la vision intelligente mettait en œuvre un système d’acquisition et un PC. Alors qu’aujourd’hui il existe des *** Cependant, le progrès dans la capacité d’intégration des circuits électroniques ont ouvert de nouvelles perspectives pour les applications de vision en temps réel sur des systèmes embarqués combinant à la fois le logiciel et le matériel. Dans ce contexte, le circuit Zynq sur lequel se base notre projet st apparue. C’est une nouvelle technologie hybride combinant à la fois la logique programmable avec des processeurs,
8
Plan Introduction Environnement de développement
Conception de l’accélérateur Implémentation Nous allons donc se contenter, dans la partie suivante de présenter ce circuit ainsi que l’environnement de notre travail, Conclusion & Perspectives
9
La plateforme ZedBoard Le flot de conception
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La circuit Zynq La plateforme ZedBoard Le flot de conception Le circuit zynq-7000 de Xilinx dispose d’une partie logique et deux processeurs, C’est le premier circuit ayant combiner deux cœurs du processeur ARM, une partie FPGA et des périphériques clés qui introduisent une grande flexibilité si on veut connecter le Zynq à son environnement extérieur sur une seule puce Le cœur du PS ou encore le processing system sont les processeurs ARM Les performances de ce circuit ne résident pas dans ses parties constructives, le PS et le PL mais dans la possibilité de les utiliser en tandem afin de former des systèmes complet, le facteur clé à cet égard sont les 9 interfaces de connexion entre le PS et le PL, Les quatre ports à usage général, les quatre ports de haute performances et le port ACP Accelerator coherency port , La différence majeur entre ces différents ports résident dans la bande passante ainsi que la latence lors de l’accès à la mémoire,
10
La plateforme ZedBoard Le flot de conception
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La circuit Zynq La plateforme ZedBoard Le flot de conception La plateforme embarquée que nous avons utilisé pour notre application est la plateforme ZedBoard basé sur le circuit Zynq Au niveau connectique la carte est assez compléter et dans notre cas, nous allons utilisé : bien évidemment le circuit Zynq, la mémoire DDR de 512 M ,le port HDMI, la carte SD, les jumpers de configuration Alors afin de concevoir l’application, La suite d’outils Vivado conçu par Xilinx est l’environnement idéal pour cela, Nous allons maintenant présenter le flot de conception d’une application à base de ce circuit
11
Architecture du système
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La circuit Zynq La plateforme ZedBoard Le flot de conception du système Architecture du système Application Logicielle Design matérielle Vivado IDE design IPs personnalisés Vivado HLS Intégrer les IPs IPs de Xilinx L’architecture du système concerne la conception du design matériel, l’application logicielle et la conception des IPs personnalisés, On commence par créer le design à partir des IPs ensuite valider et synthétiser notre design, et finalement générer le bitstream pour configurer la partie matérielle, Ceci est réalisé à partir de l’outil de Xilinx Vivado IDE Ensuite on passe à L’application logicielle conçue pour programmer la partie matérielle du design est réalisé à partir de l’OS Linux, Donc, afin d’accélérer et concevoir les applications prévisionnelles de vision, nous allons concevoir des accélérateur matériel pour les intégrer sur la partie FPGAs de ce circuit via cet outil: vivado_hls Valider Synthétiser SDK Bitstream
12
OpenCV La circuit Zynq La plateforme ZedBoard
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives La circuit Zynq La plateforme ZedBoard Le flot de conception Vivado HLS OpenCV la conception des IPs sur les FPGA au niveau RTL est très couteuse en terme de temps de développement. Cet nouveau outil de Xilinx, Vivado hls permet de traduire automatiquement un code écrit en langage haut niveau comme c/c++ ou system c en un code RTL. Une fois l’IP conçu, on peut l’intégrer dans la bibliothèque d’Ips de vivado IDE et ainsi l’utiliser pour la construction du design matérielle, Ce logiciel contient une bibliothèque c++ pour accélérer les fonctions de la bibliothèque OpenCV . Cette bibliothèque qui a été créée pour preter main forte à toute personne opérante dans le domaine de la vision, Xilinx a réalisé son utilité et a donc réécrit plusieurs fonctions Opencv pour qu’ils soient synthétisables,
13
Plan Introduction Environnement de développement
Conception de l’accélérateur Implémentation On passe maintenant à la conception de l’accélérateur via l’outil vivado_hls Conclusion & Perspectives
14
Idée de base: la différence temporelle
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Idée de base: la différence temporelle Prendre deux images consécutives dans le temps Faire la soustraction entre ces deux images pour détecter le mouvement. Pour la détection de mouvement on a opté pour la méthode de la diférence temporelle qui consiste à : Via vivado hls, l’application est testé à partir de deux images, l’une considérée comme étant l’image courante et l’autre comme étant l’image précédente ! L’approche testée consiste donc
15
L’approche proposée pour la détection de mouvement :
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives L’approche proposée pour la détection de mouvement : Trame courante Trame précédente Transformation en niveau de gris Transformation en niveau de gris Filtre Gaussien Filtre Gaussien Soustraction des trames à prendre deux images consécutives on aboutit à une étape de prétraitement ensuite, on calcul la différence absolue entre les deux résultats obtenus et ainsi détecter le mouvement, pour valider ce flot, Binarisation Application du masque Détection de mouvement
16
Détection de mouvement avec Vivado HLS
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Image courante Transformation en niveau de gris et application du filtre de gauss Résultat de détection Image précédente Transformation en niveau de gris et application du filtre de gauss Différence binairisation Dessin du masque Color On va montrer les différents résultats obtenus à chaque étape. À partir des deux image , on va faire la transformation en niveau de gris et appliquer le filtre de gauss afin de réduire le bruit ensuite on pré calcule la différence absolue On va faire la binarisation avec un seuil déterminé empiriquement Détection de mouvement avec Vivado HLS
17
Plan Introduction Environnement de développement
Conception de l’accélérateur Implémentation On passe maintenant à l’implémentation de l’alogorithme sur le circuit zynq Conclusion & Perspectives
18
Architecture du design
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Implémentation matérielle Implémentation logicielle L’implémentation va combiner l’utilisation de la partie programmable et la partie processeur du circuit Zynq. Comme montre l’illustration suivante , le flux vidéo est capturé à partir d’une caméra USB. Ce flux sera accessible, à la fois, par le logiciel et le matériel pour qu’il soit traité. L’interface utilisateur de l’OS est affichée via l’interface HDMI. Cette interface est construite en utilisant le design référence ADV7511 intégré dans le PL. Focalisons nous tout d’abord sur ce bloc « Video processing » Architecture du design
19
Bloc ‘’Processing’’ Implémentation matérielle
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Implémentation matérielle Implémentation logicielle Notre IP détection possède deux entrées car nous allons prendre en considération l’image courante et l’image précédente et deux sorties, une présentant l’image résultat de la détection et une pour sauvegarder l’image courante qui deviendra par la suite l’image précédente. Chaque port de notre IP est interfacé avec un IP de la bibliothèque de Xilinx « VDMA » l’abréviation de Video direct access memory Cet IP est capable de manipuler les données de 2d ( autrement dis les images) pour les lire ou écrire via la mémoire Bloc ‘’Processing’’
20
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives 500M CF PF motion 12M DDR3 1 2 Quand une image est récupérée depuis la caméra, elle sera stockée dans la mémoire gérée par Linux qui est de 500 mega va et elle va être copiée dans une mémoire physique réservé pour les transferts des VDMAs afin d’assurer que l’image à manipulée sera disponible d’une façon continue dans cette zone mémoire, Ensuite une fois le frame courant est disponible, l’accélérateur commence à traiter les deux images disponibles en mémoire : le frame courant et le précédent. Quand le traitement sera terminé, le résultat de détection sera stocké dans cette mémoire Et finalement il sera recopié vers la zone mémoire de Linux pour qu’il soit affiché! Passons maintenant à la réalisation:
21
Architecture du design
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Implémentation matérielle Implémentation logicielle Alors afin de tester l’efficacité de l’IP conçu sur la partie FPGA, nous avons eu recours à l’implémentation de cet algorithme uniquement en utilisant les processeurs ARM, c’est-à-dire en utilisant un programme en c++ exécutée sur Linux. Architecture du design
22
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives DDR3 500M 12M 2 3 4 1 5 6 7 Le flux vidéo sera capturé via la caméra usb, sera ensuite traités avec le processeurs avec bien évidemment plusieurs accès à la mémoire pour lire et écrire les images temporaires et finalement il sera récupéré depuis la mémoire pour s’afficher,
23
Je vais montrer ici une Vidéo démonstratif de mon projet,
On montre finalement les résultats de détection
24
Hardware Software Temps d’exécution
Résultats: Hardware Software Temps d’exécution Sans les accès mémoire s s Avec les accès mémoire s Accélération de x1.13 fois en considérant les transferts entre les mémoires Accélération de x31.05 fois sans considérer les transferts entre les mémoires Pour une image de 640x480 nous accélérons le processus de détection, en prenant en compte des accès mémoire, de x fois. Alors que, si nous ne considérons pas les accès mémoire pour lire et écrire les images, nous avons une accélération de x31.05 fois.
25
Hardware Software Temps d’exécution
Résultats: Hardware Software Temps d’exécution Sans les accès mémoire s s Avec les accès mémoire s Accélération de x 1,33 fois en considérant les accès à la mémoire Accélération de x 21,97 fois sans considérer les accès à la mémoire Pour la caméra dont la taille de l’image est de 640x480 pixels, nous accélérons le processus de détection, en prenant en compte des accès mémoire, de x fois. Alors que, si nous ne considérons pas les accès mémoire, nous avons une accélération de x fois.
26
Plan Introduction Environnement de développement
Conception de l’accélérateur Implémentation Finalement je vais présenter la conlusion et les perspectives concernant ce projet Conclusion & Perspectives
27
Concevoir un accélérateur via un outil de synthèse haut niveau
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives Conclusion: Concevoir un accélérateur via un outil de synthèse haut niveau Valider un flot de conception rapide pour une implémentation matérielle d’un algorithme de vision sur un circuit FPGA-Zynq. Perspectives: Utilisation du port ACP. Exploiter l’utilisation en parallèle des deux processeurs ARM. Pendant ce projet, nous avons pu Mais notre conception n’est pas totalement optimisées suite à la latence de la mémoire DDR Ainsi les perspectives sont d’une part l’utilisation du port ACP qui fournit un accès de plus faible latence à la mémoire cache du PS et
28
Merci de votre attention
29
Sous Linux, les adresses manipulées sont virtuelle et l’accés à la mémoire physique ne nous permet pas d’écrire l’image d’une manière continue dans l’espace mémoire physique. Donc pour assurer ceci, nous avons aboutit à son écriture dans un espcae mémoire non gérée par Linux
30
Afin d’avoir accées à n’importe quel périphérique, nous utilisons une adresse virtuelle apres l’aavoir mappée à une adresse physique du compsant puisque leur configuration se fait à partir de l’adresse virtuelle et nous pourrons donc configurer le periphérique à partir de l’ecriture dans ses registres,
31
Séquence de boot de Linux
FSBL/ Séquence de boot de Linux
32
Architecture matérielle du design
Introduction Environnement de travail Conception de l’accélérateur Implémentation Conclusion & Perspectives l’illustration suivante présente le design complet et simplifié de notre application. L’IP le plus évident est celui du Zynq. Dans notre cas, il permet aux différents IPs de la partie PL de communiquer avec la mémoire DDR du PS. En effet, c’est à travers cet IP que le VDMA puisse accéder à la mémoire DDR pour lire et écrire les images. C’est aussi à travers cet IP que les horloges et d’autres périphériques tels que (UART, USB, Ethernet …) sont définis. Via Vivado IDE et une fois le design est validé et synthétisé, on génère le bitstream et on lance linux afin d’écrire le programme pour gérer le matériel, Architecture matérielle du design
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.