Traitement de flux vidéo sur GPU (Processeur graphique)

Slides:



Advertisements
Présentations similaires
Martin Guibert Pereira Helder Steven Ly Aiman Krissane.
Advertisements

Introduction au langage C++
DIALVEIL DATA mise à niveau possible du parc existant (3353 )
Niveau: 4ème Math Prof: Donia JEBALI Année Scolaire 2007/2008
En ville M. Rocque. 1/23/20142 le supermarché 1/23/20143 le parc.
Étude de l’intérêt de l’utilisation des grains d’or dans le traitement des cancers de la prostate par Radiothérapie Conformationnelle avec Modulation d’Intensité.
Leçon 2: Les schémas fonctionnels
Leçon 3: Analyse Temporelle Des Systèmes
Les tests et les logiciels de gestion de tests
Entamoeba histolytica
BTS MANAGEMENT DES UNITES COMMERCIALES
Lancer de rayons interactif
Parallélisation d’un Algorithme CNFT
Proposition de projet I4, ESIEE, Novembre 2012
Veuillez sélectionner une question:
Gestion automatisée des filtres d’attributs
SFADA : Projet d’un Système de Formation à Distance de l’Arabe
ROULEMENT SANS GLISSEMENT VITESSE DE CONDITIONS DE RAPPEL DE COURS ETUDE DE CAS EXERCICES METHODE ANALYTIQUE 20/04/20141 Rappel de cours, roulement sans.
INF-1019 Programmation en temps réel
Tout Comme Une Vieille Chanson
Assemblée Générale du 13 octobre /05/20141 BIENVENUE.
Restriction daccès aux logiciels et aux matériels Problème de licence Nicolas CHABANOLES Matière : SRR Lieu: UFRIMA.
Architecture de grille générique, multi-
Thème -1- : L’electromagnetisme
Analyse des circuits électriques -GPA220- Cours #11: Systèmes de deuxième ordre (2ième partie) Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge.
Analyse des circuits électriques -GPA220- Cours #10: Systèmes de deuxième ordre Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge - Janvier.
Introduction à l’économie
Thème -1- : L’electromagnetisme
Tout Comme Une Vieille Chanson
Soutenance : mardi 30 novembre, 14h00, à l’ECP
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
LA LYMPHE 31/03/2017 Elisabeth Chaniaud.
Tout Comme Une Vieille Chanson
Moteur de RechercheMoteur de recherche "from scratch"
La décomposition simple
Présentation dALPHA LE 12 FEVRIER /06/20141.
Wiki pour les nuls le LGI
Mesure des performances WEB en introduisant un contrôle dadmission.
SUPPRESSION EN LIGNE DE PUBLICITES
Renauld MAMBOUNDOU Arnaud SCHOEN Safiatou FANNY Vincent BOUVIER
Analyse des circuits électriques -GPA220- Cours #5: Amplificateurs opérationnels (partie 1) Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge.
Les outils en ETP Vanessa GUIHARD 02/04/2017.
Analyse des circuits électriques -GPA220- Cours #8: Système de premier ordre (partie 1) Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge -
OI-M/DLI IPT Asia Découpe. OI-M/DLI IPT Asia Emboutissage dans l’agroalimentaire.
Guide DT 75 – Journées Gemer 2014
Soutenance de stage 16 Mai au 5 Août 2011
Soutenance de stage 16 Mai au 5 Août 2011
Les cancers chez la femme : épidémiologie, prévention, comment améliorer l’accès et l’adhésion au dépistage ? Journée DES SP Amiens-Rouen 25/06/ /04/2017.
Soutenance de stage 16 Mai au 5 Août 2011
Coupe de France Robotique 2007
Congrès BPW Int Centre International de Congrès, Jeju, Corée du sud Congrès BPW Int
Certificat optionnel de médecine générale Education thérapeutique du patient 3ème partie Dr N.MESSAADI - M.CUNIN -M.CALAFIORE A.CHUDY 23/10/20141.
Damien GROSGEORGE Caroline PETITJEAN Su RUAN
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Université M’Hamed Bougara de Boumerdes
Commission numérique Propositions pour le projet ESPE2 2 avril 2014.
Projet télésurveillance
Master 1 ère année Sécurité des Systèmes Informatique 1 Gestion de modules  Un module est un morceau de code qui peut être chargé à la volée dans le noyau.
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
Visualisation d’un entrepôt de données Pré soutenance technique
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Les cartes graphiques Introduction Histoire Aujourd’hui
WinAC ODK Win AC ODK Open Developer Kit Open Developer Kit.
Présentation de la carte graphique
Visualisation des flots optiques en 3D
Traitement d’images 420-D78-SW A15 Semaine 02.
Les cartes graphiques Leur partie software.
Comment choisir son MCU (ou autre DSP, FPGA …) ?
Les cartes graphiques Leur partie software. Sommaire - Qu’est-ce qu’une carte graphique ? - D’un point de vue software ? - Que permettent-ils de faire.
GPU sous LabVIEW eTIG_OOP_ Plan de la présentation 1.Frameworks OOP référencés 2.Performances d’accés 3.Performances de compilation 4.Erreurs.
Transcription de la présentation:

Traitement de flux vidéo sur GPU (Processeur graphique) Stage au laboratoire L2S Supelec « On ne connaît que les choses que l’on apprivoise. » Antoine de Saint-Exupéry lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte 1.1 Objectif : Traiter un flux vidéo 1.2 Convolution 1.3 GPU : Graphic Processing Unit 1.4 Situation initiale Optimiser les transferts entre PC et GPU 2.1 Programmer avec Cuda 2.2 Différences entre synchrone ou asynchrone 2.3 Optimiser grâce aux streams 2.4 Gain obtenu 3 Application sur une caméra HD 3.1 Acquisition des images 3.2 Traitement du flux vidéo sur CPU 3.3 Convolution sur GPU lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Objectif : Traiter un flux vidéo Traitement d’un flux vidéo haute-définition (HD) en temps réel sur GPU Traitement d’un flux vidéo haute-définition Sur CPU : Impossible de traiter un flux vidéo haute-résolution en temps réel Sur GPU : Grâce à l’amélioration précédente, on peut envisager de traiter un flux vidéo HD en temps réel lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Convolution Noyau de convolution Pixel source + Pixels voisins Pixel résultat Convolution : Somme de produit lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Convolution Convolution séparée : Détection de contours (Taille images en pixels)² x (Taille noyau)² Convolution avec noyau classique (Taille images en pixels)² x 2(Taille noyau) Convolution avec noyau séparée lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD GPU : Graphic Processing Unit GPU CPU Représentation simplifiée des composants Pour 100 images 4096*4096 avec un kernel 7*7 : Version CPU : 5196 ms Version GPU : 41 ms lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD GPU : Graphic Processing Unit Puissance comparée des CPU/GPU en GFLOPS par seconde lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD GPU : Graphic Processing Unit Programmer avec CUDA : Utilisation du langage Cuda : Cuda : Compute Unified Device Architecture Permet de lancer des kernels (fonctions) en parallèle très simplement Extension du C (compilée grâce à nvcc) Disponible depuis 2007 Utilisation possible d’un IDE lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD GPU : Graphic Processing Unit Avantage au GPU Le GPU est efficace sur des calculs indépendants Chaque pixel du résultat est une somme de produits indépendantes des autres résultats La convolution est adaptée et parfaitement parallélisable sur GPU lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Situation Initiale Accélérer une convolution … Optimisations précédentes : Convolution séparée Accéléré sur GPU Avec utilisation de la mémoire shared sur la puce du GPU Soit moins que 25 ips pour avoir une image fluide Une version CPU pour comparaison : 154 863 ms, soit 0,646 images par seconde Une version GPU optimisée au niveau calcul : 726 ms, soit 137,7 ips Pour traiter 100 images 2048*2048 pixels avec un kernel 7*7 => Les transferts mémoires entre pc et GPU, goulot d’étranglement. lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Situation Initiale Représentation simplifiée des connexions entre PC et Device Goulot d’étranglement Cause : Temps de transfert des images & mode de fonctionnement du programme lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Situation Initiale Pour 100 images convoluant avec un kernel 7*7 Les temps de transferts sont la clé 60% du temps passé à effectuer des copies Il existe un moyen de faire des copies tout en calculant : En utilisant les streams Dans quelles conditions ce gain est intéressant ? lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Différences entre synchrone ou asynchrone Différence entre synchrone et asynchrone Nombre de cycle nécessaires pour n images : Synchrone : n * 3 cycles Asynchrone : n + 2 cycles (Cas ou Tup = Tkernel = Tdown) Synchrone : CPU et GPU s’attendent Asynchrone : Le CPU n’attend pas le GPU Pour utiliser le mode asynchrone : Les streams lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Optimiser grâce aux streams Une nécessité pour le mode asynchrone Fonctionne avec de la mémoire non pagineable Création d’un stream : Utilisation de cudaMemcpyAsync au lieu de cudaMemcpy Rajout de deux nouvelles variables lors de l’appel d’un kernel Destruction d’un stream lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Gain obtenu Accélération par rapport à la version synchrone (Sans streams) 100 images, kernel 7*7 lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Gain obtenu Facteur d’accélération obtenu par rapport à la version CPU Pour 100 images Avec un Kernel 7*7 Sur une Tesla C2050 Trois streams : Idéal dans de nombreux cas Gain performances : x2 voir x3 Nombre de streams lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Acquisition des images OpenCV OpenCV : Open Source Computer Vision (Version 2.3) Traitement d’images en temps réel Ouverture d’un flux vidéo simplifié Mais soumis aux problèmes de la librairie Code ouvrant un flux vidéo et changeant sa résolution Source : wikiopencv lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Acquisition des images OpenCV Affichage d’une vidéo (sans traitement) Code des anciennes versions compatibles Source : wikiopencv lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Acquisition des images Matlab Utilisation de la toolbox ‘Image Acquisition’ Code Matlab permettant l’acquisition et l’affichage d’image provenant de la webcam lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Traitement du flux vidéo sur CPU OpenCV Fonctions CPU dans un premier temps Détection de contours sur CPU Utilisation des fonctions intégrées d’OpenCV : Code C++ pour effectuer une détection de contours grâce à Sobel Contours d’une image (OpenCV) lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Traitement du flux vidéo sur CPU Matlab Version Matlab : Code Matlab pour détection contours Source : Projet S4 2011 lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Contexte Optimiser les transferts entre PC et GPU Application sur une caméra HD Convolution sur GPU Retard tant sur la version Matlab que sur la version OpenCV Solutions possibles : Utilisation des ‘mexs functions’ pour Matlab Correction des problèmes de librairie OpenCV Travaux en cours. lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Bilan Accélération facteur 2 voir 3 Traitement sur une webcam (OpenCV/Matlab) Bilan personnel : Programmation GPU (Cuda et C++) Utilisation (et installation) d’une librairie externe : OpenCV Utilisation d’un environnement Linux (Red Hat, puis Ubuntu) Programmation sous Linux, sans IDE Perspective Finaliser implémentation Matlab/OpenCV Algorithme itératif Multi-GPU lundi 27 mars 2017 Alexandre Frizac

Traitement de flux vidéo sur GPU (Processeur graphique) Sitographie http://developer.download.nvidia.com/compute/cuda/2_3/toolkit/docs/online/modules.html Nvidia Cuda Library http://opencv.willowgarage.com/documentation/cpp/index.html Wiki OpenCV : Rapport de Benoît Pencrec'h http://web1.lss.supelec.fr/perso/gac_nicolas/encadrements/stage_pencrech_L2S_2010.pdf Stage IUT au L2S - 2010 lundi 27 mars 2017 Alexandre Frizac