Maison / Technologie / Vision par ordinateur pour les développeurs occupés: Convolutions

Vision par ordinateur pour les développeurs occupés: Convolutions

Suivre
( 0 Abonné(e)s )
X

Suivre

E-mail : *

Vision par ordinateur pour les développeurs occupés

Convolutions

Cet article fait partie d’une série présentant aux développeurs la Vision par ordinateur. Check-out autres articles dans cette série.

Vision par ordinateur pour les développeurs occupés: Convolutions 0 yVYBhyMeecug uPB
photo par Shawn Fields sur Unsplash

Convolutions et Noyaux

Quand on a discuté Traitement d’image, nous avons analysé un seul pixel à la fois et l’avons manipulé (multiplié / soustrait) par rapport à une valeur constante. Nous avons ensuite tenté de trouver des objets basés sur un modèle image – qui consiste à comparer un groupe de pixels d’une fenêtre glissante à un groupe constant de pixels de l’image modèle. Nous allons maintenant explorer l’espace entre les deux. Nous examinerons les relations des pixels adjacents dans une zone d’une image. Nous allons analyser les images sur la base d’un groupe plus petit de pixels constants. Le petit groupe de pixels est une petite image 3×3 ou 5×5 appelée Noyau représenté par une matrice simple. Considérez cette approche comme utilisant un très petit modèle d’image de 3×3 ou 5×5 pixels, par opposition à un modèle d’image plus grand. Par exemple, le modèle Moon que nous avons utilisé précédemment faisait 226×213 pixels de large.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 jtwjopLCJWljXIFDkRAGtg
Pensez à un noyau comme une image modèle beaucoup plus petite qui fait 3×3 pixels de large (image source du modèle: Samer Daboul)

Nous allons explorer une technique extrêmement importante en vision par ordinateur. Cette technique fondamentale est connue sous le nom de convolution. UNE convolution se fait en multipliant un pixel et les valeurs de couleur du pixel voisin par un noyau utilisant une fenêtre glissante. Convolutions and Kernels manipule les pixels non seulement en fonction de la valeur du pixel lui-même, mais en fonction des pixels situés à proximité immédiate d’un pixel particulier (parfois appelé Pixels connectés ou Voisins). Une convolution est juste un autre type d’image Filtre et lorsque vous lisez sur ces sujets, ces termes sont souvent utilisés de manière interchangeable.

Brouiller

Nous allons d’abord examiner quelques convolutions de noyau populaires pour rendre les images floues. le Flou de boîte (appelé parfois flou moyen ou moyen), examine chaque pixel d’une image et remplace sa valeur par la valeur moyenne de tous ses pixels environnants. Dans notre exemple, nous allons utiliser un simple noyau matriciel 3×3 où toutes les valeurs sont 1. Le noyau box blur:

(1, 1, 1)
(1, 1, 1)
(1, 1, 1)

Bien que le noyau ci-dessus soit incroyablement simple, il va nous aider à comprendre le fonctionnement des convolutions. Dans cette convolution, les valeurs de la matrice étant toutes égales à 1, le résultat de chaque fenêtre est la valeur moyenne du pixel central et de ses voisins. Comme nous utilisons une fenêtre glissante, nous ne pouvons pas mettre à jour la valeur de pixel en ligne (sinon, cela aurait un impact sur la prochaine fois que la fenêtre se déplace). Nous mettons à jour une nouvelle image avec la valeur moyenne à la position correspondant au centre du noyau.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 ptkQvYLjOrXXvP7BrKG0lA
The Box Blur est un exemple de convolution. Il utilise une fenêtre glissante de la taille du noyau pour calculer la moyenne d’un voisinage de pixels.

En utilisant une fenêtre glissante, la convolution traitera tous les pixels de l’image. Une fois la convolution terminée, notre nouvelle image apparaîtra floue.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 PzSEqByMOkM XfwYPGwrDg
Les convolutions génèrent une nouvelle image une fois la fenêtre glissante terminée

Dans l’animation ci-dessus, remarquez les pixels avec les valeurs de 8 et 9. Ces deux pixels, en particulier, sont plus éloignés que tous les autres pixels des images. Ces pixels se distinguent du reste des pixels. Après la convolution, ces valeurs de pixel sont remplacées par 109 et 95, ce qui aligne davantage ces valeurs sur les voisins.

NOTE LATÉRALE: L’animation montre également que les pixels les plus proches des bords ne sont pas calculés dans la convolution. J’ai vu des exemples traitant de ces pixels de bordure de trois manières différentes. Les pixels peuvent être ignorés, ils peuvent être reportés de l’original ou une moyenne des pixels disponibles peut être calculée.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 DUut28QltnpM2d3MAQQhGw
Source de l’image originale: Simon Migaj

Comme nous pouvons le voir ci-dessus, le flou de la boîte a pour effet de «lisser» l’image en faisant en sorte que les pixels ressemblent davantage à leurs voisins, ce qui donne une image floue.

Flou gaussien

Un autre noyau flou qui mérite d’être discuté est le noyau Gaussian Blur. Au lieu d’une moyenne directe de toutes les valeurs entourant le pixel, nous attribuons un poids différent à chacun des pixels du noyau. Nous donnons la priorité la plus élevée au pixel central et les pixels les plus éloignés du centre la moins prioritaire. En conséquence, les flous utilisant un noyau gaussien ont tendance à apparaître moins «Boxy». Voici un exemple de noyau gaussien 3×3 simple et facile à lire:

(1, 2, 1)
(2, 4, 2)
(1, 2, 1)

La convolution d’un noyau gaussien est identique à celle du noyau Box Blur. Imaginez que la zone floue divise la somme des valeurs du noyau, ce qui donne un total de 9. Dans le noyau gaussien illustré ci-dessus, la somme des valeurs du noyau est 16.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 t3FyQ5PyBzc4mWQGvxO1Wg
La convolution gaussienne est identique au Box Blur – nous utilisons simplement un ensemble différent de valeurs du noyau
Vision par ordinateur pour les développeurs occupés: Convolutions 1 5ELk4MmHhAphpSa eUBe4A
À titre de comparaison, voici les résultats d’un flou gaussien et d’un flou gaussien. (Source de l’image originale: Carlos Spitzer )

Pour un exercice de visualisation rapide, comparons également l’aspect que doivent avoir les noyaux Flou Box et Flou Gaussien si nous les traçons dans un graphique 2D.

Vision par ordinateur pour les développeurs occupés: Convolutions 1 rkGNQ2PKvG2PFI4c1wew5g
Les valeurs de Box Blur et Gaussian Blur sont représentées graphiquement en 2D – nous pouvons voir comment Box Blur tire son nom et comment le flou gaussien donne la priorité aux pixels centraux.

Le noyau gaussien illustré ci-dessus est un noyau très simple avec des nombres entiers simples. Les poids spécifiques d’un noyau gaussien peuvent être calculés en fonction de la taille (la largeur de la courbe) et de la force (la hauteur de la courbe) du noyau. Bien que le calcul spécifique permettant d’atteindre la taille et les valeurs d’un noyau gaussien dépasse un peu l’intention de ces articles, il est important de souligner que les calculs du noyau gaussien dépendent de la valeur sigma – un nombre qui décrit la régularité de la courbe gaussienne (écart-type, pour les nerds mathématiques). C’est-à-dire que le sigma représente la relation entre les nombres situés au centre du noyau et aux bords du noyau. Nous reviendrons sur l’importance de sigma lorsque nous discuterons de la Différences de gaussien détecteur de fonctionnalité plus tard. Pour l’instant, considérons que le sigma représentera le degré de lissage d’une image par le noyau gaussien. Plus le sigma est grand, plus le flou est intense.

Autres noyaux

Il existe de nombreux noyaux différents qui sont utilisés dans les convolutions. Un autre noyau populaire est un noyau de netteté qui augmente le contraste entre les pixels adjacents – exactement le contraire des flous que nous avons examinés dans cet article.

Convolutions et Noyaux apparaissent souvent en matière de vision par ordinateur. Plus tard dans la série, nous reviendrons sur les convolutions lorsque nous aborderons des techniques d’apprentissage automatique telles que les réseaux de neurones convolutionnels. Dans le prochain article, nous utiliserons des convolutions pour trouver des contours dans des images.

NOTE LATÉRALE: Les lecteurs qui sont familiers avec Convolutions remarqueront que nous avons plongé directement dans les convolutions 2D. Cette décision a été prise pour inciter les lecteurs à considérer les noyaux comme de minuscules images et pour établir des parallèles avec d’autres sujets déjà abordés, tels que les modèles. En suivant cette voie, les développeurs qui souhaitent implémenter des convolutions doivent absolument se pencher sur les convolutions 1D. Il existe des cas où les convolutions 2D peuvent être divisées en deux algorithmes d’optimisation des convolutions 1D distincts pour la vitesse.

TLDR

Les convolutions sont un processus dans lequel nous opérons sur des pixels basés sur le pixel lui-même et ses voisins en utilisant la technique de la fenêtre glissante. Nous utilisons des noyaux pour définir les valeurs utilisées dans les convolutions. Les flous Box et Gaussian sont des exemples de convolutions que nous avons explorées. Les flous Box et Gaussian font que chaque pixel ressemble davantage à ses voisins, ce qui entraîne un «lissage» des pixels et rend l’apparence de l’image plus floue.

Sources et plus d’infos

  • Les noyaux d’image expliqués visuellement – Article de Victor Powerll
  • Convolution de l’image – Conférence de Jamie Ludwing
  • Lissage– Conférence de Robert Collins
  • Comment fonctionnent les flous et les filtres– Vidéo de Computerphile
  • Flou de boîte– Wikipédia
  • Flou gaussien– Wikipédia

https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/hrefVision par ordinateur pour les développeurs occupés: Convolutions stat event post


Vision par ordinateur pour les développeurs occupés: Convolutionsa été publié à l’origine dans Hacker midisur Medium, où les gens poursuivent la conversation en soulignant et en répondant à cette histoire.

Source

A propos newstrotteur-fr

Découvrez également

Des AirPod incrustés de diamants avec un support en marbre peuvent vous coûter 20 000 $ delucca 310x165

Des AirPod incrustés de diamants avec un support en marbre peuvent vous coûter 20 000 $

Suivre ( 0 Abonné(e)s ) X Suivre E-mail : * Suivre Ne plus suivre Écouteurs …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *