Optimisation d'algorithmes de traitement d'images sur une architecture utilisant le GPGPU Rapport de stage ST40 - P2013

Dimension: px
Commencer à balayer dès la page:

Download "Optimisation d'algorithmes de traitement d'images sur une architecture utilisant le GPGPU Rapport de stage ST40 - P2013"

Transcription

1 Optimisation d'algorithmes de traitement d'images sur une architecture utilisant le GPGPU Rapport de stage ST40 - P2013 AUBREE Loïs Département Informatique Filière Imagerie, Interaction et Réalité Virtuelle Centre de Robotique et Vision industrielles - CRVI 205,rte Mrg-Bourget G6V 6Z9 - Lévis (Québec) Tuteur en entreprise M. Moulay Akhloufi Suiveur UTBM M. Stéphane Galland

2 Mots clefs Algorithmique - Optimisation - GPU - GPGPU - CUDA - OPENCL traitement d'images Québec Aubrée Loïs Rapport de stage ST40 - P2013 Résumé Ce rapport de stage est destiné à présenter les travaux effectués lors de mon stage ST40 de l'université de Belfort-Montbéliard. Le sujet de mon stage a été l'optimisation d'algorithme de traitement d'images sur une architecture utilisant le GPGPU. Deux sujets de recherche particulier m'ont été proposés. L'un concernant la comparaison d'algorithmes de détection de points caractéristiques invariants dans une image sur GPU et le second sujet portait sur la comparaison d'algorithmes de labellisation de régions connexes. Je commence dans ce rapport par présenter l'entreprise et le contexte dans lequel s'est inscrit mon stage. Ensuite je présente les technologies utilisées pour la réalisation du stage. Ensuite je présente les deux sujets sur lesquels mon stage s'est porté pour finir sur une partie d'analyse et une conclusion. Le deuxième sujet ayant abouti à l'écriture d'un article, j'ai fait le choix de l'inclure en annexe de ce rapport. Centre de Robotique et de Vision Industrielles - CRVI 205,rte Mrg-Bourget G6V 6Z9 - Lévis (Québec)

3 Sommaire Remerciements:... 2 Introduction :... 3 Présentation de l entreprise :... 4 Organigramme de l'entreprise:... 5 Bibliothèque IVL:... 5 Présentation du stage:... 6 Formation sur les bibliothèques de GPGPU (CUDA/OPENCL)... 6 L'architecture CUDA:... 7 OPENCL: Le GPGPU pour le traitement d'image: Travail réalisé: Sujet 1: Comparaison d'algorithmes de points caractéristiques invariants Travail effectué: Difficultés rencontrées: Sujet 2: Comparaison d'algorithmes de labellisation de régions connectées sur images binaires utilisant le GPGPU Principe de fonctionnement de labellisation: Principe de fonctionnement de Rosenfled/PLatz: Travail effectué: Tests: Analyses : Estimation du gain apporté à l'entreprise : Conclusion : Références : Annexes :... 34

4 Remerciements: Je souhaite tout d abord remercier Moulay Akhloufi, Directeur Recherche et Développement mais aussi tuteur de mon stage, pour m avoir permis de travailler au sein du CRVI (Centre de Robotique et de Vision Industrielle) pendant ces 6 mois. Ensuite, je tiens à remercier le Directeur de l'entreprise, Alain Bordeleau, ainsi que tous les membres du personnel pour leur accueil chaleureux et leur bonne humeur même durant la rugueuse période de froid. Pour finir je remercie Lucie Boutou, une autre étudiante de l UTBM pour m avoir supporté et avec qui j ai pu découvrir le Québec.

5 Introduction : Ce stage de 6 mois au Centre de Robotique et de Vision Industrielle de Lévis (Québec) a été réalisé dans le cadre l unité de valeur ST40 «stage professionnel» de l Université de Technologie de Belfort-Montbéliard. Ce rapport est destiné à présenter le travail qui m a été demandé de réaliser. Mon stage s est déroulé comme un travail de recherche où deux sujets (études) précis m ont été accordés. Je commencerais par présenter l entreprise et le contexte dans lequel s est inscrit mon stage et, ensuite, j expliquerais le travail réalisé en deux grandes parties. Je conclurais ce rapport sur une analyse du travail effectué ainsi que des observations. Dans les annexes de ce rapport se trouve l'article que j'ai produit sur le deuxième sujet. Celui-ci étant en anglais, j'ai choisi de le traduire en partie pour apporter une explication des recherches, en français, dans la partie travail effectué du deuxième sujet de stage.

6 Présentation de l entreprise : Le CRVI (Centre de Robotique et de Visions Industrielles) est une entreprise fondée en Elle a pour but d'aider les PME manufacturières québécoises par la recherche, le développement technologique et le transfert de connaissances dans les domaines, de la robotique, de la vision des commandes et des procédés industriels. Le CRVI est donc une entreprise offrant des expertises et des services en robotique (simulation de systèmes robotisés, conception et développement de cellules robotisées,...) et des services en vision industrielle comme le développement et l'implantation de systèmes d'inspection et de mesures en temps réel ou guidage optique de robot. L'effectif de l'entreprise est d'une vingtaine de personne en incluant les nombreux stagiaires que l'entreprise accueil. Les locaux du CRVI sont positionnés dans le bâtiment du Cegep de Lévis-Lauzon. Lévis est une ville située sur la rive sud du saint Laurent juste en face de la capitale nationale du Québec, Québec City. Le CRVI est en partenariat étroit avec le cégep puisqu'il accueille des élèves du cégep pour effectuer des stages ou des projets ainsi que des professeurs du cégep pour leur fournir un espace de travail. M.Akhloufi, lui même, est enseignant au sein du cégep Lévis- Lauzon.

7 Organigramme de l'entreprise: Mon statut de stagiaire en laboratoire de recherche me positionnait en marge de cet organigramme au même niveau que l'équipe de programmation. Toutefois, les chargés de projets, programmeurs et M. Akhloufi ont été disponibles pour apporter une aide sur mes sujets. Pour ce qui est des conditions de travail, Lucie et moi étions dans un bureau à part et nous avions pour chacun un bureau et un ordinateur attribué. Les ordinateurs étaient à la propriété du CRVI et nous pouvions apporter notre propre ordinateur portable pour travailler. Bibliothèque IVL: La bibliothèque IVL est un bibliothèque favorisant le développement de produit de vision industrielles et de robotiques. Cette bibliothèque est développée et maintenue entièrement par le CRVI. L'équipe de programmation du CRVI est chargée de développer des nouveaux modules dans la bibliothèque afin de l'adapter aux solutions techniques que le centre propose à ces clients.

8 Présentation du stage: Le sujet de stage qui m'a été proposé concerne l'optimisation d'algorithmes de traitement d'images en utilisant les architectures GPGPU (general-purpose processing on graphics processing units). C'est à dire optimiser les algorithmes de traitement d'images en bénéficiant de la capacité massivement parallèle des processeurs graphiques. Les algorithmes de traitement d'images étant relativement nombreux, le choix du domaine sur lequel je devais me pencher a été fait sur place aux besoins de l'entreprise. Mon travail s'est inscrit dans un programme de recherche en amont d'une implémentation des algorithmes dans la bibliothèque IVL et en amont du développement d'une solution technique chez un particulier. L'objet de mon travail a été de comparer des algorithmes existants en traitement d'images en trouvant et implémentant des solutions sur GPGPU. Le travail de recherche s'est divisé en 3 parties. Tout d'abord avec la formation sur les bibliothèques permettant la programmation sur GPGPU. Ensuite deux parties de recherches ont été menées pour une comparaison d'algorithmes spécifiques. La première ayant été abrogée, les comparaisons n'ont pas été mené jusqu'à la présentation de résultats. Je présenterais toutefois dans ce rapport le sujet de ma première étude. Ensuite la seconde recherche a permis l'implémentation et la comparaison avec succès d'algorithmes de traitement d'images jusqu'à la présentation des résultats et l'écriture d'un article. Formation sur les bibliothèques de GPGPU (CUDA/OPENCL) Les activités récentes des principaux constructeurs de circuits électroniques comme NVIDIA montrent que les futurs systèmes informatiques seront "hybrides" par nature. C'est à dire que ces systèmes reposeront sur l'intégration de deux composants principaux. Les CPU (central process unit) multi-cœurs continueront à intégrer de plus en plus de cœurs en évitant les obstacles d'alimentation, de parallélismes et de mémoires. Et l'usage des GPU(graphics processing units) pour des calculs spécialisés ou massivement parallélisables sera de plus en plus banalisé. En effet depuis quelques années les performances en calcul virgule flottante des GPU dépassent largement celles des CPU classiques et la programmation d'algorithmes parallèles sur GPU est devenue autant, voir plus, accessible que sur CPU multi-cœur. Tout indique que l'avenir des ordinateurs, du portable au supercalculateur reposera sur un une architecture hybride, combinant ces deux composants. Le domaine du traitement d'images et de la vision n'est aussi pas épargné par l'avancée des systèmes hybrides. En effet un bon nombre d'algorithmes de traitements d'images repose sur

9 une architecture ou peuvent être traduit en une structure parallèle fournissant un gain considérable pour certains algorithmes. Le CRVI propose des systèmes de vision pour la mesure et l'inspection, et ces systèmes sont destiné au temps réel. C'est pourquoi l'avancée de l'usage de systèmes hybrides pour le traitement d'images oblige le CRVI à instaurer des algorithmes GPU dans la bibliothèque IVL et à proposer des solutions techniques utilisant ces systèmes pour garantir leur concurrence sur le marché de la vision. Depuis 2006, des sociétés comme NVIDIA, AMD et Khronos Group propose des solutions pour rendre la programmation GPGPU accessibles au plus grand nombre tout en favorisant l'intégration et la compatibilité des nouveaux processeurs graphiques aux bibliothèques permettant de programmer ces systèmes hybrides. A ce jour, sur le marché des GPGPU, deux solutions sont concurrentielles, CUDA qui est une solution dont NVIDIA est propriétaire et OpenCL qui est une solution libre visant à favoriser la programmation sur systèmes hybrides multiplateformes. L'architecture CUDA: CUDA désigne plus particulièrement un tout. Il s'agit autant de la technologie matérielle que la bibliothèque permettant de programmer sur le matériel compatible. En 2006, cinq ans après la sortie des carte GeForce 3, NVIDIA sorti la première carte graphique utilisant l'architecture CUDA, la Geforce 8800GTX. Cette nouvelle architecture à pour effet de surpassé les restrictions imposées par les GPU précédents en introduisant de nouveaux composants circuit. De là, le groupe NVIDIA démarra le développement de la bibliothèque pour programmer sur cette nouvelle architecture et rendre la programmation sur GPU accessible à tous. A la différence des architectures précédentes qui utilisaient les ressources de traitement en vertex et en pixel shaders, l'architecture CUDA unifie ces deux traitements et permet surtout d'assigner à chaque unité arithmétiques et logique (ALU) un programme pour réaliser des traitements généraux. La grande innovation apporté par NVIDIA sont des ALU utilisant des jeux d'instructions pour réaliser des traitements généraux (norme IEEE sur les ALU) plutôt que simplement des traitements graphiques. De plus les unités d'exécutions peuvent lire et écrire n'importe où en mémoire et également accéder à un cache de mémoire partagée. Toutes ces fonctionnalités permettent au GPU CUDA d'exceller dans les traitements généraux.

10 L'image ci-dessus montre le déroulement d'un appel à un noyaux d'exécution sur CUDA. Ce scénario est identique pour OpenCL que je décrirais ultérieurement dans ce rapport. Ce processus mets bien en lumière l'hétérogénéité du système et le fonctionnement des instructions sur architectures hybrides. Le CPU reste maitre de l'application c'est à dire qu'il ordonne les instructions et le GPU est assigné à des tâches très particulières (les noyaux). En CUDA, les noyaux sont écrits dans un langage similaire au C et le code des noyaux d'exécution destiné au GPU doit être compilé par un compilateur propre à CUDA, le compilateur NVIDIA CUDA Compiler Driver NVCC. Structurellement CUDA utilise pour communiquer les noyaux à la carte graphique un système de blocs d'exécution comportant eux mêmes des threads (unités d'exécution). Un thread est un appel au noyau. Il a autant d'appel d'exécutions de noyaux qu'il y a de threads. Les threads sont donc répartis dans des blocs destinés à être exécuté en parallèle sur un processeur graphique. Il ne peut y avoir plus de blocs et le nombre de thread par bloc est également limité. À l'heure actuelle les cartes graphiques ayant un score supérieur à 2.0 ne peuvent exécuter plus de 1024 threads par bloc. Les blocs sont aussi regroupés en grille et une grille ne peut pas contenir plus de blocs.

11 Exemple de programme CUDA: code noyau: global void add( int *a, int *b, int *c, int N){ int tid = blockidx.x; // traite l'élément à cet indice if (tid < N) c[tid] = a[tid] + b[tid]; } code CPU: int main(void){ int a[n],b[n],c[n]; // N entier int *dev_a,*dev_b,*dev_c; HANDLE_ERROR(cudaMalloc((void**)&dev_a, N * sizeof(int))); HANDLE_ERROR(cudaMalloc((void**)&dev_b, N * sizeof(int))); HANDLE_ERROR(cudaMalloc((void**)&dev_c, N * sizeof(int))); /** On remplit les tableaux a et b ***/ HANDLE_ERROR(cudaMemcpy(dev_a,a, N * sizeof(int),cudamemcpyhosttodevice)); HANDLE_ERROR(cudaMemcpy(dev_b,b, N * sizeof(int),cudamemcpyhosttodevice)); add<<<n,1>>>(dev_a,dev_b,dev_c,n); HANDLE_ERROR(cudaMemcpy(c,dev_c,N * sizeof(int),cudamemcpydevicetohost)); /** on affiche c **/ } cudafree(dev_a); cudafree(dev_b); cudafree(dev_c); Le code donné en exemple est un code permettant l'appel à un noyaux procédant à l'ajout de deux vecteurs a et b, les résultats de cette addition de vecteur sont stockés dans un troisième vecteur c. On voit bien ici la facilité de mise en place des fonctions CUDA. Bien qu'il s'agisse d'un exemple simple plusieurs éléments ne sont pas communs. Tout d'abord, les fonctions cudamalloc et cudamemcpy sont présentes pour effectuer l'allocation et la copie des vecteurs dans la mémoire de la carte graphique. La carte graphique ne possédant pas la main sur la mémoire principale. Il s'agit ici de la seule façon de faire transiter des données entre les deux mémoires et de fournir les données à la carte graphique. Ensuite l'appel au noyaux add s'effectue avec un appel comportant des triples chevrons. Ceci indique à la carte graphique la façon dont le programme veut lancer les threads. Le premier paramètre des chevrons indique le nombre de blocs de thread que l'on veut lancer pour le

12 programme et le second paramètre indique simplement le nombre de threads que doit comporté un bloc. Dans notre cas on souhaite donc lancer un bloc de un thread pour chaque addition d'éléments à traiter. On aurait aussi très bien pu lancer 1 bloc de N threads pour effectuer le calcul. Dans ce cas, le seul inconvénient est que les vecteurs ne doivent pas avoir plus de 1024 éléments. Le traitement sur un nombre de données dépassant les limites imposées par le matériel oblige à réaliser un combinaison de blocs et de threads pour effectuer la tâche. Enfin pour connaitre la place des éléments des vecteurs traités CUDA mais à disposition des numéros d'index. threadidx détermine à quel place se trouve le thread dans le bloc en traitement et blockidx détermine la place du bloc dans la grille. Grâce à cela et en connaissant les dimensions des blocs et de la grille (blockdim, griddim), il est possible de déterminer quel élément est actuellement en traitement. Formation: Ne connaissant pas l'architecture CUDA et la programmation GPGPU en général avant ce stage, je me suis donc accordé, avant tout lancement sur le premier sujet, deux semaines de formation sur cette architecture. Le site internet de NVIDIA est très bien documenté et propose un grand nombre de tutoriaux possibles. J'ai aussi suivi le livre "CUDA par l'exemple" de Jason Sanders et Edward Kandrot qui propose une très belle introduction au fonctionnement de l'architecture CUDA et à l'élaboration de premiers programmes l'utilisant en CUDA C. J'ai notamment codé certains programmes de traitement d'images simples comme l'inversion de couleur ou le passage de filtre gaussien pour me familiariser avec la 2D en CUDA, l'utilisation de la mémoire globale, partagée et de texture. OPENCL: OpenCL est une API (Application Programming Interface) développée par le Khronos Group. Elle permet la programmation de systèmes hétérogènes combinant processeur multi-cœur et GPU. Les avantages qu'opencl permet d'obtenir face à CUDA sont un format libre et ouvert, le multiplateformes, une concentration de GPU supportés plus importante puisque OpenCL n'est pas propriétaire et que Khronos Group collabore avec tous les constructeurs de GPU pour affiner cette API.

13 Techniquement, OpenCL est une combinaison entre API et un langage dérivé du C. Elle permet tout comme CUDA d'exécuter des noyaux d'instructions sur le GPU et de récupérer les résultats dans le code destiné au CPU. Toutefois, OpenCL agit différemment de CUDA puisqu'elle n'utilise pas de compilateur propre. En effet, l'ensemble des noyaux d'exécution sont stockés dans un fichier.cl et celui-ci n'est pas compilé mais interprété à l'exécution par l'api OpenCL. Les noyaux sont écrits dans le langage dérivé du C que l'api sait interpréter. L'API quand à elle est maintenue dans plusieurs langages (C,Python,Java...) favorisant encore une fois le caractère multiplateforme de l'interface. Formation d'un programme OpenCL: La création d'un programme OpenCL nécessite plusieurs étapes. Tout d'abord, OpenCL demande la création d'un contexte d'exécution pour récupérer des données sur l'architecture dans laquelle il évolue. Ensuite il est possible de créer une queue d'instructions. Celle ci permet placer les appels aux noyaux dans la boucle d'exécution. Afin de récupérer les noyaux d'un programme OpenCL dans le fichier.cl, il est nécessaire de créer un objet cl_program qui lit et stocke l'ensemble du fichier.cl dans une chaine de caractères. L'étape de construction du programme est la plus importante car c'est à ici que le programme est interprété et que les informations des noyaux sont stockés dans le programme. Il est alors aisé de créer un objet noyaux cl_kernel en cherchant dans le cl_program le noyaux par son nom. Cet objet noyaux est ensuite destiné à être placé dans la queue d'instructions pour être exécuter. Tout objet présent dans la mémoire CPU et nécessaire pour le noyaux doit être copié dans la mémoire tampon de la carte graphique. À l'aide de la fonction clcreatebuffer, il est possible d'allouer de l'espace pour ces objets. Il en est de même pour stocker les résultats du noyaux. Ceux ci peuvent être récupérer ensuite par le programme CPU et sont extrait vers la mémoire principale.

14 Figure 1 - chaine de création d'un programme OpenCL Exemple d'un noyaux OpenCL: kernel void add( global int * a, global int *b, global int* c, const unsigned n) { int id= get_global_id(0); if (id<n) c[id]= a[id] + b[id]; } Ce noyaux permet d'additionner les vecteurs a et b et de stocker les résultats dans un autre vecteur c. Tout comme pour CUDA, les threads sont réunis en grilles et il est possible de récupérer la position de ce thread dans le noyaux à l'aide des fonctions get_global_id et get_local_id. Ici il est aussi passé en paramètre la taille des vecteurs pour s'assurer de ne pas dépasser en mémoire. le kernel signifie à OpenCL que la fonction est une fonction noyaux et global indique les paramètres sont des objets de la mémoire globale sur le GPU. Lors de l'allocation des mémoires tampons les vecteurs a et b auront la permission en lecture seulement et le vecteur c en lecture/écriture.

15 Formation: Je me suis aussi familiariser avec OpenCL tout au long du stage en regardant des exemples et des tutoriaux proposer sur différents sites internet. Il est difficile d'évaluer mon temps de formation à cette API puisqu'elle s'est déroulé en continue sur le stage. Toutefois je peux dire qu'une première semaine de formation a été nécessaire pour découvrir le fonctionnement et réaliser des tests. Le GPGPU pour le traitement d'image: L'ensemble des algorithmes étudiés ici sont des algorithmes destinés à des applications 2D. Concrètement lors des parcours sur images, l'idée du traitement de pixels à pixels est prohibée. Sur GPU, le traitement des pixels d'une image ne se fait pas les uns à la suite des autres mais en parallèle. Dans le cas basique, on définie alors un thread par pixel. C'est à dire que pour un thread créé, un pixel est traité. La position du thread dans les blocs et sur la grille de traitement est alors étroitement liée avec celle sur l'image. Une des optimisations importante est que l'on peut aussi découper l'image en plusieurs blocs afin de traiter celle-ci plus rapidement en utilisant tous les processeurs graphiques. Le GPU reste toutefois non utile pour les algorithmes nécessitant un parcours obligatoire pixel par pixel.

16 Travail réalisé: Sujet 1: Comparaison d'algorithmes de points caractéristiques invariants Le premier travail qui m'a été confié, était de comparer les algorithmes de détection de points d'intérêts invariants dans une image. Les points caractéristiques invariants sont des objets permettant de caractériser une image en essayant de détecter et d'identifier certaines parties ou points clés dans l'image. On peut ainsi utiliser ses points d'intérêts comme descripteurs locaux de l'image. Les descripteurs locaux ont pour but de décrire le contenu visuel local de l'image. Ensemble ces descripteurs fournissent une grande information sur le contenu visuel global. Une image ainsi décrite pourra par la suite être comparée à d'autres images. Connaissant le contenu visuel de ses images, on peut alors déterminer des similitudes entre celles ci. Des exemples d'application des points caractéristiques sont le pattern matching (reconnaissance d'un motif dans une images), reconstruction panoramique, reconnaissance d'objets ou de formes (par exemple, un visage), etc.. Figure 2- Application de pattern matching utilisant le descripteur SURF Les descripteurs d'images sont très utilisés dans le domaine du traitement d'images et constituent la plupart des avancées techniques dans le domaine de la reconnaissance. Ce sont des algorithmes puissants permettant une multitudes d'applications. Toutefois des recherches sont encore très activement menée car les outils de détection de points d'intérêts et de reconnaissances ne sont pas encore optimaux.

17 Les points d'intérêts dit invariants représentent les points d'intérêts les plus robuste face aux variations possible. En admettant que l'on est deux images de la même scène (représentant les mêmes objets ou même personnes) mais prises à deux points de vue différents ou a des moments différents dans la journée. Les objets dans les images seront les mêmes mais il subiront indéniablement des variations sur l'image. Les trois grandes variations que l'on peut obtenir sur une image sont l'échelle, la rotation, la luminosité. L'échelle représentent un effet de "zoom" dans l'image, les objets sont les mêmes mais la taille change d'une image à l'autre. La rotation est liée au phénomène de changement de prise de vue. La luminosité correspond aux variations des sources lumineuses éclairant la scène. Les points caractéristiques invariant propose une certaine stabilité dans la détection et une description plus robuste du contenu visuel de l'image. Le premier algorithme introduisant des points d'intérêts invariants pour la description d'image fut développé par David G. Lowe en 1999 à l'université de la Colombie-Britanique, avec le célèbre algorithme SIFT (Scale-invariant feature transform). L'idée d'utiliser des points d'intérêt locaux remonte aux travaux de Hans Moravec en 1981 sur la recherche de correspondance entre deux images stéréoscopiques. Depuis de nombreux travaux et améliorations du détecteur de Moravec se sont ajoutés notamment avec les travaux de Harris et Stephen mettant au point le non moins célèbre détecteur de Harris. Mais ce n'est qu'en 1999 que l'on peut parler de détecteur de point d'intérêt invariants avec les travaux de Lowe présentés en conférence ICCV (International Conference on Computer Vision). Lowe publiera aussi des améliorations en 2004 dans la revue International Journal of Computer. De part l'avancé des systèmes hétérogènes et les nouveaux travaux déployés sur les points d'intérêts invariants, M.Akhloufi m'a proposé de mener une recherche pour ainsi comparer les différentes implémentations GPGPU des algorithmes de détection. En me basant sur une recherche bibliographique, je devais alors sélectionner les algorithmes paraissant les plus performants. Pour chaque solution des articles ont été publiés, ils présentent pour la plupart des tests de performances ainsi qu'une comparaison à d'autres algorithmes déjà existants. Plusieurs de ces algorithmes ont déjà eu une implémentation sur GPU existante.

18 Travail effectué: Les algorithmes sur lesquelles je me suis concentré sont les suivants: SIFT[1] : il reste un très bon algorithme pour certain type d'applications (reconstruction d'images panoramique, par exemple). Il s'avère être un des algorithmes les plus stables face aux variations d'échelles et de rotations mais il est très couteux en temps d'exécution. Ceci le rend impossible à utiliser pour des applications en temps réel. Il existe aussi de nombreuses variantes améliorant sensiblement les performances de l'algorithme notamment le PCA-SIFT qui procède à une analyse en composante principale sur les descripteurs. Pour ma part je me suis intéresser à l'implémentation de SIFT présente dans la bibliothèque de traitement d'images OpenCV pour la partie CPU et je me suis procuré les sources du projet SiftGPU[8]. Un autre inconvénient de SIFT est que l'algorithme développé par David G. Lowe est protégé par un brevet détenu par l'université de Colombie-Britanique. Le code source de l'implémentation de SIFT n'est donc pas disponible dans OpenCV et les implémentations libres de cet algorithme ne sont pas l'algorithme original mais des algorithmes se basant sur les explications fournies par l'article de Lowe. SURF[4](Speeded Up Robust Features) : Développé par Herbert Bay en 2006, SURF est devenu l'algorithme le plus utilisé pour les applications de mise en correspondance de point d'intérêts. Il est fortement inspiré des descripteurs SIFT et il est célèbre pour sa robustesse accrue et surtout pour une accélération importante face à SIFT. SURF rend possible des applications en temps réel. Une implémentation de SURF est présente dans OpenCV à la fois pour le GPU et le CPU. ORB[5](Oriented FAST and Rotated BRIEF) est un descripteur binaire développé par le Willow Garage. Une implémentation CPU et GPU sont déjà présent dans OpenCV. FREAK[6](Fast Retina Keypoint): c'est un descripteur simulant la réponse sensorielle de l'oeil humain. Il est présenté comme un descripteur plus robuste et plus performant que SURF. Il est le plus récent des descripteurs de la liste. Un implémentation de FREAK est présente dans OpenCV pour le CPU. Tous les algorithmes de mise en correspondance de points d'intérêts se divise en deux étapes, la détection (création des descripteurs) et le matching ( la mise en correspondance). L'étape que l'on cherche à évaluer dans ce sujet est la détection mais celle-ci ne peut s'évaluer qu'après avoir mis en correspondance points entre deux images. Pour effectuer les tests des différents algorithmes, j'ai réalisé une application en C/C++ permettant de charger une image et d'effectuer une batterie de test sur celle-ci. L'interface de la l'application est développée à l'aide de Qt et l'application avait pour but de combiner les différentes implémentations trouvées des algorithmes de points d'intérêts pour ainsi faciliter les tests et les rendre plus accessibles.

19 Le second sujet m'a été donné au cours de la réalisation de cette interface. Cette interface de test permet alors, à l'état de d'avancée actuel, d'effectuer un test sur GPU et CPU pour les algorithmes SURF et ORB. FREAK et SIFT ne fonctionnent que pour le CPU. Les tests sont réalisables pour les trois variations dites précédemment dans ce rapport, l'échelle, la rotation et la luminosité. L'utilisateur a besoin de charger une image et de créer des transformations qui s'appliquent sur l'image chargée de l'interface. L'interface génère donc des images au fur et à mesure pour ensuite les mettre en correspondance avec l'image d'origine. Pour la mise en correspondance des deux images, originale et de test, une détection des points intérêts est effectué sur les deux images ensuite une opération de matching est réalisable. La mise en correspondance des descripteur des deux images est possible. En réalité, un descripteur est un vecteur sur lequel des opérations de distance sont réalisables. L'opération de matching dite brute de force est simplement une comparaison de distance entre chaque vecteur (descripteur) et sont couplés les points étant les plus proches. Cette approche est certainement pas la plus appropriée puisque qu'elle ne prend pas en compte les transformations effectuer sur l'image de test. L'utilisation du brute de force pour des images de rotations, par exemple, va conduire à un couplage de points d'intérêts pour le moins aléatoires sans respecter la transformation. Il est donc important d'utiliser une autre forme de matching. La mise en correspondance assisté d'une découverte de la transformation affine qui a pu être réalisée sur l'image test est beaucoup plus convaincante et permet d'éviter beaucoup d'erreur de couplage de points. Grâce aux descripteurs des deux images, il est possibles d'obtenir la matrice fondamentale. L'idée de l'utilisation de cette matrice découle du fait qu'entre deux images à mettre en correspondance, il existe une transformation affine dont la matrice peut être extraite. A l'aide de tous les échantillons (points d'intérêts), on peut déterminer la matrice fondamentale de cette transformation en utilisant l'algorithme de RANSAC. La méthode cv::findfundementalmat de la bibliothèque de traitement d'images OpenCV permet de déterminer la matrice fondamentale et ainsi obtenir une mise en correspondance plus précise des points d'intérêts. Les performances d'un algorithmes de détection de points d'intérêts invariant sont testés sous plusieurs façons. Tout d'abord, la stabilité permet de définir si un algorithme reste stable selon les transformations appliquées à l'image. Le nombre de points couplés entre les deux images doit rester au mieux identique entre deux tests de transformations. L'algorithme doit aussi être robuste sur les points d'intérêts trouvés. Un algorithme est bon s'il détecte des points d'intérêts représentant le même contenu visuel dans les images d'une même scène. Enfin l'algorithme doit être le plus rapide possible pour effectuer la détection et la mise en correspondance.

20 Difficultés rencontrées: Certaines difficultés n'ont pas pu me permettre de mener à terme ce sujet. La mauvaise compréhension des concepts mathématiques mis en jeu dans ces algorithmes est en grande partie la cause des difficultés rencontrées. L'apprentissage des concepts mathématiques m'a fait perdre beaucoup de temps et souvent bloqué avant de me lancer sur la phase de recherche d'implémentations existantes. De plus l'interface pour favoriser la comparaison des algorithmes n'était effectivement pas nécessaire pour mener à bien les tests et n'a fait rendre la tâche plus difficile. Pour effectuer l'implémentation des solutions ne relevant pas d'opencv. Il a été très difficile pour moi d'extraire les algorithmes des autres projets, n'étant déjà pas à l'aise avec le fonctionnement interne de ces algorithmes. De plus ayant pour but d'unifier ces projets dans une seule interface, j'ai eu en effet une perte de temps à traduire les projets récupérés pour leur permettre de fonctionner sur l'interface. Ces erreurs m'ont permis d'aborder le deuxième sujet avec une autre vision du travail demandé.

21 Sujet 2: Comparaison d'algorithmes de labellisation de régions connectées sur images binaires utilisant le GPGPU. Ce deuxième sujet m'a été attribué sur la seconde partie du stage au milieu du troisième mois. Il s'avérai plus adapté au niveau de mes compétences en traitement d'images et mathématiques. Ce sujet était aussi plus encré dans l'activité de l'entreprise puisque cet étude s'inscrit préalablement à un implémentation de solution technique chez un client direct du CRVI. Les compétences acquises par la formation et par l'étude du premier sujet m'ont aidée aussi à avancer plus rapidement dans mes recherches. Ceci m'a permis de proposer sur ce sujet des solutions valides et j'ai pu présenter des résultats. Principe de fonctionnement de labellisation: Sur une image binaire, on peut considérer deux choses: le fond de l'image, en noir et les objets ou régions en blanc sur l'image. L'étiquetage (ou labellisation) de l'image repose sur cette considération. Le principe est de détecter les régions blanches de l'image en leur attribuant à chacune un label(numéro d'identification) différent. Pour une image binaire, on produit une image dite de labels qui comportera, pour chaque pixel de l'image binaire, le label qu'il lui est associé.

22 La figure ci-dessus montre une image binaire, fond blanc et objets noirs. L'image de label produite après le passage d'un algorithme de labellisation devrait être sous la forme de l'image de droite. Tous les pixels possèdent un label et les pixels connectés à la même régions ont la même valeur de label. Les pixels sont connectés de deux manières en 4 ou 8 connexité. La connexité 4 signifie que les pixels voisins Nord, Ouest, Sud et Est sont de même nature que le pixel courant. La connexité 8 s'applique aux 8 voisins du pixels courant. Les pixels sont connectés s'ils valident la propriété de connectivité. Dans le cas d'une image binaire la propriété est valide si deux pixels voisins appartiennent tous les deux au fond ou tous les deux aux objets. Le premier algorithme de labellisation fut développé en 1966 par Rosenfeld et Platz. Cet algorithme est enseigné en traitement d'image car il est intuitif et permet de comprendre le concept de parcours d'images. La solution de Rosenfeld et Platz permet de labelliser l'image en deux parcours d'image ou deux passes.

23 Principe de fonctionnement de Rosenfled/PLatz: L'algorithme de Rosenfeld/Platz parcours l'image de droite à gauche et de haut en bas en balayant un à un les pixels de l'image binaire. A la première passe, l'algorithme effectue un balayage de l'image. Selon le degré de connexité (4 ou 8), le test de connectivité se fait sur 2 ou 4 voisins, les voisins Nord et Est pour une connexité 4 et les voisins Nord-est, Nord, Nord-ouest et Est pour une connexité 8. A chaque pixel l'algorithme agit ainsi : Si le pixel parcouru appartient au fond de l'image, alors il reçoit le label 0 dans l'image de labels. Si le pixel est un pixel objet et qu'un voisin valide la propriété de connectivité alors le pixel courant reçoit le même label que ce voisin dans l'image de labels. Si le pixel est un pixel objet et que plusieurs voisins valident la propriété de connectivité alors le pixel courant reçoit le plus petit des labels des voisins connectés et l'on stocke dans une table d'équivalence tous les labels des autres voisins connectés. Si le pixel est un pixel objet et qu'aucun des voisins ne valide la propriété de connectivité alors un nouveaux label unique est attribué au pixel courant dans l'image de labels. La seconde passe est une passe dite de résolution de labels. En effet après la première passe tous les labels des régions connectées ne sont pas encore attribués définitivement. Certains pixels connectés n'ont pas le même label. Toutefois grâce à la première passe une table d'équivalence a été construite. Cette table permet de stocker tous les labels validant la propriété de connectivité. La deuxième passe a pour but de balayer l'image de label pour attribuer à chaque pixel le plus petit des labels équivalents.

24 Figure 3- Labellisation d'une image en 4-connexité L'algorithme Rosenfeld/Platz n'est pourtant pas optimal et même très couteux en temps d'exécution. En effet pour de grandes images par exemple, la table d'équivalence devient rapidement très difficile à résoudre et fait chuter les performances de l'algorithme. C'est pourquoi il ne fait pas parti des algorithmes étudiés dans cette recherche. Les algorithmes présentés par la suite sont déjà plus performant que celui-ci sur une implémentation CPU. Les algorithmes de labellisation sont utilisés dans beaucoup d'applications de traitement d'images et vision industrielles, les applications que peut permettre ce type d'algorithme sont le comptage de régions dans une scène, vérifier de la connectivité de deux régions, faire des calculs d'aires que prend les régions dans l'image, etc. Les algorithmes de labellisation peuvent donner des informations utiles pour des classifieurs menant à la reconnaissance de formes par exemple. Dans la vision industrielle, cela peut être utile dans les opérations de contrôle sur les lignes de production (exemple : contrôle de qualité).

25 Travail effectué: Dans un premier temps, j'ai procédé à une recherche bibliographique sur les avancées algorithmes dans ce domaine. Ensuite en me basant sur les articles déjà établis, j'ai procédé à une sélection d'algorithmes offrant de bonnes performances sur CPU pour ensuite les traduire sur GPU. La difficulté résidait dans la parallélisassions des algorithmes qui de base ne le sont pas. Je me suis particulièrement intéressé à quatre types d'algorithmes. L'algorithme de propagation de voisins (Neighbor Propagation) : Cet algorithme réalise la labellisation de l'image en plusieurs passes jusqu'à convergence. Le point d'arrêt de la labellisation s'effectue lorsque plus aucun label n'est modifié durant une passe. A l'initialisation l'image de label se voit attribuer un label unique par pixel selon les valeurs matricielles. Figure 4 - Valeurs matricielles pour une image 5 par 5 Ensuite l'algorithme effectue un balayage de l'image pixel par pixel. Pour chaque pixel, le voisinage en 4 ou 8 connexité est extrait. Si des pixels de ce voisinage valident la propriété de connectivité alors le pixel courant se voit attribuer le plus petit des labels des voisins valides. Si le label du pixel courant est déjà plus petit que les labels des voisins valides alors aucun changement de label n'est opéré. L'image ci-dessous montre une résolution par l'algorithme de propagation de voisins. Figure 5- L'algorithme de Propagation de voisinage non parallèle

26 Implémentation sur GPU: Une version parallèle de cet algorithme est réalisable. Chaque pixel est traité par un thread et pour chaque thread, on charge le pixel courant et son voisinage dans les deux images, binaire et de labels. Le critère d'attribution du label est équivalent à la version non parallèle de l'algorithme. L'image de label évolue à chaque itération jusqu'aux même critère de convergence. L'image ci-dessous montre la labellisation de la même image. Celle-ci se réalise en 6 itérations sur l'image. Le gain de performances est déjà intuitif puisqu'aucune tâche de balayage d'image n'est effectuée. On appel simplement N fois un noyau exécuté en parallèle. Figure 6 - Exécution du l'algorithme de propagation de voisins sur GPU en 6 itérations L'algorithme de propagation de voisins directionnel (Directional Neighbor Propagation): L'algorithme de la propagation de voisins directionnel découle de la propagation de voisin. L'idée n'est pas ici de traiter les pixels uns à uns mais d'effectuer la labellisation selon les lignes et les colonnes. Cet algorithme effectue aussi la labellisation en plusieurs itérations jusqu'à ce qu'aucun des labels ne soit modifié durant une passe. L'algorithme propage donc les labels dans les 4 directions, de haut en bas, de bas en haut, de gauche à droite et droite à gauche. Les labels propagés sont les plus petits labels. Un label est propagé sur la ligne ou la colonne si le label suivant est plus grand et que le pixel suivant vérifie la propriété de connectivité avec le pixel courant. Implémentation sur GPU: Ici un thread n'est pas attribué pour un pixel mais pour le traitement d'une ligne complète. Une itération pixel à pixel est pratiquée le long de cette ligne pour propager les plus petits labels. Le gain de performance est donné par la parallélisassions des traitements en lignes et en colonnes. Pour la version GPU de l'algorithme toutes les lignes et colonnes sont traitées en même temps. L'image ci-dessous montre une itération de l'algorithme dans les 4 directions de l'images.

27 Figure 7 - Une itération de l'algorithme de propagation de voisin directionnel L'algorithme d'équivalence de labels (Label equivalence): L'algorithme d'équivalence de labels est une méthode de labellisation en passes multiples. Cet algorithme utilise deux images de labels pour mener à bien cette tâche. La deuxième image de labels introduite ici va permettre de stocké effectivement des équivalences de labels. Toutefois il ne s'agit pas là d'une table d'équivalence comprenant toutes les équivalences d'un label. En effet pour de grandes images, une table d'équivalence peut atteindre une taille considérable. Les recherches ont montré que l'utilisation d'une table d'équivalence comme dans l'algorithme de Rosenfeld/Platz n'est pas une solution acceptable. Ce rejet de la table d'équivalence et d'autant plus fort par l'utilisation des GPU. Les GPU possèdent assez peu de mémoire et les accès répétés en mémoire sont la cause de pertes de performances considérables. Les temps d'accès en mémoire sur GPU sont souvent bien supérieurs aux temps de calcul fournis par les ALU. C'est pourquoi cet algorithme propose une solution autre. L'idée de cet algorithme est de sauvegarder, dans une seconde image de labels, la plus petites valeur de label des voisins vérifiant la propriété de connectivité. Pour effectuer la labellisation les deux images de labels L1 et L2 sont initialement créées avec les valeurs matricielles et l'algorithme effectue trois étapes distinctes. Étape de balayage (Scanning) : Cette première étape effectue un balayage de l'image. Pour chaque pixel si des pixels voisins vérifient la propriété de connectivité alors le label du plus petit de ces voisins est stocké dans la l'image de label L2 pour le pixel courant. Si aucun label voisin validant la propriété n'est plus petit que le label du pixel courant alors le label courant est gardé.

28 Étape d'analyse(analysis): L'étape d'analyse est l'étape la plus importante car elle va résoudre les équivalences. Celle-ci effectue une recherche de chaine de labels pour déterminer le label réel à attribuer à chaque pixel. Après l'étape de balayage, l'algorithme se trouve en possession des deux images L1 et L2. L1 n'a pas été modifiées et garde les anciennes valeurs de labels alors que L2 a subit le balayage. Admettons un pixel p ayant pour label 5 dans L1 et le label 2 dans L2. C'est à dire que ce pixel p possède un voisin q ayant, lui même, le label 2 dans L1. En admettant que ce même voisin q possède le label 1 dans L2 alors cela veut dire qu'il est aussi voisin d'un autre pixel ayant le label 1 dans L1. Le label que doit obtenir le pixel p n'est donc pas celui de du pixel q mais bien de ce dernier pixel car il s'agit d'un pixel connecté à la même région et que son label est plus petit que le label du pixel q. L'Étape d'analyse va alors effectuer une compression de chemin pour obtenir le plus petit label de la région connectée. Le critère d'arrêt de cette compression de chaine s'effectue lorsque le chemin arrive à un label dit "racine". C'est à dire un label possédant le même label à la fois dans L1 et dans L2. Une fois ce chemin parcouru les labels de L2 sont remplacés par les labels racines. Il est important de remarquer que l'opération de compression de chemin peut s'avérer très couteuse. Étape de labellisation(labelling): Cette étape assigne les labels de L2 à ceux de L1. L'algorithme peut alors réitérer ces trois étapes jusqu'à ce qu'aucun label de L1 ne soit modifié lors de l'étape de labellisation. Implémentation sur GPU: Un thread est assigné au traitement d'un pixel. Ce thread charge le pixel et son voisinage ainsi que les deux images de labels. Le traitement est ainsi effectuer en parallèle pour offrir de grande performance de labellisation.

29 Figure 8 - Une itération de l'algorithme d'équivalence de label - les labels racines sont en rouge L'algorithme d'o'connell(o'connell algorithm): L'algorithme de Sean O'Connell[2] est une approche différente de la labellisation. Il respect particulièrement la considération d'existence de fond et d'objets dans une image binaire. L'initialisation de l'algorithme est fait selon les valeurs matricielles en partant de l'index 1. Tout les pixels du fond se voient attribués le label 0. Ceci à pour conséquence de marquer réellement un écart entre le fond et les objets. Ensuite, l'algorithme se sépare en 4 grandes étapes, le balayage sur les colonnes, le traitement sur les colonnes, la mise à jour des racines et la mise à jour des enfants. Le balayage sur les colonnes: Cette première étape effectue une propagation colonne par colonne du plus haut label. Figure 9 - première étape de l'algorithme de O'Connell

30 Le traitement des colonnes: Cette étape peut être séparée en trois autres sous-étapes. Le rassemblement des voisins: Cette étape effectue un traitement colonne par colonne et pour chaque pixel de la colonne à droite de la colonne courante, on recherche un voisin de plus haut label. Si un pixel de plus haut degré est découvert alors le pixels racine attaché au pixel courant prend la valeur du pixel de haut label. Figure 10 - Application de l'étape de découverte de voisins La mise à jour des colonnes: Cette étape permet de refléter tout changement effectué sur les racines afin de mettre à jour les enfants. Figure 11 - Mise à jour des colonnes La rétrodiffusion: Tout la recherche de voisin la rétrodiffusion procède à une recherche des voisins dans le sens inverse. Lorsqu'un pixel voisin de plus haut degré est trouvé, on met à jour le label du pixel racine attaché au pixel courant.

31 Figure 12 - Étape de rétrodiffusion La mise à jours des racines: La mise à jour des racines et une étape permettant de résoudre les problèmes de chainage de racines. L'algorithme va parcourir l'image de label pour déterminer quelle est la racine réel de la régions connectée. Pour descendre dans la chaine, un test est réalisé sur chaque racine. Si le label de la racine ne correspond pas à la valeur matricielle initialement associé c'est qu'il existe un chemin menant à une racine réelle pour la région connecté. La mise à jour des enfants: Figure 13 - résolution d'une chaine de racine Une fois le problème de chainage résolu, on procède à la mise à jour des enfants colonne par colonne. Figure 14 - Mise à jour des enfants

32 Pour effectuer la comparaison des algorithmes, j'ai tout d'abord développé leur version CPU. Pour les versions GPU, deux implémentations de chaque algorithme ont été réalisée, une sur CUDA et l'autre en OPENCL. Au final une implémentation en CPU,CUDA et OpenCL a été réalisée pour les 3 premiers algorithmes. Par manque de temps, l'algorithme de Sean O'Connell n'a fonctionné que sous OpenCL. La traduction de cet algorithme en CUDA a débuté dans les derniers jours de mon stage. Je n'ai pas eu le temps de résoudre les bugs de compilation pour me permettre d'effectuer des tests. Tests: Les tests ont été fait sur une carte graphique NVIDIA Geforce 680 GTX, une carte graphique très récente. La première comparaison des algorithmes a été faite selon la taille d'une image que l'on grossit 30 fois pour obtenir autant d'échelles de la même images. Ce test à pour but d'évaluer les performances des algorithmes en fonction du nombre de pixels à traiter. Il est important de garder la même image pour le nombre de régions connectées ne diffère pas d'un test à l'autre. Un autre test a été effectué sur un set de 100 images binaires tirées de la base de donnée "The Berkeley Segmentation Dataset and Benchmark ". Afin de binariser les images, un seuillage a d'abord été fait sur chaque image à la volée. L'intérêt de cette expérimentation est de déterminer la stabilité des algorithmes par rapport au nombre de régions dans l'images et leur répartition aléatoire. Les résultats montrent que la bibliothèque CUDA permet de meilleur performances qu'opencl. Et surtout permet de conclure sur l'importance de l'utilisation des GPU par rapport aux CPU sur les algorithmes de labellisation, surtout pour les images de grandes tailles. Les résultats obtenus sont présents dans la catégorie "results" de l'article placé dans les annexes de ce rapport.

33 Analyses : J'ai pu apprendre à travers ce stage à mener une recherche en totale autonomie, ce qui je pense m'apporte une grande expérience dans le domaine de la recherche et une bonne capacité à effectuer du travail en solitaire. Pour ce qui est du travail réalisé, mon regret est de ne pas avoir adopté une bonne méthodologie de recherche sur le premier sujet qui m'a été proposé, ce qui m'a gêné en deux points. Premièrement par une période de blocage de mes recherches sur ce sujet et ensuite par une perte de temps pour l'étude du deuxième sujet. J'explique mon échec sur le premier sujet par une négligence bibliographique et surtout par une mauvaise compréhension des notions mathématiques utilisées dans les algorithmes de points caractéristiques invariants. Toutefois je pense que le changement de sujet m'a permis de me remettre en confiance et m'a permis de présenter un travail et des résultats, ce qui je pense n'aurai pu être possible pour un stage de 6 mois pour ma part sur le premier sujet. Estimation du gain apporté à l'entreprise : L'estimation du gain apporté à l'entreprise est pour moi difficile à réaliser puisque que je n'ai pas eu à apporter de réelle solution technique à un problème posé ou même de reprogrammer pour la bibliothèque IVL des fonctionnalités d'autres bibliothèques propriétaires. Les recherches bibliographiques, l'article produit et les résultats obtenus apportent un gain de temps notable à l'équipe de programmation. L'estimation du gain monétaire résulte dans la non perte d'argent pour le CRVI puisque le stage était non rémunéré et il est pour moi difficile de chiffrer en argent le travail réalisé. Mon travail étant de la recherche, je ne suis pas surpris de ne pas pouvoir faire l'estimation en argent puisque le laboratoire de recherche n'est pas directement relié aux bénéfices de l'entreprise.

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Segmentation d'images à l'aide d'agents sociaux : applications GPU Segmentation d'images à l'aide d'agents sociaux : applications GPU Richard MOUSSA Laboratoire Bordelais de Recherche en Informatique (LaBRI) - UMR 5800 Université de Bordeaux - France Laboratoire de recherche

Plus en détail

Une bibliothèque de templates pour CUDA

Une bibliothèque de templates pour CUDA Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données

Plus en détail

Guide de configuration de SQL Server pour BusinessObjects Planning

Guide de configuration de SQL Server pour BusinessObjects Planning Guide de configuration de SQL Server pour BusinessObjects Planning BusinessObjects Planning XI Release 2 Copyright 2007 Business Objects. Tous droits réservés. Business Objects est propriétaire des brevets

Plus en détail

Dossier projet isn 2015 par Victor Gregoire

Dossier projet isn 2015 par Victor Gregoire Dossier projet isn 2015 par Victor Gregoire Plan: I) But du projet: créer un jeu de blackjack fonctionnel et le poster sur une page web mise en ligne. Le jeu sera developpé en C++ a l'aide de code blocks.

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique DUT Informatique, orientation Imagerie Numérique Domaine : Sciences, Technologies, Santé Mention : Informatique Organisation : Institut Universitaire de Technologie Lieu de formation : Le Puy en Velay

Plus en détail

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet Projet ISN - dossier réalisé par Randrianarimanana Stéphanie Titre du projet : Site de rencontre le nom de notre site de rencontre : Linkymeet ( tout astérisque* signifie voir annexe) l'équipe : Randrianariamanana

Plus en détail

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Livre blanc Mesure des performances sous Windows Embedded Standard 7 Livre blanc Mesure des performances sous Windows Embedded Standard 7 Table des matières Résumé... 1 Introduction... 1 Utilisation de la boîte à outils Windows Performance Analysis... 2 Fonctionnement...

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

ORACLE TUNING PACK 11G

ORACLE TUNING PACK 11G ORACLE TUNING PACK 11G PRINCIPALES CARACTÉRISTIQUES : Conseiller d'optimisation SQL (SQL Tuning Advisor) Mode automatique du conseiller d'optimisation SQL Profils SQL Conseiller d'accès SQL (SQL Access

Plus en détail

Détection des points d intérêt et Segmentation des images RGB-D. Présentée par : Bilal Tawbe. Semaine de la recherche de l UQO

Détection des points d intérêt et Segmentation des images RGB-D. Présentée par : Bilal Tawbe. Semaine de la recherche de l UQO Détection des points d intérêt et Segmentation des images RGB-D Présentée par : Bilal Tawbe Semaine de la recherche de l UQO 25 Mars 2015 1. Introduction Les méthodes de détection de points d intérêt ont

Plus en détail

Analyse de la vidéo. Chapitre 4.1 - La modélisation pour le suivi d objet. 10 mars 2015. Chapitre 4.1 - La modélisation d objet 1 / 57

Analyse de la vidéo. Chapitre 4.1 - La modélisation pour le suivi d objet. 10 mars 2015. Chapitre 4.1 - La modélisation d objet 1 / 57 Analyse de la vidéo Chapitre 4.1 - La modélisation pour le suivi d objet 10 mars 2015 Chapitre 4.1 - La modélisation d objet 1 / 57 La représentation d objets Plan de la présentation 1 La représentation

Plus en détail

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies Régis Boulet Charlie Demené Alexis Guyot Balthazar Neveu Guillaume Tartavel Sommaire Sommaire... 1 Structure

Plus en détail

Auguria_PCM Product & Combination Manager

Auguria_PCM Product & Combination Manager Auguria_PCM Product & Combination Manager Guide utilisateurs v1.5 Auguria 9, rue Alfred Kastler 44300 NANTES FRANCE +33251135012 contact@auguria.net Plan 1 Description générale du module...3 2 Mise en

Plus en détail

Projet Matlab : un logiciel de cryptage

Projet Matlab : un logiciel de cryptage Projet Matlab : un logiciel de cryptage La stéganographie (du grec steganos : couvert et graphein : écriture) consiste à dissimuler une information au sein d'une autre à caractère anodin, de sorte que

Plus en détail

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes. Introduction L'objectif de mon TIPE est la reconnaissance de sons ou de notes de musique à l'aide d'un réseau de neurones. Ce réseau doit être capable d'apprendre à distinguer les exemples présentés puis

Plus en détail

Logiciel EV3 LEGO MINDSTORMS Education

Logiciel EV3 LEGO MINDSTORMS Education Robot éducateur : LEGO Education a le plaisir de vous présenter Robot éducateur, une sélection d'activités pédagogiques vous permettant de prendre en main votre EV3 LEGO MINDSTORMS Education de façon structurée

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Systemes d'exploitation des ordinateurs

Systemes d'exploitation des ordinateurs ! " #$ % $ &' ( $ plan_ch6_m1 Systemes d'exploitation des ordinateurs Conception de Systèmes de Gestion de la Mémoire Centrale Objectifs 1. Conception de systèmes paginés 2. Conception des systèmes segmentés

Plus en détail

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques livre blanc DÉVELOPPEMENT INFONUAGIQUE MEILLEURES PRATIQUES ET APPLICATIONS DE SOUTIEN DÉVELOPPEMENT INFONUAGIQUE - MEILLEURES PRATIQUES 1 Les solutions infonuagiques sont de plus en plus présentes sur

Plus en détail

Introduction à CUDA. gael.guennebaud@inria.fr

Introduction à CUDA. gael.guennebaud@inria.fr 36 Introduction à CUDA gael.guennebaud@inria.fr 38 Comment programmer les GPU? Notion de kernel exemple (n produits scalaires): T ci =ai b ( ai, b : vecteurs 3D, ci for(int i=0;i

Plus en détail

Reaper : utilisations avancées

Reaper : utilisations avancées Reaper : utilisations avancées Reaper dispose de ressources qui, sans être cachées, ne sont pas toujours faciles à trouver, d'autant plus que souvent on n'imagine même pas que ces choses soient possible!...

Plus en détail

Introduction au calcul parallèle avec OpenCL

Introduction au calcul parallèle avec OpenCL Introduction au calcul parallèle avec OpenCL Julien Dehos Séminaire du 05/01/2012 Sommaire Introduction Le calculateur du CGR/LISIC/LMPA Généralités sur OpenCL Modèles Programmation Optimisation Conclusion

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle 1 CEA R & D for Nuclear Energy 5 000 people Nuclear systems

Plus en détail

Pourquoi l apprentissage?

Pourquoi l apprentissage? Pourquoi l apprentissage? Les SE sont basés sur la possibilité d extraire la connaissance d un expert sous forme de règles. Dépend fortement de la capacité à extraire et formaliser ces connaissances. Apprentissage

Plus en détail

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova I. Introduction Dans une période où la plasticité peut aider à réduire les coûts de développement de projets comme des applications mobile,

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN 1. Introduction Le règlement (UE) n 610/2013 du 26 juin 2013 a modifié la convention d'application de l'accord de Schengen,

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Trier les ventes (sales order) avec Vtiger CRM

Trier les ventes (sales order) avec Vtiger CRM Trier les ventes (sales order) avec Vtiger CRM Dans l'activité d'une entreprise, on peut avoir besoin d'un outil pour trier les ventes, ce afin de réaliser un certain nombre de statistiques sur ces ventes,

Plus en détail

Rapport de Stage de première année de BTS SIO SLAM

Rapport de Stage de première année de BTS SIO SLAM Rapport de Stage de première année de BTS SIO SLAM Année scolaire 2013/2014 Responsable de Stage : JAMI Norbert Élève : LE SQUERN Steven 1 SOMMAIRE : Page 3 : Remerciement Page 4 : Présentation Page 5

Plus en détail

Télécom Nancy Année 2013-2014

Télécom Nancy Année 2013-2014 Télécom Nancy Année 2013-2014 Rapport 1A Ajout du langage C dans la Programmer's Learning Machine GIANNINI Valentin Loria 615, rue du Jardin Botanique 54600, Villers-Lès-Nancy Maître de stage : QUINSON

Plus en détail

Virtualisation de serveurs Solutions Open Source

Virtualisation de serveurs Solutions Open Source Virtualisation de serveurs Solutions Open Source Alain Devarieux TSRITE2009 FOAD 1 / 19 Table des matières 1.Les principes de la virtualisation...3 1.1.Partage d'un serveur...3 1.2.Objectif de la virtualisation...4

Plus en détail

Introduction à la programmation des GPUs

Introduction à la programmation des GPUs Introduction à la programmation des GPUs Anne-Sophie Mouronval Mesocentre de calcul de l Ecole Centrale Paris Laboratoire MSSMat Avril 2013 Anne-Sophie Mouronval Introduction à la programmation des GPUs

Plus en détail

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit. Proposition de stage de BAC+4 ou BAC+5 Pro ou Recherche Etude comparative des outils de vérification d'algorithmes parallèles Logiciels (LSL), localisé à Palaiseau (Essonne), développe les outils d'aide

Plus en détail

Ebauche Rapport finale

Ebauche Rapport finale Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide

Plus en détail

Microsoft Application Center Test

Microsoft Application Center Test Microsoft Application Center Test L'outil de Test de performance des Sites Web Avec Visual Studio.NET, il est fourni une petite application qui permet de valider la performance de son site Internet ou

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Traitement bas-niveau

Traitement bas-niveau Plan Introduction L approche contour (frontière) Introduction Objectifs Les traitements ont pour but d extraire l information utile et pertinente contenue dans l image en regard de l application considérée.

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

TEXT MINING. 10.6.2003 1 von 7

TEXT MINING. 10.6.2003 1 von 7 TEXT MINING 10.6.2003 1 von 7 A LA RECHERCHE D'UNE AIGUILLE DANS UNE BOTTE DE FOIN Alors que le Data Mining recherche des modèles cachés dans de grandes quantités de données, le Text Mining se concentre

Plus en détail

Introduction MOSS 2007

Introduction MOSS 2007 Introduction MOSS 2007 Z 2 Chapitre 01 Introduction à MOSS 2007 v. 1.0 Sommaire 1 SharePoint : Découverte... 3 1.1 Introduction... 3 1.2 Ce que vous gagnez à utiliser SharePoint... 3 1.3 Dans quel cas

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

L'évolution de VISUAL MESSAGE CENTER Architecture et intégration

L'évolution de VISUAL MESSAGE CENTER Architecture et intégration L'évolution de VISUAL MESSAGE CENTER Architecture et intégration Sommaire Résumé exécutif Base technologique : VISUAL Message Center 2 3 VISUAL Message Center Core Engine VISUAL Message Center Extended

Plus en détail

Bernard HAMM, Évelyne LAVOISIER

Bernard HAMM, Évelyne LAVOISIER 92 MAÎTRISE DE PROGICIELS DE GESTION DE BASES DE DONNÉES ET DE TRAITEMENT DE TEXTE Compte rendu d'un stage à l'usage des professeurs de sciences sociales. Ce stage a été programmé A la demande et avec

Plus en détail

NOS FORMATIONS EN BUREAUTIQUE

NOS FORMATIONS EN BUREAUTIQUE NOS FORMATIONS EN BUREAUTIQUE Par Vivien Romaric DOVI EREBYA SENEGAL «Villa N 1, cité BOURGI - Route de l'aéroport - Dakar, Sénégal» +221 77 475 74 59 info@erebya.com 1 FORMATION N 002 : Initiation à l

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Leica DM4000 B LED. Une imagerie facilitée par un éclairage brillant!

Leica DM4000 B LED. Une imagerie facilitée par un éclairage brillant! Leica DM4000 B LED Une imagerie facilitée par un éclairage brillant! Microscope numérique Leica avec éclairage à LED pour les applications biomédicales LEICA DM4000 B LED UN ÉCLAIRAGE BRILLANT POUR L'IMAGERIE!

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Rapport 2014 et demande pour 2015. Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Rapport 2014 et demande pour 2015. Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121 Rapport 2014 et demande pour 2015 Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121 Rappel sur Méso-NH : Modélisation à moyenne échelle de l atmosphère

Plus en détail

Logiciel de télégestion ACS série 700

Logiciel de télégestion ACS série 700 5 640 Logiciel de télégestion ACS série 700 Il intègre différents modules logiciels : un logiciel de gestion, un logiciel graphique, un logiciel d'alarme, un logiciel d'appels automatiques et un logiciel

Plus en détail

Société do you soft. Système de versionning/backup de configuration d'équipements/appliances

Société do you soft. Système de versionning/backup de configuration d'équipements/appliances Soutenance de stage Société do you soft Système de versionning/backup de configuration d'équipements/appliances Tuteur : Luc Bégault Tuteur IUT : Agnès Pujas Stagiaire : David Sanchez Sommaire Présentation

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

ACCECIA Avenue André Malraux, ZI de Cana 19100 BRIVE LA GAILLARDE Tél : +33 (0) 555 88 19 28 Fax +33 (0) 555 88 23 81 www.accecia.

ACCECIA Avenue André Malraux, ZI de Cana 19100 BRIVE LA GAILLARDE Tél : +33 (0) 555 88 19 28 Fax +33 (0) 555 88 23 81 www.accecia. CLARISSE GESTION ELECTRONIQUE DES DOCUMENTS (LIVRE BLANC) ACCECIA Avenue André Malraux, ZI de Cana 19100 BRIVE LA GAILLARDE Tél : +33 (0) 555 88 19 28 Fax +33 (0) 555 88 23 81 www.accecia.fr Contenu 1

Plus en détail

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL J. TICHON(1) (2), J.-M. TOULOTTE(1), G. TREHOU (1), H. DE ROP (2) 1. INTRODUCTION Notre objectif est de réaliser des systèmes de communication

Plus en détail

Retrospect 7.7 Addendum au Guide d'utilisation

Retrospect 7.7 Addendum au Guide d'utilisation Retrospect 7.7 Addendum au Guide d'utilisation 2011 Retrospect, Inc. Certaines parties 1989-2010 EMC Corporation. Tous droits réservés. Guide d utilisation d Retrospect 7.7, première édition. L utilisation

Plus en détail

TAGREROUT Seyf Allah TMRIM

TAGREROUT Seyf Allah TMRIM TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation

Plus en détail

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Gabriel Antoine Louis Paillard Ce travail a eu le soutien de la CAPES, agence brésilienne pour

Plus en détail

portnox pour un contrôle amélioré des accès réseau Copyright 2008 Access Layers. Tous droits réservés.

portnox pour un contrôle amélioré des accès réseau Copyright 2008 Access Layers. Tous droits réservés. portnox Livre blanc réseau Janvier 2008 Access Layers portnox pour un contrôle amélioré des accès access layers Copyright 2008 Access Layers. Tous droits réservés. Table des matières Introduction 2 Contrôle

Plus en détail

Situation présente et devis technique

Situation présente et devis technique Situation présente et devis technique Système de gestion des membres actuel Le système de gestion des membres actuel sert principalement à stocker des informations sur les architectes et les stagiaires.

Plus en détail

Le modèle de sécurité windows

Le modèle de sécurité windows Le modèle de sécurité windows Cours Windows 2008-2009 Franck Rupin - Laurent Gydé 1 Le modèle de sécurité windows 1 Généralités 2 Les composants du système de sécurité 3 La protection des objets 4 Audit

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

NC 06 Norme comptable relative aux Immobilisations incorporelles

NC 06 Norme comptable relative aux Immobilisations incorporelles NC 06 Norme comptable relative aux Immobilisations incorporelles Objectif 01. Une entreprise peut acquérir des éléments incorporels ou peut elle-même les développer. Ces éléments peuvent constituer des

Plus en détail

Les Enseignants de l Ere Technologique - Tunisie. Niveau 1

Les Enseignants de l Ere Technologique - Tunisie. Niveau 1 Les Enseignants De l Ere Technologique - Tunisie - LE CLOUD COMPUTING TAT Tunisie 2014 Le Cloud Computing 1. Définition Les Enseignants de l Ere Technologique - Tunisie Le cloud computing (en français

Plus en détail

Conservation des documents numériques

Conservation des documents numériques Conservation des documents numériques Qu'est ce qu'un document numérique? Matthieu GIOUX matthieu.gioux@bnf.fr Contexte de la préservation des documents numériques Une croissance en expansion Développement

Plus en détail

TASCAM MX-2424. Utilisation du SCSI

TASCAM MX-2424. Utilisation du SCSI TASCAM MX-2424 Utilisation du SCSI 1. TERMINOLOGIE SCSI...3 2. CABLES ET BOUCHONS SCSI...4 3. BOITIERS SCSI EXTERNES...4 4. PERIPHERIQUES SUPPORTES...5 4.1 Disques durs SCSI...5 4.2 Lecteurs de sauvegarde

Plus en détail

Utilisation d informations visuelles dynamiques en asservissement visuel Armel Crétual IRISA, projet TEMIS puis VISTA L asservissement visuel géométrique Principe : Réalisation d une tâche robotique par

Plus en détail

CommandCenter Génération 4

CommandCenter Génération 4 Notes importantes: Lors de l'installation de cette version logicielle SE Génération 4 8.11.2456-13, la mise à jour peut rester jusqu'à 25 minutes au même pourcentage (p. ex., 82 %) dans la phase d'installation

Plus en détail

Une protection antivirus pour des applications destinées aux dispositifs médicaux

Une protection antivirus pour des applications destinées aux dispositifs médicaux Une protection antivirus pour des applications destinées aux dispositifs médicaux ID de nexus est idéale pour les environnements cliniques où la qualité et la sécurité des patients sont essentielles. Les

Plus en détail

La contrefaçon par équivalence en France

La contrefaçon par équivalence en France BREVETS La contrefaçon par équivalence en France I. Introduction Si l'on considère une revendication de brevet qui remplit les conditions de validité au regard de l'art antérieur, le cas de contrefaçon

Plus en détail

IFO. Soleil. Antoine COUSYN 29/07/2012 08/02/2015. Vidéo. Manipur, Inde. Saturation du capteur CMOS. 19 Juin 2011. 15h11 heure locale.

IFO. Soleil. Antoine COUSYN 29/07/2012 08/02/2015. Vidéo. Manipur, Inde. Saturation du capteur CMOS. 19 Juin 2011. 15h11 heure locale. Rapport d expertise IPACO Nom de l expert Antoine COUSYN Date du rapport 29/07/2012 Dernière mise à jour 08/02/2015 Type IFO Classe A Explication Saturation du capteur CMOS Complément Soleil Document Lieu

Plus en détail

Choisir entre le détourage plume et le détourage par les couches.

Choisir entre le détourage plume et le détourage par les couches. Choisir entre le détourage plume et le détourage par les couches. QUEL CHOIX D OUTILS ET QUELLE METHODE, POUR QUEL OBJECTIF? Il existe différentes techniques de détourage. De la plus simple à la plus délicate,

Plus en détail

Manuel d utilisation email NETexcom

Manuel d utilisation email NETexcom Manuel d utilisation email NETexcom Table des matières Vos emails avec NETexcom... 3 Présentation... 3 GroupWare... 3 WebMail emails sur internet... 4 Se connecter au Webmail... 4 Menu principal... 5 La

Plus en détail

Méthodologies de développement de logiciels de gestion

Méthodologies de développement de logiciels de gestion Méthodologies de développement de logiciels de gestion Chapitre 5 Traits caractéristiques des deux approches de méthodologie Présentation réalisée par P.-A. Sunier Professeur à la HE-Arc de Neuchâtel http://lgl.isnetne.ch

Plus en détail

Traitement numérique de l'image. Raphaël Isdant - 2009

Traitement numérique de l'image. Raphaël Isdant - 2009 Traitement numérique de l'image 1/ L'IMAGE NUMÉRIQUE : COMPOSITION ET CARACTÉRISTIQUES 1.1 - Le pixel: Une image numérique est constituée d'un ensemble de points appelés pixels (abréviation de PICture

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

Plus en détail

ÉLECTRONIQUE DE LA PORTE

ÉLECTRONIQUE DE LA PORTE EVVA SALTO : PRÉSENTATION DU CONCEPT SALTO (Smart Access Locking TechnOlogy) est une plate-forme technologique d'evva qui propose une solution optimale pour répondre aux exigences d'un système électronique

Plus en détail

Bases de la configuration

Bases de la configuration Principes de conception Bases de la configuration Si Siedle est aujourd'hui considéré comme la marque couronnée de succès en matière de design, il ne s'agit pas là d'un hasard mais de l'alliance d'aptitudes

Plus en détail

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt. 1 S'approprier un environnement informatique de travail 1.1) Je sais m'identifier sur un réseau ou un site et mettre fin à cette identification. 1.2) Je sais accéder aux logiciels et aux documents disponibles

Plus en détail

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo Dans ce projet, nous allons réaliser le code qui permet d'insérer sur une image, un logo sur un

Plus en détail

Base de Connaissances

Base de Connaissances Base de Connaissances La section Base de Connaissances fournit des réponses aux questions qui se posent le plus couramment lors de l'utilisation de DevInfo 7. Cliquez sur une catégorie ci- dessous pour

Plus en détail

X-Rite RM200QC. Spectrocolorimètre d'imagerie portable

X-Rite RM200QC. Spectrocolorimètre d'imagerie portable Spectrocolorimètre d'imagerie portable X-Rite RM200QC Le spectrocolorimètre d'imagerie RM200QC d X-Rite permet d'établir un lien entre l'apparence de la couleur et la couleur des matériaux des lots entrants

Plus en détail

Prototypage électronique

Prototypage électronique Prototypage électronique C'est quoi Arduino? Enseignant d'électronique en BTS des Systèmes Électroniques au lycée Cabanis de Brive-la-Gaillarde, j'ai commencé en 2010 à entendre parler d'arduino à gauche

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24 Guide Utilisateur Titre du projet : Sig-Artisanat Type de document : Guide utilisateur Cadre : Constat : Les Chambres de Métiers doivent avoir une vision prospective de l'artisanat sur leur territoire.

Plus en détail

Edutab. gestion centralisée de tablettes Android

Edutab. gestion centralisée de tablettes Android Edutab gestion centralisée de tablettes Android Résumé Ce document présente le logiciel Edutab : utilisation en mode enseignant (applications, documents) utilisation en mode administrateur (configuration,

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Vous avez des problèmes d'impression réseau? UniPrint. est la solution qu'il vous faut. Aperçu du produit

Vous avez des problèmes d'impression réseau? UniPrint. est la solution qu'il vous faut. Aperçu du produit Aperçu du produit Vous avez des problèmes d'impression réseau? est la solution qu'il vous faut. Les responsables IT et les administrateurs systèmes savent que dans tout environnement informatique d'entreprise,

Plus en détail

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image IN52-IN54 A2008 Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image Etudiants : Nicolas MONNERET Alexandre HAFFNER Sébastien DE MELO Responsable : Franck GECHTER Sommaire

Plus en détail

CHAPITRE IX : Les appareils de mesures électriques

CHAPITRE IX : Les appareils de mesures électriques CHAPITRE IX : Les appareils de mesures électriques IX. 1 L'appareil de mesure qui permet de mesurer la différence de potentiel entre deux points d'un circuit est un voltmètre, celui qui mesure le courant

Plus en détail

Anticiper pour avoir une innovation d'avance : le leitmotiv de Pierre Jouniaux, entrepreneur du big data!

Anticiper pour avoir une innovation d'avance : le leitmotiv de Pierre Jouniaux, entrepreneur du big data! Anticiper pour avoir une innovation d'avance : le leitmotiv de Pierre Jouniaux, entrepreneur du big data! Pierre Jouniaux http://www.safety line.fr CV : Pierre Jouniaux, ingénieur aéronautique, pilote

Plus en détail

modélisation solide et dessin technique

modélisation solide et dessin technique CHAPITRE 1 modélisation solide et dessin technique Les sciences graphiques regroupent un ensemble de techniques graphiques utilisées quotidiennement par les ingénieurs pour exprimer des idées, concevoir

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Artica. La déduplication. Révision Du 08 Février 2011 version 1.5.020818

Artica. La déduplication. Révision Du 08 Février 2011 version 1.5.020818 Artica La déduplication Révision Du 08 Février 2011 version 1.5.020818 Table des matières Introduction :...2 Historique du projet :...2 A qui s'adresse Artica?...2 Licence et support...2 Que fait Artica?...

Plus en détail