Les images contiennent de nombreuses informations importantes. Si elles sont faciles Ă dĂ©celer pour nos yeux habituĂ©s, elles reprĂ©sentent un vrai challenge en analyse de donnĂ©es. Lâensemble de ces techniques est connu sous le nom dâ« image processing » ou traitement dâimage. Dans cet article, vous dĂ©couvrirez les algorithmes, techniques et outils classiques permettant de traiter les donnĂ©es sous forme dâimages.
Qu'est-ce que lâimage processing ?
Comme son nom l’indique, le traitement d’image consiste Ă traiter des images, ce qui peut inclure de nombreuses techniques diffĂ©rentes, et le rĂ©sultat final peut se prĂ©senter sous la forme d’une autre image, dâune variation ou simplement d’un paramĂštre de cette image. Ce rĂ©sultat peut ensuite ĂȘtre utilisĂ© pour une analyse plus approfondie ou une prise de dĂ©cision.
Il s’agit de la partie centrale de la vision par ordinateur (ou « computer vision ») qui joue un rĂŽle crucial dans de nombreux exemples du monde rĂ©el comme la robotique, les voitures autonomes et la dĂ©tection d’objets. Le traitement d’images nous permet de transformer et de manipuler des milliers d’images Ă la fois et d’en extraire des informations utiles.Â
Mais qu'est-ce qu'un image ?
Une image peut ĂȘtre reprĂ©sentĂ©e comme une fonction en 2D F(x,y) oĂč x et y sont des coordonnĂ©es spatiales. Il s’agit donc d’un tableau de pixels disposĂ©s en colonnes et en rangĂ©es. La valeur de F en un point x,y est connue comme l’intensitĂ© d’une image Ă ce point. Si x, y et la valeur de l’amplitude sont finis, on parle d’image numĂ©rique.Â
Une image peut Ă©galement ĂȘtre reprĂ©sentĂ©e en 3D dont les coordonnĂ©es sont x, y et z. Les pixels sont alors disposĂ©s sous la forme d’une matrice. C’est ce qu’on appelle une image RVB (ou RGB en anglais). Si lâimage est en niveaux de gris, il nây a quâun seul canal : z = 1.
Techniques classiques dâimage processing
Historiquement, les images Ă©taient traitĂ©es avec des mĂ©thodes dâanalyse mathĂ©matique, nous allons en prĂ©senter quelques-unes ci-dessous :
- Le flou gaussien, ou lissage gaussien, est le rĂ©sultat de lâapplication sur une image, câest-Ă -dire sur une matrice telle que dĂ©fini ci-dessus, dâune fonction gaussienne. Il est utilisĂ© pour rĂ©duire le bruit de l’image et attĂ©nuer les dĂ©tails. L’effet visuel de cette technique de flou est similaire Ă celui de regarder une image Ă travers un Ă©cran translucide. Elle est parfois utilisĂ©e comme technique dâaugmentation de donnĂ©es pour du deep learning dont nous parlerons plus en dĂ©tail ci-dessous.
- La transformĂ©e de Fourier dĂ©compose une image en composantes sinus et cosinus. Elle a de multiples applications comme la reconstruction d’images, la compression d’images ou le filtrage d’images. Puisque nous parlons d’images, nous allons prendre en considĂ©ration la transformĂ©e de Fourier discrĂšte.
Considérons une sinusoïde, elle est composée de trois éléments :
- L’amplitude – liĂ©e au contrasteÂ
- La frĂ©quence spatiale – liĂ©e Ă la luminositĂ©
- La phase – liĂ©e Ă l’information sur la couleur
La dĂ©tection des contours est une technique de traitement d’image permettant de trouver les limites des objets dans les images, elle fonctionne en dĂ©tectant les discontinuitĂ©s de la luminositĂ©. Plus prĂ©cisĂ©ment, les bords sont dĂ©finis comme les maxima locaux du gradient de lâimage, câest-Ă -dire les zones oĂč il y a une grande variation de valeurs entre deux zones de pixels. L’algorithme de dĂ©tection des contours le plus courant est celui de Sobel.
Image Processing avec des réseaux de neurones
Lâapparition des rĂ©seaux de neurones et des puissances de calcul accrues a permis de rĂ©volutionner le traitement dâimage. En particulier, les rĂ©seaux de convolution qui sâinspirent des techniques citĂ©es prĂ©cĂ©demment excellent dans la dĂ©tection et la reconnaissance dâobjets ou de personnes. Comment fonctionnent-ils ?Â
Un réseau neuronal convolutif, ou CNN en abrégé, comporte trois types de couches principales :
- La couche convolutionnelle (CONV) : Elle est responsable de l’exĂ©cution de l’opĂ©ration de convolution. L’Ă©lĂ©ment impliquĂ© dans l’exĂ©cution de l’opĂ©ration de convolution est appelĂ© le noyau/filtre (matrice). Le noyau effectue des dĂ©calages horizontaux et verticaux jusqu’Ă ce que l’image entiĂšre soit traversĂ©e. Son fonctionnement est similaire Ă la technique de dĂ©tection des contours.
- Couche de mise en commun (POOL) : Cette couche est responsable de la rĂ©duction de la dimensionnalitĂ©. Elle permet de diminuer la puissance de calcul nĂ©cessaire au traitement des donnĂ©es. Il existe deux types de mise en commun : La mise en commun maximale et la mise en commun moyenne. La mise en commun maximale renvoie la valeur maximale de la zone couverte par le noyau sur l’image. La mise en commun moyenne renvoie la moyenne de toutes les valeurs de la partie de l’image couverte par le noyau.
- Couche entiĂšrement connectĂ©e (FC) : La couche entiĂšrement connectĂ©e (FC) est prĂ©sente Ă la fin des architectures CNN. Elle est similaire Ă une couche traditionnelle de rĂ©seaux de neurones et permet, aprĂšs application dâune fonction dâactivation, de renvoyer la sortie attendue par le rĂ©seau, par exemple une classification.
Lâajout de fonctions non linĂ©aires (« RELU ») au sein des rĂ©seaux ou dâarchitectures spĂ©cifiques permettent de rĂ©pondre Ă des problĂ©matiques plus complexes. Les exemples sont nombreux : DenseNet, U-Net, VGGâŠ
Generative Adversarial Networks
Les donnĂ©es labellisĂ©es Ă©tant parfois trop peu nombreuses pour lâentraĂźnement de rĂ©seaux complexes, les modĂšles gĂ©nĂ©ratifs dits GAN pour Generative Adversarial Networks sont particuliĂšrement utilisĂ©s aujourdâhui.
Les GANs sont composĂ©s de deux modĂšles : Generator et Discriminator. Le gĂ©nĂ©rateur apprend Ă crĂ©er de fausses images qui semblent rĂ©alistes afin de tromper le discriminateur et le discriminateur apprend Ă distinguer les fausses images des vraies.Â
Le gĂ©nĂ©rateur n’est pas autorisĂ© Ă voir les images rĂ©elles, il peut donc produire de mauvais rĂ©sultats dans la phase de dĂ©marrage, tandis que le discriminateur est autorisĂ© Ă voir les images rĂ©elles, mais elles sont mĂ©langĂ©es avec les images fausses produites par le gĂ©nĂ©rateur, qu’il doit classer comme rĂ©elles ou fausses.
Un certain bruit est introduit dans le gĂ©nĂ©rateur afin qu’il soit capable de produire des exemples diffĂ©rents Ă chaque fois et non le mĂȘme type d’image. Sur la base des scores prĂ©dits par le discriminateur, le gĂ©nĂ©rateur essaie d’amĂ©liorer ses rĂ©sultats. AprĂšs un certain temps, le gĂ©nĂ©rateur sera capable de produire des images qui seront plus difficiles Ă distinguer. Le discriminateur s’amĂ©liore Ă©galement car il obtient du gĂ©nĂ©rateur des images de plus en plus rĂ©alistes Ă chaque tour.
Les types de GAN les plus populaires sont les GAN convolutifs profonds (DCGAN), les GAN conditionnels (cGAN), les StyleGAN, CycleGAN etc.
Les GANs sont parfaits pour la gĂ©nĂ©ration et la manipulation d’images : vieillissement du visage, mĂ©lange de photos, super rĂ©solution, peinture de photos, traduction de vĂȘtements.
Conclusion
Il existe beaucoup de techniques dâimage processing, et comme dans beaucoup de cas aujourdâhui, les rĂ©seaux de neurones permettent dâobtenir beaucoup dâinformations et des conclusions trĂšs prĂ©cises. Python est le langage de prĂ©dilection pour ce genre de tĂąches, avec des outils comme OpenCv, Scikit Image, Tensorflow ou Pytorch.Â
Les formations dispensĂ©es par DataScientest proposent de nombreux outils pour apprendre Ă traiter les donnĂ©es sous forme dâimage et Ă utiliser les rĂ©seaux de neurones les plus complexes.Â