• Aucun résultat trouvé

Détection, reconstruction 3D et identification des êtres vivants du règne animal

N/A
N/A
Protected

Academic year: 2021

Partager "Détection, reconstruction 3D et identification des êtres vivants du règne animal"

Copied!
98
0
0

Texte intégral

(1)

Détection, reconstruction 3D et identification des

êtres vivants du règne animal

Mémoire

Olivier Lévesque

Maitrise en génie électrique Maître ès sciences (M.Sc.)

Québec, Canada

(2)
(3)

Résumé

L’automatisation de la détection et de l’identification des animaux est une tâche qui a de l’intérêt dans plusieurs domaines de recherche en biologie ainsi que dans le développement de systèmes de surveillance électronique. L’auteur présente un système de détection et d’identi-fication basé sur la vision stéréo par ordinateur. Plusieurs critères sont utilisés pour identifier les animaux, mais l’accent a été mis sur l’analyse harmonique de la reconstruction en temps réel de la forme en 3D des animaux. Le résultat de l’analyse est comparé avec d’autres qui sont contenus dans une base évolutive de connaissances.

(4)
(5)

Abstract

Automating the detection and identification of animals is a task that has an interest in many biological research fields and in the development of electronic security systems. The author present a detection and identification system based on computer stereo vision to achieve this task. A number of criteria are being used to identify the animals, but the emphasis is on the harmonic analysis of the animal real time reconstructed 3D shape. The result of the analysis is compared with others stored in an evolutive knowledge base.

(6)
(7)

Table des matières

Résumé iii

Abstract v

Table des matières vii

Remerciements xiii

Avant-propos xv

Introduction 1

1 Présentation de l’approche 3

1.1 Présentation générale de l’algorithme . . . 4

2 Détection 5 2.1 Acquisition de séquences vidéos . . . 5

2.2 Soustraction de l’arrière-plan . . . 6

2.3 Reconstruction 3D en temps réel . . . 15

3 Identification des êtres vivants du règne animal 23 3.1 Obtention des caractéristiques des animaux . . . 23

3.2 Présentation générale de l’approche . . . 23

3.3 Regroupement des voxels . . . 26

3.4 Décomposition en harmoniques sphériques . . . 29

3.5 Comparaison à la base de connaissances . . . 38

3.6 Suivi des animaux et identification . . . 39

3.7 Apprentissage . . . 40

3.8 Historique de l’origine de la méthode d’analyse harmonique . . . 41

4 Résultats 43 4.1 Exemples de détections, de reconstructions 3D et d’analyses harmoniques . . . 43

4.2 Comparaison de l’analyse de quelques objets. . . 50

4.3 Statistiques d’identification de quelques séquences. . . 53

4.4 Montage pour la prise des séquences . . . 56

5 Logiciel 59

(8)

7 Suggestions de travaux futurs 67

Conclusion 69

A Plan des boites de protection des caméras 71

(9)

Merci maman, merci papa, merci mon frère, merci à la plus jolie femme de la terre.

(10)
(11)

Selon diverses théories, nous serions le résultat de plusieurs milliards d’années d’évolution, peut-être devrions-nous agir en conséquence ?

(12)
(13)

Remerciements

Merci à vous, les lecteurs, n’hésitez pas à me contacter si vous avez envie de discuter de nos passions communes.

Merci pour tout maman, je n’y arriverais pas sans toi. Merci à toi papa pour toutes les belles valeurs que tu as tenté de m’enseigner. Merci à David pour sa simplicité, sa joie de vivre et pour m’avoir fait réaliser la chance que j’ai dans la vie. Merci à Mireille, pour nos passionnantes discussions et pour l’énergie que tu investis dans l’éducation de nos enfants. Merci à Cécile, pour l’amitié et tes innombrables services rendus à ma famille.

Merci à M. Robert Bergevin, pour la liberté qu’il m’a octroyée dans nos travaux, pour sa patience, pour son apport intellectuel et son soutien financier. La prochaine fois, je porterai plus attention à la sagesse provenant de l’expérience, lorsqu’elle me préviendra de la trop grande ampleur de mes ambitions ! Merci à M. André Jacques pour la communication de sa passion pour les sciences. Merci à M. Xavier Maldague pour son apport entre 700 nanomètres et un millimètre, ainsi que pour son appui financier. Merci à M. François Vézina de m’avoir obtenu l’accès au centre de recherche de la forêt Macpès où certaines de mes acquisitions de données ont eu lieu.

Merci à M. Pierre Paradis pour sa communication de sa passion des neurosciences. Merci, Magella, Pauline et Pierre, j’ai appris grâce à vous l’importance de bien maitriser notre langue. Vous savez que lorsqu’on réfléchit, on le fait avec des mots. Je pense que si l’on maitrise mieux la syntaxe, il est probable qu’on sache mieux structurer nos pensées. D’où l’importance d’essayer d’améliorer nos compétences langagières, peu importe la langue, tout au long de notre vie. Merci à M. Simon Ouellet pour son support linuxien et la conscientisation à l’importance du partage du savoir. Merci à M. Francis Rioux pour nos débats mathématiques et algorithmiques. Merci à Robert, Mireille, Pauline et ceux qui m’ont aidé à voyager. Voyager facilite l’appren-tissage des langues, nous permet d’apprendre à connaitre de nouvelles cultures et facilite le partage du savoir. Le monde est si merveilleux, j’espère qu’un jour les humains oublieront pour toujours l’idée de se faire la guerre. J’aime bien ce que Ralph Waldo Emerson a écrit à ce sujet : «La paix ne peut être obtenue par la violence, elle ne peut être atteinte que par la compréhension».

(14)
(15)

Avant-propos

Ce mémoire présente les résultats du projet de recherche Dievra (Détection et identification des êtres vivants du règne animal). Ce projet de recherche correspond à la conception d’un système permettant la détection et l’identification des animaux en général, et ce de manière automatisée. Albert Schweitzer a écrit «Jusqu’à ce que l’homme étende sa compassion à tous les êtres vivants, il ne trouvera jamais la paix » dansSchweitzer(1923). L’objectif principal du système est de faciliter l’étude du comportement des animaux et de l’impact de nos actions sur les animaux.

Le projet Dievra a émergé d’un projet de recherche antérieur auquel j’ai participé, ayant contribué à la conception d’un détecteur de chauves-souris. L’équipe dans laquelle j’ai travaillé cherchait à comprendre l’impact sur le faune des éoliennes. Afin de connaitre celui-ci, des détecteurs étaient installés à plusieurs endroits dans une forêt, selon un intervalle de distances connues, avant de bâtir une éolienne. Pendant deux semaines, les détecteurs comptabilisaient combien de chauves-souris passaient dans le territoire surveillé. Une fois l’éolienne construite, les chercheurs refaisaient les mêmes tests afin d’évaluer la variation du nombre de chauves-souris présentes dans le territoire. De cette façon, les chercheurs peuvent dire jusqu’à quelle distance l’éolienne avait un impact sur la présence des chauves-souris.

Les chauves-souris sont dotées d’un système d’écholocalisation. Afin de détecter leur présence, on peut enregistrer les signaux sonores dans la bande de fréquences dans laquelle les chauves-souris émettent leurs ultrasons et analyser leur contenu fréquentiel afin de le comparer au modèle des cris de chauves-souris. Le projet de recherche Dievra concerne la détection et l’identification des animaux en général. Comme ils n’utilisent pas tous un système d’écholo-calisation, l’utilisation d’un système de surveillance par caméras m’a semblé être la meilleure approche. C’est ainsi qu’est née l’idée d’un système automatisé de détection et d’identification reposant sur la vision numérique.

(16)
(17)

Introduction

Ce document résume les résultats du projet de recherche Dievra (Détection et identification des êtres vivants du règne animal). Ce projet consiste au développement d’un système auto-nome capable de détecter la présence d’êtres vivants du règne animal dans un environnement surveillé par des caméras. De plus, le système est généralement capable de les identifier. Une des contributions intéressantes de ce projet est la création d’une approche novatrice de com-paraison des objets 3D basée sur l’analyse harmonique de leur forme, qui performe bien avec des modèles soumis à diverses déformations.

La biodiversité animale est vaste et impressionnante. Arriver à identifier automatiquement tous les animaux est un objectif trop ambitieux pour un projet de maitrise. Ainsi, le système est d’abord conçu en fonction de reconnaitre quelques espèces parmi les plus communes vivant dans les boisés québécois et en bordure des villes. Même si le temps de développement ou de traitement n’était pas une contrainte, il sera probablement toujours facile d’imaginer des situations où un algorithme d’identification ne pourrait arriver à un bon résultat.

Lors des analyses les plus récentes de ce projet, l’identification a donné de bons résultats, tout en étant loin de la perfection. C’est une démonstration de la validité du concept que ce projet tentait d’obtenir. Dans le cas où des données statistiques nécessiteraient une identification plus fiable, notons que ce projet permet de réduire considérablement le nombre de données à vérifier. Cependant, un expert biologiste devrait tout de même visionner les courtes séquences où l’algorithme n’aura pas un taux de confiance suffisant en son identification.

Au début du projet, les balbutiements de nos idées ont été présentés lors d’un atelier qui précédait la conférence internationale sur la reconnaissance des formes à Istanbul en 2010 et sont résumés dans Lévesque et Bergevin(2010).

Albert Schweitzer a aussi écrit «Chaque fois que je suis sur le point d’abimer une vie quel-conque, il faut que je me pose clairement la question de savoir si c’est nécessaire. Jamais je ne devrai m’autoriser à aller au-delà de l’indispensable, même dans des cas apparemment in-signifiants.» dans Schweitzer(1976). Dans cette même optique, je crois qu’il est fondamental de s’interroger à propos des conséquences de nos actions sur les animaux.

(18)

le système présenté ici pourrait aussi les aider à vérifier la présence de certains animaux en voie de disparition ou suspectés d’avoir déserté un territoire donné. Le système a aussi des applications intéressantes dans le domaine de la sécurité, comme système de surveillance intelligent. Il pourrait aussi avoir des applications dans le domaine de la robotique et de l’intelligence artificielle, car nos robots auront bien envie un jour d’utiliser leurs yeux eux aussi pour apprendre.

(19)

Chapitre 1

Présentation de l’approche

En simplifiant l’approche un peu, on pourrait la résumer en exprimant que l’on surveille un environnement à l’aide de caméras, puis qu’on détecte la présence d’objets d’intérêt s’y trou-vant en faisant leur reconstruction 3D, pour ensuite faire leur décomposition en harmoniques sphériques et la comparer à une base de connaissances, afin de les identifier de manière auto-matisée.

Pour détecter la présence d’êtres vivants du règne animal dans un environnement et les identi-fier, j’ai conçu un système autonome qui surveille l’environnement avec un minimum de quatre caméras. Tout objet ou animal d’une taille suffisante effectuant un déplacement notable est considéré comme un objet d’intérêt et est normalement détecté. Le système de détection fonc-tionne en temps réel, mais l’approche d’identification n’est pas assez rapide pour s’exécuter en temps réel.

Plusieurs critères peuvent être utilisés pour identifier les animaux, leurs dimensions, leur forme géométrique, leurs couleurs, leurs textures, leur vitesse maximale de déplacement, les sons qu’ils émettent, leurs modes et patrons de déplacement. Les deux principaux critères utilisés par le système sont les dimensions des spécimens observés, ainsi que la forme des animaux en trois dimensions. Pour obtenir de l’information sur un objet d’intérêt à l’aide de sa forme, le système effectue une analyse harmonique de sa reconstruction en 3D. Le résultat de l’analyse est comparé avec d’autres qui sont contenus dans une base évolutive de connaissances afin de déterminer l’identification des animaux.

En comparaison avec les approches déjà existantes, l’approche structurée d’analyse harmonique présentée dans la section 3.2est novatrice et elle obtient de bons résultats pour identifier des objets 3D soumis à diverses déformations.

(20)

1.1

Présentation générale de l’algorithme

Figure 1.1 – Algorithme général du système

L’approche débute par l’acquisition d’une image par caméra. Ensuite, le système procède à la seg-mentation de l’avant-plan et de l’arrière-plan dans chacune des images, dans le but de faire la sous-traction de l’arrière-plan de chacune d’elles. Le système utilise un principe de mélange de mo-dèles gaussiens pour y arriver. L’environnement à surveiller est ensuite divisé en trois dimensions d’une manière quadrillée. Le système vérifie pour tous les voxels de cette grille, le résultat de la seg-mentation qui leur correspond dans chacune des images, afin d’obtenir une reconstruction en 3D. La détection est basée sur le résultat de la recons-truction en 3D. Si plusieurs voxels regroupés par leur proximité sont présents, le système considère qu’il a détecté quelque chose et qu’il doit l’identi-fier.

L’identification des animaux repose sur la com-paraison de toute l’information que le système pourra obtenir sur les objets détectés avec ceux des modèles contenus dans la base de connais-sances. L’information provient des mesures de l’objet, des coefficients de sa décomposition en harmoniques sphériques de manière standard et d’une décomposition novatrice que l’on peut com-parer à un mélange des approches de type «sac de mots» et de «signatures squelettiques».

La figure 1.1 présente un schéma représentant l’algorithme en général. Chacune des parties de l’algorithme sera expliquée plus en détail dans le reste de ce mémoire.

(21)

Chapitre 2

Détection

Le système détermine s’il y a détection d’un objet d’intérêt, qui se doit d’être identifié, après l’obtention du résultat de la reconstruction 3D. Cette détection se fonde sur le résultat de l’acquisition des images des caméras, de la soustraction de l’arrière-plan et de la reconstruction 3D. Ces étapes, sur lesquelles repose la détection, seront présentées dans ce chapitre.

2.1

Acquisition de séquences vidéos

L’approche que j’ai implantée pourrait théoriquement fonctionner avec deux caméras, mais j’ai déterminé empiriquement qu’il est préférable d’utiliser au moins quatre caméras. On peut améliorer le résultat de l’étape de reconstruction 3D en ajoutant des caméras, mais cela peut réduire le territoire surveillé par le système.

Si le système doit fonctionner de nuit et que l’on veut perturber l’environnement le moins pos-sible, l’utilisation de caméras infrarouges est nécessaire, quoique généralement plus couteuse. L’ajout d’éclairage peut être suffisant pour remplacer les caméras infrarouges, mais il risque de changer le comportement des animaux. Pour plusieurs applications, l’utilisation de caméras NIR (Near InfraRed / proche infrarouge) est tout à fait appropriée. L’éclairage (réalisé par des diodes NIR peu chères et invisibles au moins pour les humains), permet de résoudre cette difficulté. Il est à noter qu’une caméra NIR peu couteuse peut être réalisée au moyen d’une caméra visible dont on enlève le filtre proche infrarouge. Cependant, il semble que certains animaux «voient» dans le proche UV. Comme M. Sullivan l’a rapporté dans Sullivan(1985), certains oiseaux et certains serpents possèdent une «sensibilité» à l’infrarouge. Une fusion entre les données obtenues par des caméras infrarouges, proches infrarouges et visibles aide à améliorer les résultats de la détection et de l’identification des animaux.

Il est aussi intéressant de noter que le rayonnement infrarouge est d’une longueur d’onde plus grande que celle de la lumière visible. Ainsi, il risque moins d’être influencé par de petites particules, comme les gouttes d’eau lorsqu’il pleut ou par les flocons de neige. On peut observer

(22)

à la figure2.1 les différences entre les images obtenues à l’aide d’une caméra opérant dans le spectre visible pour un observateur humain et une dans l’infrarouge.

Figure 2.1 – Comparaison d’images obtenues à l’aide de caméras visible et infrarouge

(a) (b)

(a) Caméra opérant dans le spectre des longueurs d’onde observable par l’oeil humain. (b) Caméra opérant dans le spectre de l’infrarouge.

Le choix des caméras et des lentilles a une influence directe sur les performances du système, ainsi que sur le cout de son implantation. En plus de l’évidence de l’importance de la qualité et de la résolution des caméras, notons aussi qu’il est primordial d’avoir des caméras qui travaillent de manière synchronisée afin d’acquérir les images au même moment. Le choix de la manière dont les caméras sont connectées au système a aussi un impact majeur sur la grandeur du territoire que l’on peut surveiller.

Cela semble anodin, mais notons qu’il est aussi très important de bien fixer les caméras afin qu’elles ne bougent pas et qu’elles ne se décalibrent pas. Il faut aussi une protection adaptée aux intempéries de l’environnement où le système est installé. Des plans pour construire des boites de protection des caméras Dragonfly2 de Point Grey et des caméras PathFindIR de Flir et pouvoir les fixer à des arbres sans les abimer se trouvent en annexe A. Comme les arbres ont parfois tendance à osciller au vent, si c’était à refaire, je fixerais les boites de protection sur un bâton en fer avec un bloc de béton à la base.

2.2

Soustraction de l’arrière-plan

Une des premières tâches que le système doit accomplir est de segmenter les pixels de l’arrière-plan de ceux de l’avant-l’arrière-plan dans chacune des images. Les pixels de l’avant-l’arrière-plan devraient représenter les objets d’intérêt, c’est-à-dire les animaux. L’arrière-plan devrait être constitué des pixels restants. Après la segmentation, les pixels d’arrière-plan devraient représenter des objets inanimés ou un mouvement répétitif et seront soustraits des images. La figure2.2montre le résultat d’une soustraction d’arrière-plan.

(23)

Figure 2.2 – Soustraction d’arrière-plan

(a) (b)

(a) Image originale.

(b) Résultat de la soustraction d’arrière-plan.

Il existe plusieurs stratégies intéressantes afin d’effectuer une soustraction d’arrière-plan. Selon mes expériences personnelles, les performances de ces stratégies varient énormément selon le genre d’objets qu’elles devraient considérer comme étant de l’avant-plan et en fonction de l’environnement dans lequel elles sont utilisées. Andrews Sobral a développé une librairie

Sobral (2013) qui permet d’essayer plusieurs algorithmes afin de comparer leur résultat. Si l’on a l’intention d’installer le système pour longtemps dans le même endroit, il me semble judicieux de les tester dans cet environnement afin de choisir l’algorithme qui performe le mieux dans ces conditions.

Lorsque l’on tente de développer un algorithme de soustraction d’arrière-plan, une des pre-mières idées qui nous vient à l’esprit est de prendre une image de la scène lorsqu’il n’y a pas d’objets d’intérêt dedans et de s’en servir comme image de référence d’arrière-plan. Ensuite, il suffirait de vérifier l’écart d’intensité entre les pixels de cette image et les images subséquentes. Ainsi, tout écart qui dépasserait un certain seuil serait considéré comme de l’avant-plan. Mal-heureusement, cette méthode ne donne pas longtemps de bons résultats lors d’une surveillance d’une scène à l’extérieur, entre autres à cause des changements de conditions d’illumination. Afin d’être moins influencés par les changements d’éclairage, nous pourrions prendre comme image d’arrière-plan de référence la moyenne d’un certain nombre d’images passées précédem-ment. Avec cette approche, un objet en mouvement qui prendrait une petite pause se fonderait trop rapidement avec l’arrière-plan.

En 1999, Chris Stauffer et Eric Grimson ont proposé d’utiliser une approche basée sur un modèle de mélanges gaussiens et ils l’ont présentée dans Stauffer et Grimson (1999). Cette approche obtient de bons résultats à l’extérieur. Plusieurs améliorations ont été proposées à l’idée originale de Stauffer et Grimson. Thierry Bouwmans et ses collaborateurs en ont effectué dansT. Bouwmans(2008) une évaluation intéressante. La lecture de leur publication facilite l’implémentation de l’approche et donne plusieurs pistes de solutions pour améliorer

(24)

les résultats. La suite de ce document présentera d’abord la première partie de l’approche de Stauffer et Grimson (la partie basée sur leur approche de suivi temporel ne sera pas présentée, car je ne l’utilise pas), puis certaines des améliorations qui me semblent les plus intéressantes et se terminera avec le choix de l’approche que j’ai implantée.

2.2.1 Modèle de mélanges gaussiens

Une fonction gaussienne est une fonction de la forme :

f (x) = a exp  −(x − b) 2 2c2  (2.1)

On peut observer à la figure2.3le graphique de fonctions gaussiennes avec leur forme de cloche caractéristique. Les paramètres de ces fonctions sont : a qui donne la hauteur maximale de la courbe, b qui donne la position du centre de la courbe, c qui est l’écart type et qui contrôle la largeur de la cloche.

Figure 2.3 – Fonctions gaussiennes

L’exemple le plus connu d’une fonction gaussienne est la densité de probabilité de la loi normale avec une moyenne µ et une variance σ2. Les paramètres correspondants sont a = 1/(σ2π), b = µ, c = σ.

Ce graphique est tiré de Wikipédia.

L’idée de Stauffer et Grimson est d’utiliser plusieurs fonctions gaussiennes comme modèles pour représenter les différentes valeurs possibles d’intensité pour chacun des pixels. Les modèles observés le plus souvent sont considérés comme ceux d’arrière-plan. Le fait d’avoir plusieurs modèles par pixel permet d’être plus robuste aux mouvements répétitifs (par exemple une feuille qui bouge au vent) ainsi qu’aux variations causées par les ombres. Ils ont aussi suggéré d’utiliser une approche de mise à jour continuelle des fonctions gaussiennes en fonction des observations de la scène, ce qui résulte en une segmentation stable à l’extérieur, qui est aussi robuste aux changements à long terme dans la scène ainsi qu’aux changements des conditions d’illumination.

(25)

Chaque pixel est traité séparément, ce qui en fait une approche facilement parallélisable. L’approche de Stauffer et Grimson utilise l’information contenue dans chacun des canaux de couleurs (rouge, vert et bleu). Afin de schématiser l’approche, j’ai choisi de présenter à la figure2.4la valeur du canal rouge du pixel situé aux coordonnées (146,130). Après le traitement de l’algorithme, le pixel d’intérêt dans les deux premières images devrait être classifié comme un pixel d’arrière-plan. En effet, sa valeur d’intensité dans chacun des canaux de couleurs provient de la quantité de lumière qui est réfléchie à la surface de l’arbuste ou de celle d’une de ses feuilles bougeant au gré du vent qui est captée par les puits de lumière de la caméra qui correspondent à notre pixel d’intérêt durant l’acquisition d’une image. Dans la troisième image, le pixel d’intérêt devrait être un pixel classifié comme faisant partie de l’avant-plan, car il correspond à la tuque de la jeune femme.

Figure 2.4 – Segmentation à l’aide d’une approche basée sur un modèle de mélanges gaussiens

Comparaisons des valeurs du canal rouge aux fonctions gaussiennes des modèles.

Stauffer et Grimson ont implanté leur idée en représentant l’historique des caractéristiques de couleur de chacun des pixels {X1, ..., Xt} par un mélange de K gaussiennes. À n’importe quel

temps t, l’historique d’un pixel (x0, y0) est donné par :

X1, . . . , Xt= {V (x0, y0, i) : 1 ≤ i ≤ t} (2.2)

Où V(x,y,t) représente la valeur d’intensité du pixel aux coordonnées (x,y) au temps t. La probabilité d’observer une certaine valeur d’un pixel est donnée par :

P (Xt) = K

X

i=1

(26)

où K représente le nombre de gaussiennes dans nos modèles (j’en ai utilisé 5), ωi,test un facteur de poids déterminé en fonction de quelle proportion des données émergent ces gaussiennes, µi,t est la valeur moyenne de la ième gaussienne au temps t, Σi,t est la matrice de covariance

de la ième gaussienne au temps t et N est une densité de probabilité. Cette fonction gaussienne

N est définie telle que :

N (Xt| µit, Σi,t) = 1 (2π)D/2 1 |Σi,t|1/2 exp  −1 2(Xt− µi,t) TΣ−1 i,t (Xt− µi,t)  , (2.4)

où D est égal au nombre de canaux de couleurs.

Afin de réduire la charge en mémoire et optimiser le temps de calcul, Stauffer et Grimson ont suggéré de traiter les canaux RGB comme s’ils étaient indépendants et qu’ils avaient la même variance. Ceci fait en sorte que la matrice de covariance sera de la forme :

Σi,t = σi,t2 I, (2.5)

Afin de déterminer si un pixel correspond à une des fonctions gaussiennes, on utilise la distance de Mahalanobis :

q

(Xt+1− µi,t)TΣi,t−1(Xt+1− µi,t) < 2.5σi,t. (2.6)

Lorsque la matrice de covariance est de la forme présentée à l’équation (2.5), ceci est l’équi-valent de : v u u t D X i=1 (Xt+1− µi,t)2 σ2i,t < 2.5σi,t.

Si un pixel est associé à une fonction gaussienne que l’on a observée souvent (son poids ωi,t sera plus haut qu’un seuil que l’on aura déterminé empiriquement), il est classifié comme étant un pixel de l’arrière-plan, sinon comme un pixel d’avant-plan.

2.2.2 Mise à jour du modèle de l’arrière-plan

À chaque analyse d’une image, le modèle d’arrière-plan est mis à jour en fonction des résultats de la classification.

Si le pixel d’intérêt n’a pas été associé avec une gaussienne du modèle, on doit ajouter au modèle une nouvelle gaussienne dotée d’une large variance σ2, un faible poids ω et les moyennes

(une par canal de couleur) de cette gaussienne sont posées égales aux valeurs d’intensité de notre pixel d’intérêt. S’il y a déjà plus du nombre K de fonctions gaussiennes dans notre modèle, celle la moins observée (celle dont la variance est la plus grande) est retirée du groupe

(27)

de fonctions pour ce pixel. Le nombre K maximal de modèles est un choix empirique qui dépend de notre limite de mémoire et de notre temps de traitement (j’en ai utilisé 5).

Si le pixel d’intérêt a été associé avec une gaussienne du modèle, on doit ajuster les composantes de la gaussienne qui lui correspond de la manière suivante :

ωi,t+1= (1 − α)ωi,t+ α (2.7)

µi,t+1= (1 − ρ)µi,t+ ρXt+1 (2.8)

σi,t+12 = (1 − ρ)σi,t2 + ρ(Xt+1− µi,t+1)(Xt+1− µi,t+1)T (2.9)

où ρ = αN (Xt| µi,t, Σi,t) et α est un taux constant d’apprentissage. La valeur de ce taux

d’apprentissage est un choix empirique que l’on doit faire en fonction de la stabilité de la scène qu’on observe.

Pour les autres fonctions gaussiennes du modèle, seul le poids est ajusté de cette manière :

ωi,t+1= (1 − α)ωi,t (2.10)

Le poids ω est ensuite renormalisé pour toutes les gaussiennes. La mise à jour périodique du modèle d’arrière-plan permet à l’approche de ne pas trop être affectée par les changements des conditions d’illumination ainsi que les changements à long terme dans la scène. Le modèle de l’arrière-plan conserve la variance, la valeur moyenne et le poids de chacune des gaussiennes pour chacun des pixels.

2.2.3 Améliorations intéressantes à l’approche de Stauffer et Grimson

La technique de segmentation d’arrière-plan, à l’aide de l’approche basée sur un modèle de mélanges gaussiens, a fait ses preuves depuis quelques années et plusieurs auteurs ont suggéré différentes idées afin de l’améliorer. Thierry Bouwmans et ses collaborateurs ont fait une évaluation de plusieurs de ces idées dans T. Bouwmans (2008). Parmi les plus intéressantes d’entre elles, l’idée de tirer profit de la corrélation spatiale entre les pixels est prometteuse. Il suffit de regarder la figure 2.5 tirée de Schindler et Wang (2006) pour se convaincre que tenir compte du résultat de la segmentation des pixels voisins devrait améliorer les résultats de l’approche.

Konrad Schindler et Hanzi Wang ont présenté dans Schindler et Wang (2006) une approche basée sur les champs aléatoires de Markov, couplée à une approche de coupe de graphe utilisant

(28)

le théorème de flot-maximum / coupe-minimum. Je n’entrerai pas dans tous les détails de leur approche ici, mais fondamentalement elle correspond à associer un cout à la classification de chaque pixel qui dépend encore de sa comparaison aux gaussiennes du modèle et en plus à celle de ses voisins immédiats. Ensuite, l’idée est de minimiser le cout global de la classification de tous les pixels de l’image. Leur approche implique de résoudre un problème d’optimisation combinatoire, ce qui peut malheureusement devenir lourd en temps de calcul.

Dans le même ordre d’idée d’exploiter la corrélation spatiale, Satoshi Yoshinaga et ses collabo-rateurs ont aussi suggéré dansYoshinaga et collab.(2013) d’utiliser une approche basée sur un modèle de mélanges gaussiens. Comme présenté à la figure2.6, au lieu d’utiliser simplement la valeur d’intensité de chaque pixel, ils utilisent les différences d’intensité avec six de leurs voisins légèrement éloignés. On peut observer à la figure2.7 que leur approche est moins influencée par les changements des conditions d’illumination, car théoriquement les variations d’intensité des pixels voisins devraient se comporter de manière similaire lors de ces changements. Les deux figures ( 2.6 et 2.7) sont des traductions d’images trouvées dans leur article. Cepen-dant, l’approche de Yoshinaga nécessite un peu plus de mémoire que l’approche de Stauffer et Grimson, ainsi que de temps pour les calculs, car elle utilise plus de gaussiennes par pixel. Elle est tout de même envisageable pour une application qui doit s’exécuter en temps réel et de plus elle a terminé première au Background Models Challenge en 2012.

Pour améliorer le résultat à la fin de l’approche de segmentation, on peut aussi effectuer un filtrage morphologique (une érosion suivie d’une dilatation).

Utiliser un modèle différent de représentation des couleurs peut également donner de meilleurs

Figure 2.5 – Information contenue dans la corrélation spatiale des pixels

Comme représenté dans les images à gauche, avec l’approche de Stauffer et Grimson, les pixels ont tous une probabilité égale d’être des pixels d’arrière-plan. Cependant, un résultat comme présenté dans les images de droite semble visuellement plus acceptable.

(29)

Figure 2.7 – Invariance aux changements de conditions d’illumination et aux mouvements périodiques du modèle d’arrière-plan basé sur les différences locales

résultats. Kristensen et ses collaborateurs dans Kristensen et collab.(2006) ainsi que Ribeiro et les siens dans Ribeiro et Gonzaga (2006) ont étudié différents modèles et en sont venus à la conclusion que le modèle YCbCr obtient les meilleurs résultats, qui sont attribuables à sa stabilité numérique et à son canal indépendant pour la luminance. D’autres chercheurs, dont Konrad Schindler, suggèrent une idée similaire utilisant un espace de couleur (r, g, I) où les valeurs chromatiques sont normalisées, c’est-à-dire : (R, G, B) = (R+G+B)1 (R, G, B), ce qui implique que seulement deux des canaux chromatiques sont nécessaires. Un troisième canal est utilisé pour conserver l’intensité I = (R + G + B). Dans cette approche, les canaux R et G sont encore comparés aux modèles gaussiens. Étant donné que les changements en intensité n’ont pas un comportement gaussien, ils sont supposés rester dans un certain intervalle, c’est-à-dire : β ≤ I ≤ γ. Empiriquement, les changements d’intensité causés par l’ombrage sont d’au plus 50%, alors ils suggèrent que β soit fixé à 0.6 et γ soit fixé à 1.5.

Varier le taux d’apprentissage α peut certainement améliorer les résultats de l’approche de Stauffer et Grimson. L’idée est d’avoir un haut taux d’apprentissage au début, lors de la phase d’apprentissage de l’arrière-plan. Cela implique d’initialiser l’algorithme avec l’analyse d’images sans la présence d’animaux dans la scène. Ensuite, le taux d’apprentissage est fixé plus bas pour le reste de l’analyse de la séquence, sauf si un changement brusque d’illumination est détecté (beaucoup de pixels seront classifiés comme de l’avant-plan dans ce cas). Ceci a l’avantage d’empêcher d’absorber trop rapidement un animal peu mobile dans l’arrière-plan. On peut aussi introduire un délai (attendre de l’avoir observé dans plusieurs images

(30)

consécutives) avant d’ajouter au modèle de nouvelles gaussiennes ou de mettre à jour les gaussiennes lorsqu’un pixel est classifié comme faisant partie de l’avant-plan.

Une analyse détaillée des choix empiriques des paramètres de l’approche basée sur un modèle de mélanges gaussiens se trouve dansZang et Klette (2006) etAtev et collab. (2004).

2.2.4 Approche de segmentation retenue

L’approche de Yoshinaga donne de bons résultats lorsque les objets à détecter occupent peu d’espace dans une image, mais notre approche de reconstruction 3D obtient de meilleurs résul-tats lorsque les objets occupent plus d’espace dans les images. Le fait d’utiliser les différences d’intensité du pixel avec ses voisins comme critère entraine néanmoins d’excellents résultats de détection du contour des animaux. Cependant, lorsque la texture d’un objet est relative-ment uniforme et que celle de l’arrière-plan l’est aussi, seulerelative-ment les contours des objets sont détectés, même si leur couleur est complètement différente et qu’il est facile de les détecter à l’oeil.

Pour pallier à cela, j’ai choisi de mélanger l’approche de Stauffer et Grimson avec celle de Yoshinaga. Pour un pixel à traiter, mon mélange de modèles gaussiens comprend la valeur du pixel en soi et en plus ses différences d’intensité avec six de ses voisins éloignés (de six pixels). J’ai utilisé le modèle de couleur YCbCr, même si cela implique quelques calculs de plus. Je n’ai pas traité mes séquences vidéos en temps réel et étant donné que j’avais besoin d’une excellente soustraction de l’arrière-plan, car j’ai utilisé peu de caméras, j’ai décidé de ne pas traiter les canaux de couleur comme s’ils étaient indépendants et qu’ils avaient la même variance. Ainsi, j’ai choisi de calculer la matrice de covariance au complet lors du calcul de l’équation (2.6). Pour le choix des taux d’apprentissage, j’ai choisi de fixer α à 0.1, lors de la phase d’apprentis-sage de l’arrière-plan et à 0.03 par la suite lorsque les séquences étaient longues et carrément à 0 lors de l’analyse d’une courte séquence. Cela implique d’initialiser l’algorithme avec l’analyse d’images sans la présence d’animaux dans la scène. J’ai fixé le taux P de la même manière, ce qui nous fait perdre un peu le côté gaussien de la chose, mais ceci ne semble pas vraiment affecter négativement les résultats et est plus rapide lors de l’exécution.

Afin de filtrer le bruit lors du résultat de la soustraction d’arrière-plan, j’effectue un filtrage morphologique à la fin de l’opération qui consiste en une érosion de 6 pixels. Afin de tirer profit du fait que l’approche de Yoshinaga détecte bien les contours, j’effectue une dilatation de 12 pixels et finalement une érosion de 11 pixels. Ceci a pour effet de remplir le milieu des objets détectés. Concrètement, cette érosion correspond à mettre la valeur de chacun des pixels à la valeur minimale de ses 8 voisins et une dilatation correspond à mettre leurs valeurs à la valeur maximale de leurs 8 voisins. On peut voir un exemple d’opérations de filtrage sur la figure2.8, tirée de la documentation d’OpenCV.

(31)

Figure 2.8 – Résultat d’un filtrage morphologique

(a) Original (b) Érosion (c) Dilatation

Malgré les résultats généralement corrects de l’algorithme de segmentation présenté précédem-ment, je suggère fortement aux lecteurs de tester la librairie BGSLibrary d’Andrews Sobral et de ses collaborateurs présentée dans Sobral (2013), afin de choisir l’algorithme qui performe le mieux dans ses conditions ou de s’en inspirer pour créer son propre algorithme.

2.3

Reconstruction 3D en temps réel

Figure 2.9 – Une série de voxels dans une pile, avec un seul voxel mar-qué en gris foncé, comme présenté par M. Vossman dans Wikipédia.

Plusieurs méthodes ont été découvertes pour obtenir une reconstruction 3D d’objets que l’on observe à l’aide de caméras. La technique de recons-truction en trois dimensions utilisée dans mon système permet d’obtenir en temps réel un modèle 3D qui sera représenté à l’aide de voxels. Le mot voxel est une combinaison des mots volume et pixel, qui lui même est la combinaison de «picture» et élément. On peut observer quelques voxels à la figure 2.9. Comme nous allons le voir à la section 2.3.2, la technique que j’utilise tire profit du traitement en parallèle pour arriver à reconstruire les modèles dans des délais très courts. L’approche utilisée ne nécessite pas de stimuler l’environnement avec des patrons structurés de lumière et théoriquement pourrait fonctionner avec deux caméras, mais il est préférable d’utiliser au moins quatre caméras.

Nous déterminons à l’avance la zone que le système surveillera. Le système va quadriller la zone à surveiller au complet et vérifiera si chacun des

voxels de la grille doit faire partie du ou des modèles reconstruits. On peut voir à la figure2.11

l’allure de l’idée, ainsi qu’un bon positionnement des caméras. Si un animal se trouve dans la scène, chacun des pixels qui le représente dans les images des caméras devrait en théorie faire partie des pixels d’avant-plan. Il s’agit de vérifier pour chacun des voxels s’il correspond à un pixel d’avant-plan dans chacune des images. Afin d’y arriver, le système doit être calibré au départ. L’objectif de l’étape de calibration présentée à la section2.3.1est d’obtenir une matrice M pour chacune des caméras ce qui permet de faire la correspondance entre les coordonnées du monde réel et les coordonnées dans l’image des caméras. Ainsi, pour chaque caméra :

ˆ

(32)

où ˆu = [u, v, 1] sont les coordonnées des pixels des images de chaque caméra, M est une matrice de 3 lignes par 4 colonnes obtenue par la calibration du système et ˆX = [X, Y, Z, 1]T sont les coordonnées dans le monde réel. L’approche que nous avons utilisée pour construire nos modèles en 3D est fort simple une fois les caméras calibrées. On fixe d’abord la zone que l’on veut surveiller et l’on s’assure qu’on la voit dans chacune des caméras. On détermine ensuite la dimension des voxels. Ceci nous donne une grille d’emplacement possible pour nos voxels et on doit décider si chacun d’eux fait partie du modèle reconstruit. Afin de déterminer si un voxel fait partie ou non du modèle 3D, il s’agit de vérifier dans l’image de toutes les caméras, si le pixel correspondant à ce voxel a été attribué à un pixel d’avant-plan. Si le voxel correspond à des pixels d’avant-plan dans toutes les caméras, alors il fait partie du modèle reconstruit. La figure2.10 démontre ce processus.

Figure 2.10 – Reconstruction 3D

Afin de déterminer si un voxel doit être ajouté au modèle, on valide s’il est présent dans l’image de toutes les caméras, dont on a fait une soustraction de l’arrière-plan. On peut voir ici que le voxel grisé ne fera pas partie du modèle, car il correspond à des pixels qui n’ont pas été identifiés comme de l’avant-plan. Le voxel en rouge en fera partie, car il correspond à des pixels d’avant-plan dans l’image de chacune des caméras. L’équation (2.11) permet de faire le pont entre les coordonnées dans le repère du monde réel et celui de chaque caméra. Nous utilisons une matrice M par caméra, que nous avons obtenue lors de la calibration des caméras.

Afin que nos observations couvrent un territoire d’une plus grande dimension dans le moins de temps possible, on utilise une approche de type pyramidal. C’est une approche en deux passes. On fait une première recherche avec des voxels qui occupent plus de volume dans l’espace pour déterminer grossièrement l’endroit où se trouvent des objets d’intérêt, puis on reconstruit avec plus de détails (avec de plus petits voxels) les endroits où l’on a détecté la présence d’objets d’intérêt.

(33)

Figure 2.11 – Reconstruction 3D

Positionnement de quatre caméras afin d’obtenir une bonne reconstruction 3D et représentation de la grille de voxels candidats à faire partie des modèles reconstruits

2.3.1 Calibration

La matrice M de l’équation (2.11) qui fait le lien entre les coordonnées du monde et les coordonnées dans les images des caméras peut être trouvée à l’aide de différentes techniques de calibration qui sont bien connues, comme celles qui sont présentées dans Kwon; Zhang

(2000). La détermination de cette matrice est un domaine de recherche en soi qui est encore actuellement actif. Je vais maintenant présenter l’approche utilisée dans mon projet. Je l’ai choisie en fonction de sa simplicité.

Déterminer la matrice M correspond à trouver la valeur de chacune de ses composantes. C’est une matrice de dimension 3 par 4. Nous avons ainsi 11 inconnues, car nous pouvons choisir n’importe laquelle valeur pour une des composantes de la matrice M, à cause du facteur d’échelle. En effet, lorsque l’on connait la matrice M, il suffit de multiplier la matrice M pour que la composante que nous avons choisi de fixer soit égale à la constante voulue. Dans ce cas, les coordonnées du monde réel dans l’équation (2.11) seraient encore valides. Même si les valeurs du vecteur les contenant changeaient, lors de la normalisation de ce vecteur permettant d’obtenir le dernier composant égal à 1, les coordonnées redeviendront les mêmes.

Afin de pouvoir calculer la matrice de calibration M pour chaque caméra, nous filmons une cible de calibration lorsque nos caméras sont installées, car nous avons besoin de connaitre les coordonnées réelles de six points dans une image. En effet, en observant que :

ˆ

(34)

est l’équivalent de [u, v, 1] = M       X Y Z 1      

on peut poser deux équations par points,

ui= (M1∗ ˆXi)/(M3∗ ˆXi) (2.12)

et

vi = (M2∗ ˆXi)/(M3∗ ˆXi), (2.13)

où i = 1,2...n (nombre de points) et Mx correspond à la xième ligne de la matrice M.

On peut reformuler l’équation (2.12) de la manière suivante :

(−ui∗ M3+ M1) ∗ ˆXi= 0, (2.14)

ainsi que l’équation (2.13) comme cela

(−vi∗ M3+ M2) ∗ ˆXi = 0. (2.15)

À l’aide des coordonnées de six points, nous obtenons un ensemble d’équations suffisant pour déterminer chacune de nos inconnues de la matrice M. On peut utiliser la méthode de résolution d’équations que l’on préfère, tout en évitant la solution triviale où nos inconnues égalent 0. Je suggère d’utiliser une décomposition en valeur singulière (SVD) comme présentée dans Press et collab.(2007). Je recommande aussi d’utiliser plus de six points, même si cela nous donne un système d’équations surcontraint, car cela permet de réduire l’impact de nos erreurs de mesure. Pour y parvenir, nous reformulons les équations (2.14) et (2.15) pour poser :

A  M11M12M13M14M21...M33M34 T = 0 (2.16) où A =         ˆ XT 1 OT −u1Xˆ1T OT Xˆ1T −v11T ... ˆ XT n OT −unXˆnT OT XˆnT −vnnT        

(35)

et OT = [0, 0, 0, 0].

On peut remarquer que cette reformulation se présente comme un système d’équations de forme Ax = 0, dont nous trouvons la solution en utilisant le plus petit vecteur propre corres-pondant à la plus petite valeur propre dans la décomposition en valeur singulière pour obtenir M. [M11M12M13M14M21...M34]T correspond à la dernière colonne de la matrice V dans la

décomposition.

Il est possible d’arrêter la procédure de calibration ici, car nous avons une matrice M par caméra qui observe notre scène et qui nous permet de faire le pont entre le système de coor-données du monde réel et celui des caméras. C’est ce que nous avons fait lors de nos expériences lors de ces travaux de recherche. Cependant, il nous a été suggéré d’effectuer une étape sup-plémentaire afin d’améliorer de beaucoup le résultat de cette approche. En effet, l’approche de calibration présentée précédemment s’est résumée à la minimisation d’erreurs algébriques lors de la solution d’un système d’équations linéaires homogène. Or, nous pourrions de plus minimiser les erreurs géométriques de cette approche. Comme proposé dans Sonka et collab.

(2008) à la page 566, il s’agit en fait de prendre le résultat de notre calibration, afin de décom-poser les matrices M, pour en extraire les composantes extrinsèques et intrinsèques du modèle de la caméra. Comme on connait l’emplacement réel de plusieurs points dans la scène et dans les caméras, on peut ensuite modifier les valeurs de chacune de leurs composantes de manière itérative et vérifier l’effet sur la position des points obtenue avec ceux connus, afin de minimiser les erreurs le plus possible. Il s’agit ici d’optimiser la valeur de ces composantes, par exemple avec un algorithme de descente de gradients, comme celui proposé par Levenberg-Marquardt et dont l’implémentation est décrite dansPress et collab. (2007), afin d’obtenir de meilleures matrices de calibration.

Une fois la calibration terminée, nous avons une matrice M par caméra qui observe notre scène. Ces matrices et l’équation ˆu = M ˆX nous permettent de connaitre à quel endroit n’importe lequel voxel de notre environnement devrait être dans l’image de nos caméras (et s’il y est). Il s’agit ensuite de décider quelle zone on veut observer dans l’environnement et quelle taille on veut que nos voxels soient. Afin de reconstruire nos modèles, on regarde pour chaque voxel, si le pixel qui lui correspond est présent dans l’image de toute nos caméras après l’étape de soustraction d’arrière-plan. Ce traitement se parallélise très bien, car les choix d’ajouter ou non un voxel à notre modèle peuvent tous se faire en même temps, car ils ne dépendent pas du résultat du traitement de leurs voisins.

2.3.2 Temps réel et parallélisme

Tout comme l’approche de segmentation que nous avons présentée précédemment, notre ap-proche de reconstruction 3D se parallélise très bien. C’est d’ailleurs ce qui lui permet de s’exécuter en temps réel. On peut affirmer qu’un système s’exécute en temps réel lorsque ce

(36)

système délivre des résultats dans de courts délais et qu’il n’accumule pas de retard sur les données qu’il doit traiter. Notre système de reconstruction 3D s’exécute à la vitesse à laquelle il acquiert les images des caméras.

Afin d’y arriver, nous devons utiliser des unités de traitement ayant plusieurs noeuds de calculs, comme les cartes graphiques des ordinateurs ou des périphériques désignés pour cela. En général, pour un cout d’achat similaire, les noeuds de calculs d’un processeur d’ordinateur exécutent beaucoup plus d’opérations par seconde que ceux des cartes graphiques. Cependant, il y a généralement vraiment beaucoup plus de noeuds de calculs dans les cartes graphiques. Ceci implique que l’on a avantage à exécuter sur le processeur un algorithme qui nécessite un traitement séquentiel. Les algorithmes qui font plusieurs opérations similaires en parallèle devraient en théorie s’exécuter plus rapidement sur les cartes graphiques. Lors de l’utilisation d’une carte graphique pour exécuter une approche parallélisée, il faut faire attention au goulot d’étranglement correspondant au temps que cela prend pour transférer les données entre la mémoire de la carte graphique et celle du processeur. Il faut aussi faire attention à éviter les branchements conditionnels dans nos algorithmes, car les noeuds de calcul doivent tous faire les mêmes opérations. Un autre goulot d’étranglement à faire attention lorsque l’on parallélise une approche est d’avoir des blocages en écriture sur la mémoire parce que les noeuds de calcul doivent écrire des informations au même endroit en mémoire. On peut aussi optimiser notre traitement en fonction de la gestion des différentes caches de mémoire.

Pour nous aider à comprendre l’intérêt de paralléliser une approche, on peut comparer le nombre de calculs que l’on peut faire en une seconde à l’aide du processeur d’un ordinateur avec le nombre de calculs que l’on peut faire sur une carte graphique de cout similaire durant le même laps de temps. Avec un processeur de 4 coeurs dont la fréquence est de 3 GHz, on peut théoriquement faire 12 milliards de calculs par seconde, car nous possédons 4 coeurs * 3 gigas (milliards) hertz (d’oscillations par seconde). Le nombre de calculs que l’on peut faire sur une carte graphique dont la fréquence est de 0.9 GHz, mais qui possède 1500 coeurs, est de 0.9 ∗ 109∗ 1500 = 1350 milliards de calculs par seconde. Les coeurs de la carte graphique doivent cependant tous faire une opération du même type (par exemple une addition) durant une oscillation, mais chaque opération peut donner des résultats différents, car tous les coeurs peuvent utiliser des données différentes. Le nombre d’opérations total que l’on peut exécuter sur une carte graphique dans un temps donné est donc généralement plus grand que sur un processeur, lorsque l’on peut faire simultanément plusieurs fois les mêmes opérations. Ceci améliore de beaucoup le rapport entre le cout du matériel sur lequel le système s’exécute et le temps nécessaire pour effectuer tous les calculs.

La parallélisation de notre algorithme de détection se fait en deux modules distincts. Soit un module de soustraction d’arrière-plan et un module de reconstruction 3D.

(37)

la valeur d’intensité des pixels à des fonctions gaussiennes) et ne dépend pas du résultat de la segmentation des voisins, on peut ainsi l’exécuter en parallèle. Dans un monde idéal, on aurait pu l’implémenter de manière matérielle. Par exemple des cartes de circuits logiques programmables (FPGA), afin d’obtenir directement des images dont l’arrière-plan aurait été retiré. Dans le cadre de notre projet, nous avons plutôt procédé avec une approche logicielle et nous avons utilisé CUDA pour faire cette tâche. À chaque image analysée, on monte dans la mémoire des cartes graphiques le modèle de l’arrière-plan et l’image à traiter. Ensuite, chaque noeud de calcul effectue son traitement séparément et statue si le pixel qu’il analyse fait partie de l’avant-plan. Il doit aussi mettre à jour le modèle de l’arrière-plan. Ceci a dû être fait pour chacune des caméras. Cela fait beaucoup de transferts de données entre les cartes graphiques et la RAM de l’ordinateur et c’est souvent le goulot d’étranglement lorsque l’on tente de paralléliser une approche. Cela aurait pu être évité avec une approche matérielle. Dans le module qui implémente l’algorithme de reconstructions 3D, les tests de présence d’un objet d’intérêt pour chaque voxel peuvent aussi tous se faire de manière simultanée. Il s’agit ici de monter dans la mémoire des GPUs les images résultant de l’étape de soustraction d’arrière-plan. On doit monter en mémoire les matrices de calibration M qui font le pont entre les coordonnées du monde et ceux de chacune des caméras. On doit aussi passer les coordonnées de la grille de voxels à vérifier. Chaque noeud de calcul aura à vérifier, comme dans la figure2.10, si le voxel doit faire partie ou non du modèle. Il est préférable de choisir les dimensions de nos grilles de voxels de façon à utiliser tous les noeuds de calcul disponibles. La détection et la reconstruction 3D des objets se sont faites en deux passes dans notre système. Une première passe avec des voxels beaucoup plus larges pour détecter la présence des objets d’intérêt et pour connaitre leurs coordonnées. Une deuxième passe sur tous les objets détectés, avec une grille de voxels située à leurs coordonnées et contenant des voxels beaucoup plus petits. Il est à noter que l’on n’est pas obligé de changer le contenu de la mémoire des GPUs lors de la deuxième passe. Comme chaque noeud de calcul n’a qu’une comparaison par caméra par passe à faire, le traitement est ainsi très rapide.

(38)
(39)

Chapitre 3

Identification des êtres vivants du

règne animal

3.1

Obtention des caractéristiques des animaux

Plusieurs critères peuvent être utilisés pour identifier les animaux présents dans une scène, par exemple leurs dimensions, leur forme géométrique, leurs couleurs, leurs textures, leur vitesse maximale de déplacement, les sons qu’ils émettent, leurs modes et leurs patrons de dépla-cement. L’approche présentée ici utilise seulement leurs dimensions et leur forme, mais rien n’empêcherait de la complémenter avec d’autres sources d’informations. Un groupe de re-cherche à Princeton (Dobkin et collab.) tient à jour une comparaison intéressante de plusieurs approches pour comparer des objets en 3D (Shilane et collab.). Afin d’analyser la forme des animaux, mon approche s’est inspirée des travaux de plusieurs chercheurs. À ma connaissance, je propose une approche novatrice, qui repose principalement sur la décomposition en harmo-niques sphériques et qui utilise des concepts apparentés aux approches de type «sac de mots» (Fehr et collab.(2009)) et de «signatures squelettiques» (Biasotti et collab. (2008)).

3.2

Présentation générale de l’approche

L’approche émerge du fait que l’on peut superposer des fonctions de base afin de représenter les objets. Comme illustré la figure 3.1, cela correspond à se demander quelle fraction de chacun des blocs de base devrait être utilisée pour construire un objet.

Les fonctions définies sur la surface d’une sphère peuvent être représentées comme une com-binaison linéaire de fonctions de base. Lors de l’étape de reconstruction 3D présentée dans la section 2.3, nous avons obtenu un objet représenté par des voxels que nous cherchons maintenant à identifier. Nous allons utiliser une combinaison de deux techniques utilisant la décomposition en harmoniques sphériques. La première approche, à laquelle je réfèrerai

(40)

Figure 3.1 – Reconstruction d’un objet à l’aide de superposition de fonctions de base

ultérieurement comme étant l’approche classique, reprend une idée de Thomas Funkhouser, Michael Kazhdan et de leurs collaborateurs qu’ils ont présentée dans Funkhouser et collab.

(2003). Une traduction française d’une image prise dans leur publication schématise bien leur approche à la figure3.2dans la page24de ce mémoire. L’idée est de segmenter l’espace occupé par l’objet d’intérêt en plusieurs sphères concentriques, pour ensuite décomposer les équations représentées par la présence ou l’absence de l’objet à la surface de chacune des sphères, afin de connaitre quelle proportion de chacune des fonctions de base est nécessaire pour composer cet objet. Nous utiliserons les coefficients, issus de ces proportions, comme critères pour comparer à quel point cet objet ressemble aux autres dans la base de connaissances.

Figure 3.2 – Approche classique de décomposition d’un objet permettant d’en faire son analyse harmonique

La deuxième approche, que je nomme l’approche structurée, s’effectue en trois principales étapes.

1 - La première étape consiste en un regroupement des voxels utilisant une méthode de pro-pagation à partir du voxel le plus près du centre de masse, afin de les segmenter en groupes. 2 - La deuxième étape correspond à effectuer une décomposition à l’aide des harmoniques sphériques de chacun des groupes. On segmente l’espace occupé par les groupes de voxels en plusieurs sphères concentriques, puis on décompose les équations représentées par la présence ou l’absence de voxels à la surface de chacune des sphères, afin de connaitre quelle proportion

(41)

de chacune des fonctions de base est nécessaire pour composer cet objet. La position du centre des sphères est égale au centre de masse de chacun des groupes de voxels à décomposer. 3 - Lors de la troisième étape, nous comparons chacun des groupes de l’objet d’intérêt avec chacun des groupes des modèles d’animaux contenus dans la base de connaissances, en tenant compte de la structure hiérarchique des groupes.

La figure 3.3 présente l’approche structurée et donne un aperçu du résultat de l’agrégation des voxels. Elle schématise aussi la décomposition individuelle de chacun des groupes lors de l’utilisation de l’approche structurée. Ces figures proviennent du traitement réel de séquences vidéos de la base à l’aide de notre algorithme.

Figure 3.3 – Approche structurée de décomposition d’un objet afin d’en faire son analyse harmonique

(a) (b)

(a) Résultat du groupement des voxels.

(b) Décomposition en harmoniques sphériques de chaque groupe, tenant compte de la structure de l’objet.

L’approche classique obtient d’excellents résultats avec des objets rigides. Cependant, les ani-maux sont sujets à diverses déformations qui ont des effets drastiques sur le résultat d’une décomposition. Les modèles 3D des animaux ont de fortes variations de forme en raison de leur nature. Par exemple, il suffit que l’animal décide de s’assoir, fléchisse une patte, tourne la tête pour obtenir des résultats différents lors de la décomposition. Malheureusement, il n’est pas vraiment possible d’avoir un exemple de toutes les variations de postures de tous les animaux existants sur terre dans notre base de connaissances. Il serait de toute façon difficile, avec les capacités de calcul actuelles, d’envisager d’avoir le temps de toutes les comparer à chaque identification.

L’approche structurée, à la manière de celle de type «sac de mots», compare chaque petite partie des animaux aux petites parties du modèle de chaque animal. Cependant, à la manière de celle de type «signature squelettique», elle tient compte de la distance entre chaque partie et celle qui est la plus proche du centre de masse du modèle. Comme nous le verrons plus en détail à la section 3.3.1, elle tient compte du nombre de groupes de voxels qui la sépare du groupe de voxels à l’origine de la propagation de voxels. Ainsi, elle prend en compte la structure du modèle. L’approche structurée est beaucoup moins affectée par les variations causées par les

(42)

déformations des animaux que l’approche classique, mais utilise moins l’information contenue dans la posture globale de l’animal.

Dans la base de connaissances de l’approche structurée, il y a généralement un seul modèle par animal, et il contient plusieurs petites parties de l’animal. Avec l’approche classique, on peut obtenir de bons résultats en incluant les postures des animaux que l’on a le plus de chance d’observer dans notre environnement d’intérêt. Selon l’application du projet, l’approche ne sera pas la même. Si l’on cherche à identifier une grande variété d’animaux différents, on aura avantage à miser sur l’approche structurée, quitte à mettre plus d’un modèle par animal. Si l’on cherche à différencier une seule catégorie d’animal des autres, on aura avantage à miser plus sur l’approche classique et avoir plusieurs modèles des postures probables de cet animal. Mon concept final concerne un cas général et consiste en un hybride des deux approches.

3.3

Regroupement des voxels

Afin d’utiliser l’approche structurée de décomposition harmonique, nous allons regrouper les voxels de manière à ce que chacun des groupes soit le moins influencé possible par les mouve-ments des animaux. Idéalement, nous obtiendrions des groupes de voxels connexes qui corres-pondraient aux parties anatomiques des animaux.

L’intérêt de cette agrégation de voxels est de faire en sorte que l’analyse harmonique soit moins influencée par les diverses déformations du modèle des animaux lorsqu’ils bougent. La forme de chaque groupe aura des chances de ne pas être affectée par le mouvement d’un ou des membres de l’animal. Comme la figure3.4le présente en deux dimensions, si le personange bouge un bras, la forme des autres groupes change peu. Ainsi, notre analyse harmonique de tous les autres groupes donnera des résultats invariables à ce mouvement de patte.

Figure 3.4 – Regroupement peu affecté par les mouvements

3.3.1 Méthode de propagation des voxels

Afin d’obtenir une segmentation de l’ensemble des voxels d’un modèle en groupes que l’on décomposera dans l’approche structurée, je suggère d’utiliser une méthode de propagation des voxels. La méthode correspond à prendre le voxel le plus près du centre de masse de l’objet et lui ajouter ses voisins immédiats, de manière itérative jusqu’à ce qu’on en ait ajouté le bon

(43)

nombre pour remplir ce premier groupe. Nous déterminons ce nombre de façon à obtenir le nombre de groupes que l’on veut avoir (par exemple, si nous choisissons d’analyser 20 groupes par animaux et qu’un modèle contient 2000 voxels, nous en placerons 100 par groupe). Ensuite, nous créons un nouveau groupe avec le prochain voxel voisin et nous continuons le même processus jusqu’à ce que nous ayons traité tous les voxels du modèle. À chaque création d’un nouveau groupe, nous notons aussi à quelle distance (en nombre de groupes) il se retrouve du premier groupe de voxels. Cette distance correspond au nombre de groupes qui ont été créés entre lui et le groupe qui contient le voxel qui est le plus près du centre de masse.

La figure 3.5 présente l’allure du résultat de la propagation de pixels sur une image en deux dimensions à chaque étape de création d’un nouveau groupe.

Figure 3.5 – Méthode de regroupement de pixels utilisant la propagation des pixels

#1 Ensemble original #2 #3 #4

#5 #6 #7 #8

#9 #10 #11 #12

La propagation débute du pixel qui se trouve au centre de masse de l’objet et forme le premier groupe comme présenté à l’image #2.

Les images #3 à #11 montrent le résultat à chaque étape de création d’un nouveau groupe. L’image #12 démontre la valeur de la distance en nombre de groupe(s) de voxels du centre

de masse. Le groupe rose du bas est à deux groupes du centre et le groupe orange en haut est à quatre groupes du centre.

(44)

qui servent à conserver les voxels à traiter par l’algorithme. Nous nommons une liste «globale» et l’autre «courante». L’approche débute par la recherche du voxel étant le plus près du centre de masse de l’objet à identifier. Ce sera le premier voxel à traiter et l’algorithme l’assigne à la liste courante. Une variable conserve le numéro du groupe que l’algorithme est en train de traiter, en commençant par le groupe numéro 1.

L’algorithme traite ensuite chaque élément de la liste courante, en débutant par le premier, jusqu’à ce qu’elle soit vide ou que l’on ait ajouté un nombre X de voxels au groupe présentement traité (X = nombre total de points / nombre de groupes désirés). Le traitement d’un élément consiste à le retirer de la liste et à attribuer l’étiquette du groupe en cours à ses 6 voxels voisins et à les ajouter à la fin de la liste courante de voxels à traiter, s’ils n’ont pas déjà un numéro d’étiquette qui leur est attribué, à cause de leurs appartenances à un groupe. Lorsque le système change de groupe, il incrémente le numéro de groupe et il transfère tous les éléments restants de la liste courante à la fin de la liste globale. Ensuite, il retire le premier élément de la liste globale, pour le mettre comme seul élément de la liste courante. Il recommence alors à traiter la liste courante jusqu’à ce qu’il n’y ait plus aucun voxel à traiter dans les deux listes. La figure 3.6 montre le résultat de l’agrégation de voxels de modèles 3D de chiens. On peut y observer que le regroupement de voxels semble tout de même assez bien placé pour ne pas être trop influencé par les mouvements d’un membre unique de l’animal, même si les groupes sont vraiment positionnés différemment. Dans le cas présenté ici, la mise en correspondance de groupes sera tout de même difficile et l’on peut prévoir que l’approche structurée d’analyse donnera un mauvais résultat.

De manière empirique, j’ai déterminé qu’une vingtaine de groupes donnait des résultats sa-tisfaisants et ne prenait pas trop de temps de calcul lors de la comparaison. Lors de la dé-composition en harmoniques sphériques de chacun des groupes résultant de cet algorithme, nous ignorons les groupes de voxels isolés qui contiennent moins de la moitié du nombre X (déterminé dans le paragraphe précédent) de voxels, afin de ne pas perturber les résultats par des décompositions provenant d’un trop petit nombre de voxels.

Cette méthode permet de monter une structure en arbre. Afin de connaitre la hiérarchie des groupes, le système note quel est le groupe de voxels parent de chaque groupe. La figure 3.3

montre le résultat de l’agrégation de voxels du modèle 3D d’un chien et l’allure de cette structure en arbre. On connait de cette manière facilement à quelle distance un groupe (en nombre de groupes) se retrouve du premier groupe de voxels. Cette distance est intéressante, car on peut en tenir compte lors de la comparaison du résultat de leur décomposition en harmoniques sphériques, afin de favoriser la mise en correspondances de groupe de voxels qui sont à la même distance du centre. Cela permet à notre approche de type sac de mots de tenir compte quand même de la structure de la phrase.

(45)

Figure 3.6 – Agrégation de voxels de modèles 3D de chiens

Chien 1

Chien 2

3.4

Décomposition en harmoniques sphériques

L’approche classique et l’approche structurée reposent sur la décomposition en harmoniques sphériques. Les prochaines sections vont présenter les mathématiques nécessaires à la réalisa-tion de ces décomposiréalisa-tions.

3.4.1 Coordonnées sphériques

Afin de simplifier les mathématiques qui suivent, j’ai choisi un système de coordonnées sphé-riques pour exprimer la position d’un point dans l’espace. En coordonnées sphésphé-riques, un point y est repéré par la distance entre ce point et celui à l’origine, ainsi que deux angles. Comme présenté à la figure 3.7, j’ai noté la distance d’un point au centre r, la longitude θ et la cola-titude ϕ, où r ∈ [0, ∞], ϕ ∈ [0, 2π] et θ ∈ [0, π]. Ce système de coordonnées est très commode pour définir une fonction sur une sphère.

3.4.2 Fonctions de base et principe de projection

Comme énoncé entre autres par Claude Cohen-Tannoudji et ses collaborateurs dans Cohen-Tannoudji(1997), toute fonction de θ et ϕ de carré sommable se développe sur les harmoniques sphériques de la manière suivante :

f (θ, ϕ) = +∞ X l=0 +l X m=−l Clm· Ylm(θ, ϕ), (3.1)

(46)

Figure 3.7 – Coordonnées sphériques

où l et m sont des indices entiers.

Les fonctions Ylm(θ, ϕ) représentent l’ensemble des harmoniques sphériques introduites par Pierre Simon de Laplace en 1782. Nous verrons comment les calculer à la section 3.4.4. Dans notre cas, la fonction f (θ, ϕ) représente l’objet d’intérêt. Elle vaut 1 lors de la présence de l’objet d’intérêt aux coordonnées (θ, ϕ) de la surface d’une sphère et 0 en son absence. Afin d’optimiser le calcul des décompositions, les coordonnées de l’objet d’intérêt sont mises à l’échelle, de manière à ce que le rayon r de la sphère servant à la décomposition soit égal à 1.

Les coefficients Clm sont ce que nous cherchons à déterminer à chaque décomposition. À la manière des coefficients de Fourier dans une transformation de Fourier, ils représenteront le contenu fréquentiel de l’objet décomposé. Il est intéressant de remarquer que la décomposition en harmoniques sphériques d’une fonction définie sur une sphère est analogue au développe-ment en séries de Fourier pour les fonctions périodiques.

Comme défini dans Sansone(2012), une fonction est de carré sommable lorsque l’intégrale de sa valeur au carré converge, c’est-à-dire :

Z ∞

−∞

|f (x)|2dx < ∞. (3.2)

Ainsi, une fonction définie sur la surface d’une sphère unité est une fonction de carré sommable. On peut en déduire que les harmoniques sphériques forment une base orthogonale sur la sphère unité. Une preuve du principe de décomposition présenté à l’équation (3.1) se trouve dans

Axler et collab.(2001).

Les fonctions définies sur une sphère peuvent être représentées comme une combinaison linéaire des fonctions de base Ylm(θ, ϕ). Afin de déterminer quelle proportion de chacune des fonctions de base utiliser pour construire une fonction et ainsi déterminer la valeur des coefficients Clm, nous aurons recours à une projection de cette fonction sur chacune des fonctions de base. La figure 3.8 à la page 31 provenant de l’article Schönefeld (2005) illustre très bien ce principe sur une fonction en deux dimensions.

Figure

Figure 1.1 – Algorithme général du systèmeL’approche débute par l’acquisition d’une image
Figure 2.1 – Comparaison d’images obtenues à l’aide de caméras visible et infrarouge
Figure 2.2 – Soustraction d’arrière-plan
Figure 2.4 – Segmentation à l’aide d’une approche basée sur un modèle de mélanges gaussiens
+7

Références

Documents relatifs

Objectif   : Découvrir les relations entre les êtres vivants dans un milieu de vie (compétences PL1, PL2, OM11) Définition   : une chaîne alimentaire est une

Les végétaux chlorophylliens n’ont besoin pour se nourrir que de matière minérale, à condition de recevoir de la lumière : ce sont des producteurs primaires... • Tous

Nous constatons que les végétaux verts sont des producteurs primaires car ils sont les premiers maillons de la chaîne alimentaire et se nourrissent de matière minérale uniquement,

Compléter les trois instructions manquantes pour que le programme suivant simule l’expérience aléatoire décrite ci-dessus et pour qu’il affiche, dans cet ordre, les valeurs prises

- Capacité (variable celons les êtres vivants) d'adaptation à l'environnement dans une gamme restreinte par les capacités du matériel génétique.. Le génome est le

Dans beaucoup d’exemples il est possible de trouver des polynˆomes de degr´e plus petit que le degr´e de χ A et qui annulent A, conduisant `a des calculs plus simples..

Livre p 186 document 1. Répondre aux questions suivantes en faisant des phrases. 1) Donner le nom des cellules reproductrices mâles et le nom de l’organe où elles sont fabriquées. 2)

1-Diversification des êtres vivants. Mécanismes à l'origine de