• Aucun résultat trouvé

Implémentation du processus d'intégration perceptivo-cognitive

4.4 Implémentation du module de perception

4.4.4 Implémentation du processus d'intégration perceptivo-cognitive

Ce processus simule pour sa part l'intégration d'informations perçues dans l'environnement en l'absence d'une recherche active, ou en parallèle de celle-ci. L'intégration perceptivo-cognitive (cf.3.3.3.3 p.78) est donc un processus dirigé par les données contenues dans l'environnement routier : des informations présentes dans nos champs visuels peuvent attirer notre attention et/ou être intégrées de manière plus ou moins complète sans que nous ayons besoin de placer notre regard dessus ou d'y accorder de l'attention.

Dans notre démarche de modélisation et de simulation informatique de la perception du conducteur, nous avons tout particulièrement cherché à simuler les phénomènes  d'attraction du regard  induits par la saillance d'un objet situé dans le champ visuel périphérique de notre ÷il virtuel, incitant alors potentiellement le conducteur à porter son regard (vision fovéale) sur une zone particulière de l'environnement.

4.4.4.1 Dénition de la saillance

Est saillant ce qui capte l'attention, ce qui saute à l'esprit (saillant a une étymologie latine du verbe salio,  sauter, bondir ). Pour simuler informatiquement le processus d'intégration perceptivo-cognitive de l'information visuelle, nous nous sommes dirigés vers l'utilisation des cartes de saillance, permettant de dénir sur une image les points les plus attractifs pour le regard, avec quelques ajouts spéciques pour permettre la prise en compte de la composante dynamique de la perception en conduite automobile.

Le calcul d'une carte de saillance pour notre modèle de perception permet de simuler une partie de la vision périphérique, celle qui dirige le regard du conducteur vers un objet plutôt qu'un autre. Pour ce faire, il est nécessaire de traiter une image provenant de l'÷il virtuel du modèle an d'extraire les points saillants de la scène. Grâce à la plateformeSiVICet l'÷il virtuel que nous avons implémenté à partir d'un modèle de caméra, nous pouvons recueillir des images successives codées en RVB classique (trois composantes de couleurs : Rouge, Vert, Bleu) et permettant d'extraire des informations supplémentaires grâce à l'utilisation de l'API OpenGl.

Pour générer une carte de saillance, plusieurs étapes sont nécessaires. A partir de l'image provenant de notre  ÷il-caméra , il faut appliquer plusieurs ltres (séquentiellement ou en parallèle) puis combiner les diérentes cartes obtenues an de créer la carte de saillance. D'après nos recherches (cf.3.3.3.3), il est nécessaire de créer (1) une carte d'orientation, (2) des cartes de couleurs relatives aux couleurs les mieux captées par les cellules photoréceptrices du globe oculaire, (3) une carte de mouvements et (4) une carte de profondeurs.

4.4.4.2 Simulation de la saillance visuelle

Nous allons ici décrire ces quatre types de cartes utilisées dans notre modèle pour permettre l'extraction des zones saillantes du champ visuel périphérique.

La carte d'orientation :

Cette carte, calculée à partir de l'image RGB de la caméra, permet de mettre en évidence principalement les orientations horizontales et verticales. Pour ce faire, l'application d'un ltre de Gabor en deux dimensions est la manière la plus économe en calcul et la plus précise. Le ltre de Gabor est une modulation d'une fonction gaussienne 1par une sinusoïde 2.

g(x, y) = √1 2πσe 1 2σ2(x2+y2) (1) ω(x, y) = cos(xωx+ xωy) (2) avec : ωx = ω0cos(θ) ωy = ω0sin(θ)

σ largeur de gaussienne, ω0 fréquence de base, θ rotation appliquée (0, π/2, π, etc.) D'où l'équa-tion du ltre de Gabor 3

G(x, y) = g(x, y) ∗ ω(x, y) (3)

Grâce à cela, et pour faciliter l'utilisation, nous pouvons calculer un noyau de convolution. Suite au calcul des cartes d'orientation verticales et horizontales, une recombinaison est nécessaire pour obtenir une seule carte d'orientation.

Malgré la puissance de calcul des ordinateurs utilisés pour la simulation, ce ltre a peu de chance de tenir le temps réel. Il apparaît donc nécessaire que le calcul de ce ltre soit fait sur un ordinateur distant, spécié pour le calcul matriciel et que le nombre d'images traitées par seconde soit bien considéré.

Les cartes de couleurs :

Ces cartes permettent de prendre en compte l'aectation pour certaines couleurs des dié-rentes cellules photoréceptrices du globe oculaire. Grâce à l'image en RGB obtenue par l'÷il-caméra, les composantes des trois couleurs majoritairement captées par l'appareil visuel humain peuvent être extraites. Nous utilisons un dernier canal pour créer les cartes de couleurs antago-nistes (inhibition d'une couleur par une autre, du fait de cellules doubles antagoantago-nistes présentes dans l'÷il). Les canaux de quatre couleurs peuvent être dénis comme tels :

R = r −g + b 2 (4) G = g − r + b 2 (5) B = b − r + g 2 (6) Y = r + g 2 |r − g| 2 − b (7)

Le rouge, le vert et le bleu sont les couleurs les mieux perçues, le jaune est une couleur antagoniste avec le bleu (comme le vert avec le rouge). Nous pouvons créer les cartes de cou-leurs antagonistes (carte rouge/vert, carte bleu/jaune) en calculant les intensités de coucou-leurs de chaque pixel pour chaque carte. Puis, dans chaque carte de la couleur antagoniste, nous calculons l'inuence moyenne du voisinage d'un pixel donné.

Ces cartes ne sont pas très diciles à mettre en ÷uvre et demandent un nombre de calculs relatifs au nombre de pixels (O(Nombre_de_pixel)). Elles peuvent donc être traitées rapidement par l'ordinateur de simulation sans perdre le temps réel.

La carte de mouvements :

An de déterminer quels mouvements sont présents dans une séquence d'images, une mé-thode présentée par Renan Coudray [Coudray and Besserer, 2004] et modiée dans les travaux de Brouard [Brouard et al., 2009] est intéressante. Elle estime le mouvement apparent dominant et le déplacement local de chaque objet. Brouard prend ensuite en compte la faculté de pour-suite oculaire de l'humain, entrainant un mouvement des objets sur la rétine, mais pas dans l'environnement.

Le mouvement relatif est mesuré en fonction du mouvement global et du mouvement d'une zone prédénie de l'image. Cela permet de dénir les vecteurs de déplacement associés à dié-rentes zones. Par la suite, les travaux de Brouard se penchent sur la capacité de suivi de cibles par l'humain, permettant de moduler les vecteurs de mouvement relatif en fonction du mouve-ment oculaire de l'observateur. Cette technique de mesure de déplacemouve-ment est très pertinente pour la simulation de la saillance visuelle, mais d'autres algorithmes de calcul de mouvement sont possibles.

La carte de profondeurs :

Cette carte n'est pas utilisée comme celle précédemment décrite, elle permet une modulation de la carte nale en fonction de la distance des objets de la scène par rapport à l'observateur. Cette carte met en valeur les zones proches et allège le poids des objets plus distants. Elle n'est pas linéaire et il est nécessaire de paramétrer sa plage d'action (dénir la zone la plus proche et sa distance maximum). Une telle carte se calcule grâce au Z-Buer (ou tampon de profondeur), méthode employée par le moteur graphique de la plateformeSiVIC. Le Z-buer est utilisé pour dénir quels éléments d'une scène 3D doivent être achés en fonction de leur distance et des diérentes occultations. Il est donc calculé en permanence par le moteur graphique. Pour utiliser une telle carte dans notre modèle, il est nécessaire de demander au moteur graphique générant l'image caméra de générer aussi la carte de profondeurs. Une fois extraite, cette carte de profondeurs permet de moduler la saillance d'une zone en fonction de sa distance, car un élément saillant lointain attire moins le regard lors de la tâche de conduite qu'un élément saillant proche.

Application des algorithmes :

Les algorithmes permettant de générer ces cartes peuvent être utilisés sur une image pro-venant d'une caméra virtuelle de SiVIC. Sur la dernière version de cette plateforme, des ltres peuvent être directement appliqués sur la caméra. Un tel système demande beaucoup de dé-veloppement, mais la capacité de calcul est optimisée : la plupart des ltres que nous avons présentés peuvent s'écrire en code CUDA19. Le calcul des algorithmes peut ainsi être traité sur le processeur graphique plutôt que sur le processeur central et cela entraîne une possibilité de calcul parallèle, donc un gain de temps à l'exécution. Grâce à une telle technologie, il est poten-tiellement possible de conserver le temps réel avec des traitements complexes sur des images de dénition acceptable.

L'utilisation des cartes :

Une fois ces quatre cartes calculées, il est nécessaire de les combiner linéairement [Itti and Koch, 1999] entre elles puis de normaliser les valeurs (gure 38), pour obtenir une seule carte normalisée fusionnant les diérents calculs précédemment décrits. Ensuite, cette carte est modu-lée par la carte de profondeurs et aussi par une image de fonction gaussienne bidimensionnelle, an de simuler la disposition des cellules photoréceptrices sur la rétine (plus de cellules au centre que sur la périphérie de la rétine).

Figure 38  Création d'une carte de Saillance

Le résultat de la combinaison, de la normalisation, puis la modulation de ces cartes est la carte de saillance elle-même. L'utilisation d'autant de ltres pour sa création n'est pas obligatoire. En eet, Itti et Koch [Itti and Koch, 2000] n'utilisent que des ltres de couleurs, intensité et orientation, ceci pour diminuer le temps de calcul de la carte de saillance pour l'utilisation temps réel. La dénition de la précision de l'image pour simuler au mieux la vision périphérique dépend de la capacité de calcul lors de la simulation : plus les machines sont puissantes (ou nombreuses) plus les ltres peuvent être précis et nombreux, et plus la carte de saillance a une grande dénition. Mais il reste possible de tester les capacités de calcul en fonction de la taille du rendu de caméra : un ltre sur une image HD1080 (i.e. 1920x1080 pixels) sera beaucoup plus long que le travail sur une image en WVGA (i.e. 854x480 pixels).

Une fois la carte de saillance obtenue, des zones dans l'image apparaissent comme étant plus saillantes que d'autres (i.e. la valeur associée à un pixel de la carte de saillance est plus élevée). Pour un système de vision synthétique, la méthode de sélection des zones est généralement la technique du  Winner Take All  : le regard se porte vers l'objet le plus saillant, puis l'objet immédiatement moins saillant ( [Itti and Koch, 2001], [Michael, 2007]). Mais dans notre cas, la carte de saillance va générer des requêtes perceptives plus ou moins prioritaires pour chaque zone. Plus la saillance de la zone est importante, plus la priorité de la requête perceptive associée est importante. Le temps de vie de chaque requête est identique et relatif à la vitesse de déplacement de l'observateur. Un objet saillant à un instant donné ne l'est plus en peu de temps si l'observateur se déplace rapidement dans une direction transverse. La saillance n'est donc remarquée que si la priorité de la saillance est plus importante que celle des autres requêtes en attente. Cela entraîne une inhibition des saillances peu élevées et/ou pas susamment élevées à un instant donné. Nous apportons donc un système permettant l'émergence d'inhibitions sans qu'un processus dédié ne s'y aère.

Malheureusement, le calcul des cartes de saillance n'est pas possible avec les outils que nous connaissons surSiVIC. En eet, le processeur central ne peut tenir le temps réel avec la quantité de calculs imposés par les diérentes cartes, nécessaires à la création de la carte de saillance, même si nous diminuons la fréquence de calcul des cartes. En revanche, la dernière version de la plateforme permet de commander des calculs en CUDA, ce qui pourrait permettre le calcul des cartes de saillance grâce aux nouveaux processeurs graphiques de marque Nvidia. De plus, pour un calcul très rapide des cartes de saillance, il est possible d'utiliser une machine secondaire dédiée. Pour cela, l'utilisation de notre protocole de communication UDP permet de créer un environnement identique sur plusieurs machines en parallèle, et de dédier une de celles-ci au calcul de la saillance. En utilisant une machine performante utilisant la technologie Tesla20de Nvidia, nous pouvons espérer que le temps réel sera conservé malgré le nombre de calculs nécessaires. Enn, le protocoleXMPPnous permet d'envoyer les requêtes perceptives dénies par la saillance au module perception présent sur l'ordinateur de simulation primaire (simulant l'environnement et l'÷il virtuel).