Bienvenue sur le site web du cours de Photographie Algorithmique pour la session d'hiver 2021!
La photographie algorithmique est un domaine qui se situe entre la vision artificielle, l'infographie, et la photographie. Elle utilise des techniques de calcul permettant de compenser les limites des appareils photo traditionnels et améliore la façon dont on capture et manipule les données visuelles ainsi que la façon dont on interagit avec elles. Le cours permet d'explorer la formation des images, les modèles d'appareils, la création de panoramas, la synthèse de texture, les images à haute plage dynamique (HDR), le redimensionnement intelligent, la métamorphose, etc. Il s'oriente sur l'application concrète des concepts par de nombreux travaux pratiques, ainsi qu'un projet personnel.
Rencontrez les étudiants du cours grâce à ce montage vidéo (résultats du TP3):
Les notes de cours de la première semaine sur la logistique sont disponibles ici: Logistique du cours.
Plan de cours officiel : (GIF-4105, GIF-7105). Lien vers la page Capsule.
Plutôt que d'employer le format « traditionnel » avec cours magistraux synchrones chaque semaine et de l'étude personnelle à la maison, le cours emploie la formule suivante:
Joignez-vous à nous pour la séance synchrone grâce au lien zoom disponible sur le portail des cours.
Important : vous devez utiliser votre compte Zoom de l'Université Laval pour accéder à la séance synchrone. Pour ce faire, suivez les instructions indiquées dans ce document.
Nous utilisons PAX pour toutes questions, discussions, etc.
Les travaux pratiques devront être remis sur le portail des cours.
Tous les travaux doivent être faits individuellement et aucun retard n'est permis.
Travail | Date de disponibilité | Date de remise | Pondération |
---|---|---|---|
TP1 : Coloration de l'Empire Russe (English) | 21 janvier | 3 février, 23h59 | 10% |
TP2 : On s'amuse en fréquences (English) | 4 février | 17 février, 23h59 | 10% |
TP3 : Métamorphose de visages++ Partie A (English) Partie B (English) |
18 février | Partie A : 3 mars, 23h59 Partie B : 10 mars, 23h59 |
14% |
TP4 : Panoramas automatiques (English) | 11 mars | 31 mars, 23h59 | 14% |
TP5 : Insertion d'objets virtuels | 1 avril | 14 avril, 23h59 | 12% |
Projet : À vous de jouer! | 15 avril | 30 avril, 23h59 | 20% |
Examen | Date | Lieu et heure | Pondération |
---|---|---|---|
Partiel | 18 mars | 9h30 à 12h30, portail des cours | 20% |
Cliquez sur la semaine pour révéler plus d'informations. Le contenu pour chaque semaine sera rendu disponible au fur et à mesure de la session.
Vous pouvez également consulter la liste de tous les modules plutôt que de les afficher par semaine.
SVP remplissez le doodle suivant pour déterminer les disponibilités des assistants durant la semaine.
L'enregistrement de la séance synchrone est disponible sur le portail des cours.
Pour démarrer le tout, on commence par un bref historique de la photographie de la camera obscura à la caméra algorithmique, en passant par les caméras analogiques et numériques. On enchaîne par la suite par une (ou même deux) interprétations de ce qu'est la photographie algorithmique. En une phrase? Il s'agit de la discipline qui vise à compenser pour les limites d'une caméra « traditionnelle » grâce à des algorithmes. Bien que sa définition au sens large inclut l'entièreté du processus de formation d'une image (de la source lumineuse jusqu'à l'image), nous nous concentrerons, dans ce cours, sur les algorithmes appliqués aux images après que ces dernières aient été capturées par une caméra.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
On entame la matière du cours en traitant tout d'abord de la façon dont nos yeux capturent la lumière, pour ensuite faire contraste avec la façon dont une caméra le fait. L'une des différences principales entre les deux est que notre système visuel possède une faculté d'adaptation aux conditions d'éclairage ambiantes, nommée constance d'intensité (et couleur), qui lui permet de reconnaître la même intensité (ou couleur) malgré des variations d'éclairage. Une caméra, cependant, ne possède pas cette capacité : elle ne fait que mesurer les photons qui frappent ses détecteurs.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Ce module présente diverses opérations pouvant être effectuées sur les pixels d'une image en les considérant indépendamment de leurs voisins. On peut en effet considérer un pixel comme une valeur (entre 0 et 255 lorsque l'on charge une image, mais que l'on peut également convertir en nombre à virgule), sur laquelle on peut appliquer une opération mathématique. Par exemple, élever un pixel à un exposant peut aider à ajuster le contraste d'une image. On peut également le faire en égalisant l'histogramme de l'image.
Le module traite également de différentes représentations possibles pour manipuler les couleurs d'une image : RGB (par défaut, mais pas forcément très avantageux), HSV (plus intuitif), et Lab (perceptuellement uniforme). On observe qu'il est parfois plus avantageux de travailler sur la luminance d'une image (par exemple, en Lab) que sur sa chrominance. Finalement, on conclut en faisant le pont avec le module sur la perception de la lumière, en traitant de l'ajustement qui doit être fait sur les couleurs d'une image pour tenir compte de l'illumination de la scène, chose qui est faite automatiquement par nos yeux mais pas par une caméra.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible sur le portail des cours.
Après avoir considéré des transformations pouvant être appliquées à chaque pixel indépendamment, nous nous penchons maintenant sur des fonctions qui affecte un pixel en fonction de ses voisins. On nomme « filtrage » l'opération de convolution, qui consiste à calculer la somme pondérée d'un pixel et de ses voisins. Les poids de la somme sont désignés par un « filtre », qui détermine l'importance de chaque voisin dans le calcul de cette somme. Dans ce module, nous ferons connaissance notamment avec plusieurs types de filtres qui ont différents effets sur les images. L'un de ces filtres est le filtre gaussien, où la pondération des voisins dépend de la distance du voisin par rapport au pixel central. Le filtre gaussien adoucit l'image et génère une version plus floue de celle-ci.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'effet qu'un filtre a sur une image peut être difficile à prévoir en l'analysant dans le domaine spatial. Nous avons également observé plusieurs effets « étranges ». Par exemple, le filtre en boîte, qui pourtant ne fait que calculer la moyenne d'une image sur une petite fenêtre, ne crée pas une image aussi lisse que le filtre gaussien. Ces effets ne pourront être compris que si l'on transforme le domaine d'analyse de l'image et que l'on considère plutôt ses fréquences. Pour ce faire, nous utiliserons un outil mathématique nommé la « transformée de Fourier » qui dit que l'on peut représenter n'importe quel signal par une somme pondérée de sinus de différentes fréquences (et de différentes phases). Ceci correspond, mathématiquement, à une projection du signal sur une base complexe. Au delà de l'aspect mathématique, cette représentation est pratique car elle nous permet de visualiser le contenu fréquentiel d'une image et d'un filtre.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible sur le portail des cours.
Dans ce module, nous discutons de plusieurs applications du filtrage, qui est, comme nous le verrons, une opération vraiment très utile pour traiter les images! On peut l'employer pour réduire le bruit, pour identifier la position de modèles dans une image (template matching en anglais), pour détecter les arêtes, pour accentuer une image, pour la génération d'une image hybride, etc. On concluera par l'exploration sommaire de la technique de compression JPG qui, bien que ça ne soit pas du filtrage à proprement parler, exploite une décomposition en fréquences de petits blocs dans l'image.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Ce module présente trois méthodes permettant de « mélanger » (ou combiner) deux images ensemble pour n'en former qu'une.
La première compose deux images grâce à l'équation de composition, qui nécessite un masque (binaire ou non) définissant la source de chaque pixel.
La seconde, nommée « pyramide (ou pile) laplacienne, » se base sur la décomposition fréquentielle d'une image afin de déterminer le « niveau de coupure » optimal pour chaque bande de fréquences.
La troisième propose de combiner les gradients de deux images, et de mettre les gradients à 0 le long de la frontière du masque, afin d'obtenir un résultat où cette frontière est invisible.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible sur le portail des cours.
Ce module présente un petit détour sur des concepts de géométrie pour discuter de transformations linéaires. On débute tout d'abord par parler des différentes transformations linéaires pouvant être représentées par des matrices 2x2. Par la suite, on poursuit la discussion en coordonnées homogènes pour représenter ces transformations par des matrices 3x3 (mais toujours sur des points 2D). Cela nous permettra d'inclure des transformations additionnelles, telles que les transformations affines et projectives.
Par la suite, nous discutons de la façon dont nous pouvons estimer la transformation qui a été appliquée à une image. Notamment, l'estimation d'une transformation affine sera présentée dans le détail car celle-ci sera particulièrement utile pour le travail pratique 3. Finalement, on conclut en présentant la façon dont on peut appliquer une transformation donnée à une image pour obtenir une image transformée.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'objectif de ce module est de présenter la façon dont nous pouvons générer une métamorphose progressive passant d'une image à une autre sans « coupure » abrupte. Pour ce faire, nous présentons tout d'abord le scénario où les deux images sont déjà parfaitement alignées (par exemple, deux images prises par une webcam statique). Cela revient simplement à faire la moyenne pondérée entre les deux images, où le poids varie progressivement d'une image à une autre. On poursuit avec le cas où une seule transformation globale est nécessaire pour aligner les images. Dans ce cas, on transforme l'une des deux images et la moyenne pondérée peut ensuite être calculée.
Le troisième cas, plus complexe celui-là, survient lorsqu'une transformation globale ne suffit pas. Il faut alors calculer plusieurs transformations locales, un peu partout dans l'image. Bien qu'il existe plusieurs options pour le faire, notre méthode privilégiée est celle d'établir des points de correspondance entre les images, et de les trianguler afin d'obtenir un maillage triangulaire. Des transformations affines peuvent être calculées à chacun de ces triangles! La métamorphose est alors calculée en faisant la moyenne pondérée de la forme (obtenue avec le maillage) et de l'apparence (couleur) des deux images.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible sur le portail des cours.
Dans ce module, on se familiarise avec ce qu'est une caméra. Pour débuter, on découvre le modèle mathématique du sténopé (point + plan) qui, bien que simple, nous permet de dériver les équations qui régissent la relation entre les coordonnées d'un point dans le monde (3D) et sa projection dans le plan de l'image (2D). Ceci peut être exprimé sous forme matricielle (en coordonnées homogènes) pour obtenir la fameuse matrice de projection. Cette dernière est généralement divisée en deux : intrinsèque (paramètres décrivant « l'intérieur » de la caméra) et extrinsèque (position et orientation de la caméra dans le monde).
En pratique, cependant, un petit trou ne sera pas suffisant et il faudra recourir aux lentilles afin de pouvoir capter plus de lumière et obtenir un plus grand contrôle sur l'image obtenue. L'utilisation de lentilles crée de nouveaux effets, comme la capacité de contrôler le plan focal (la distance à laquelle les objets sont nets), la profondeur de champ, ainsi que le champ de vue.
Finalement, nous discutons aussi des paramètres contrôlant l'exposition de la caméera (ou, intuitivement, la « quantité » de lumière perçue dans l'image), soit : le temps d'exposition, l'ouverture de la lentille, et l'ISO. En plus de contrôler l'exposition, chacun de ces trois paramètres ont d'autres effets sur l'image : flou dû au mouvement, profondeur de champ, et bruit.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Comme les caméras ont généralement un champ de vue bien inférieur à celui de l'oeil humain, nous explorons maintenant la façon dont on peut combiner plusieurs images ensemble afin de générer une image à grand champ de vue. Pour ce faire, l'algorithme des mosaïques d'images est exploré. Ce dernier nécessite la capture de plusieurs images partageant le même centre de projection, et le calcul des transformations entre ces images. Il est déterminé qu'une transformation entre deux images est une homographie, qui nécessite la détermination de 4 correspondances (8 points au total).
Le calcul d'une homographie s'inspire de celui de la transformation affine, à la différence qu'un facteur d'échelle inconnu est présent dans la matrice (9 éléments, mais 8 inconnus seulement). Pour résoudre ce problème, nous faisons appel à la SVD (décomposition en valeurs singulières) qui permettra de récupérer la solution possédant une norme de 1 (résolvant ainsi le problème du facteur d'échelle).
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible sur le portail des cours.
Nous avons vu précédemment qu'étant donnés 4 points de correspondance entre deux images, nous pouvions calculer l'homographie entre ces deux images et ainsi transformer la première pour l'aligner avec la seconde (ou vice-versa). Jusqu'à présent, nous avons assumé que les points de correspondance étaient donnés, par exemple, par un utilisateur. La question que l'on se pose dans ce module est : comment déterminer ces correspondances automatiquement ?
Pour ce faire, nous devons effectuer les étapes suivantes. Premièrement, déterminer des points d'intérêt dans les deux images. Ces points doivent être à la fois représentatifs et distinctifs afin de pouvoir être appariés plus tard. Deuxièmement, identifier une région autour du point d'intérêt et calculer un descripteur de cette région. Le descripteur devra être suffisamment invariant aux différents types de transformations qui peuvent être attendues entre deux images (par exemple : translation, rotation, échelle, mais également exposition). Finalement, les descripteurs des points d'une image doivent être appariés à ceux des points de l'autre image. Pour ce faire, la procédure nommée « RANSAC » est utilisée.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone du 11 mars est disponible sur le portail des cours.
L'examen est disponible sur le portail des cours, le 18 mars 2021 de 9h30 à 12h30. Cliquez ici pour y accéder directement.
Attention : regarder immédiatement les solutions de l'examen de pratique ne constitue pas une façon appropriée d'étudier! Pratiquez-vous d'abord sérieusement, sans regarder les solutions. Ne les consultez qu'après avoir essayé de répondre aux questions. Notez également que la matière peut avoir changé depuis lors.
Dans ce court module, on explore d'autres aspects reliés à la génération automatique de panoramas. Tout d'abord, on considère l'une des limitations principales des mosaïques planaires, soit justement le fait que la surface de projection soit un plan! En effet, plus l'angle entre les caméras est grand, plus la surface planaire qui intersecte avec tous ces plans est grande... jusqu'à ce que le plan devienne carrément infini. Pour contrer ce problème, il suffit de projeter sur une surface cylindrique, ce qui règle le problème si l'on contraint la caméra à tourner autour de son axe vertical, ou encore sur une surface sphérique. Le module est conclut par la présentation du problème de la découverte de panoramas, où l'on parvient à « découvrir » les photos qui correspondent à un même panorama à l'intérieur d'une collection d'images.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Ce module explore les textures : ces morceaux des images qui représentent l'apparence des surfaces. Nous considérons tout d'abord ce qu'est une texture ainsi que la manière dont on peut les représenter. Pour ce faire, le filtrage est de retour. Par la suite, nous explorons le problème de synthèse de texture : à partir d'un petit élément de texture, l'objectif est ici de reproduire cette texture à plus grande échelle. Plusieurs options sont explorées, incluant la synthèse de texture par 1) appariement de statistiques; 2) échantillonnage non-paramétrique; 3) par courtepointe; et 4) par appariement de blocs.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible la journée-même sur le portail des cours.
Ce module s'attarde aux images dites « HDR », soit les images à haute plage dynamique (High dynamic range en anglais), c'est-à-dire des images qui capturent la radiance du monde physique. En langage simplifié, la radiance peut se traduire comme étant la puissance lumineuse captée par la caméra. On démarre l'exploration de ce module par la constatation que la radiance du monde peut prendre une très vaste gamme de valeurs, allant de très sombre (sous-sol peu éclairé) à extrêmement brillant (le soleil). Une caméra, cependant, ne peut capturer toute cette plage : elle doit faire un choix. Ce choix est contrôlé par l'exposition, qui permet de contrôler si l'on capture des radiances faibles (longue exposition) ou plus élevées (courte exposition). Il sera donc question de capturer cette radiance (à haute plage dynamique) à partir d'images (à faible plage dynamique). Chemin faisant, nous explorerons ce qui se passe à l'intérieur d'une caméra, discuterons de calibrage radiométrique, et concluerons par le problème inverse de la reproduction tonale.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible la journée-même sur le portail des cours.
Nous abordons maintenant le défi de combiner le virtuel et le réel, c'est-à-dire de rajouter un objet virtuel (dont nous possédons un modèle 3D) à une image réelle (une photo du « vrai monde »). D'entrée de jeu, nous réalisons que nous faisons face à trois défis principaux dans l'atteinte de cet objectif. Premièrement, il nous faut déterminer l'orientation de l'objet (virtuel) par rapport à la caméra (réelle). Deuxièmement, il faut également déterminer la façon dont l'objet (virtuel) sera éclairé. Le résultat ne sera réaliste que si on l'éclaire avec la lumière (réelle) provenant de la scène. Troisièmement, il faut également générer des interactions réalistes entre l'objet (virtuel) et la scène (réelle), comme le fait que la présence de l'objet près d'une surface devrait générer des ombres sur la surface. Les capsules du module explorerons diverses solutions pour chacun de ces trois défis.
Poser une question sur ce modulePour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible la journée-même sur le portail des cours.
En 2014, on estimait qu'environ 1.8 milliard d'images étaient téléversées sur Internet à chaque jour. En 2021, on ne compte plus le total... il y en a juste trop! La vaste majorité de ces données sont générées et capturées, mais ne sont jamais vues par aucun humain, elles représentent en quelque sorte une sorte de matière noire numérique qui est présente mais jamais observée. La question que l'on se pose dans ce module est : que peut-on faire de ces images?
Dans un premier temps, on explore quelques techniques qui remplacent des algorithmes d'analyse compliqués par un simple appariement dans une grosse base de données. Par exemple, si on cherche à remplir un trou dans une image (synthèse de texture), plutôt que de tenter de remplir le trou par appariement de statistiques ou d'échantillonnage tel qu'on a discuté dans un précédent module, on peut simplement apparier l'image elle-même dans une vaste base de données, trouver des images semblables, et remplir le trou avec les pixels des images semblables. Cette technique peut également être adaptée à la géolocalisation d'images, dans le cas où les images de la base de données possèdent également des coordonnées GPS.
On conclut ce module (on reviendra sur les données massives dans le cas de l'apprentissage profond) avec une brève discussion des dangers des données : biais, présence de termes dérogatoires, atteinte à la vie privée... tous ces problèmes sont bien présents et il est crucial d'en être conscient lorsque l'on travaille avec des images.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
L'enregistrement de la séance synchrone de la semaine est disponible la journée-même sur le portail des cours.
Ce module présente un survol de l'apprentissage profond, en débutant tout d'abord par un bref historique de même qu'une présentation de « l'ancêtre » des réseaux de neurones modernes, le perceptron (multi-couches). Le perceptron est un réseau de neurones simple, où tous les neurones d'une couche possède des connexions à tous les neurones de la couche précédente. Ici, un « neurone » (algorithmique) est une unité de calcul simple, qui effectue la somme pondérée de ses entrées, passe le résultat dans une fonction non-linéaire (sigmoïde, signe, etc.) pour générer une sortie. Dans un réseau profond, plusieurs de ces couches sont placées de façon hiérarchique afin de représenter une fonction entre les entrées et les sorties. D'ailleurs, il a été démontré qu'un perceptron avec une seule couche cachée est une approximateur de fonction universel : il peut représenter n'importe quelle fonction (la complexité étant gagnée en ajoutant des neurones sur la couche cachée).
Par la suite, on considère les réseaux de neurones à convolution, qui sont particulièrement bien adaptés pour traiter les images car ils remplacent les neurones interconnectés (connectés à tous les neurones de la couche précédente) par des filtres de convolution, où les poids des filtres représentent les poids des neurones. Ces réseaux sont composés d'une suite d'opérations : convolution, activation (non-linéarité), aggrégation ; qui sont répétées plusieurs fois. On poursuit avec l'exploration de quelques applications de ces réseaux de neurones à convolution, en considérant principalement des tâches de génération d'images : synthèse d'images, synthèse de texture, et transfert de style.
Le module se conclut en discutant des réseaux génératifs antagonistes, qui plutôt que de définir une fonction de perte spécifique (par exemple, la somme des différences au carré entre l'image générée et la « vraie » image), on apprend la fonction de perte. Ceci parmet la génération d'images beaucoup plus réalistes.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Pour voir cette vidéo, svp activez Javascript ou téléchargez un navigateur qui supporte les vidéos HTML5.
Nous suivrons plusieurs chapitres dans le livre suivant:
Szeliski, Richard, "Computer Vision: Algorithms and Applications", Springer, 2010.
Le livre est disponible gratuitement à la bibliothèque de l’université à l'adresse suivante: https://acces.bibl.ulaval.ca/login?url=http://dx.doi.org/10.1007/978-1-84882-935-0. Une fois connecté avec l'IDUL, il y a un lien "Download Book" (environ 50MB).
Plusieurs cours offerts à d’autres universités ont servi d’inspiration pour ce cours. Notamment:
Merci à tous ces professeurs d'avoir mis le contenu de leur cours disponible sur Internet. À mon tour, je donne la permission à tous d'utiliser le contenu présent sur ce cours, à condition bien sûr de citer les sources originales.