Published · 5 min read

Convolutions vers les chaînes de télévision CNN, depuis les opérations d'array

Dans ces domaines d'application, la convolution est souvent effectuée comme un filtre qui transforme les signaux et les pixels en valeurs plus souhaitables.

Dans l'informatique haute performance, le modèle de convolutions est souvent appelé calcul de stencil. La convulsion implique généralement un nombre important d'opérations arithmétiques sur chaque élément de données. Chaque élément de données de sortie peut être calculé indépendamment les uns des autres, ce qui est souhaitable pour l'informatique parallèle. D'autre part, il existe un niveau substantiel de partage des données d'entrée entre les éléments de données de sortie avec des conditions limites quelque peu difficiles. Cela fait de la convolutions un cas d'utilisation important des méthodes de planchage sophistiquées et des méthodes de mise en phase des données d'entrée.

Convolution est une opération d'un tableau où chaque élément de données de sortie est une somme pondérée d'une collection d'éléments d'entrée voisins. Les poids utilisés dans le calcul de la somme pondérée sont définis par un tableau de masque d'entrée, communément appelé noyau de convolutions. Nous allons parler de ces matrices de masques comme des masques de convolutions. Le même masque de convolutions est généralement utilisé pour tous les éléments du tableau

Vous trouverez ci-dessous un exemple de convulsion pour les données 1D où un tableau de masque de convulsion de 5 éléments M est appliqué à un tableau d'entrée de 7 éléments N.

Pour le traitement d'images et la vision par ordinateur, les données d'entrée sont généralement des matrices bidimensionnelles, avec des pixels dans un espace x-y. Les convolutions d'image sont donc des convolutions 2D. Le masque n'a pas à être carré.


1. De la convulsion 1D à la convulsion 2D

Vous connaissez la convulsion 1D:

  • Entrée: tableau 1D (par exemple, [x0, x1, x2, ...])
  • Le noyau: petit tableau 1D (par exemple, [w0, w1, w2])
  • Opération: glisser le noyau et prendre des sommes pondérées.

Pour les images ****, l' entrée est 2D (hauteur × largeur), donc:

  • Entrée: matrice de pixels, forme H × W
  • Le noyau: petite matrice , par exemple 3 × 3 ou 5 × 5
  • Opération: place le noyau sur chaque patch 3 × 3 de l'image, multiplie l'élément selon la sagesse, somme → un pixel de sortie.

C'est exactement la même idée que vous connaissez déjà, mais:

  • Array → Array 2D (matrice)
  • Éléments voisins → pixels voisins en 2D

2. Plusieurs canaux (p. ex., RGB)

Les images réelles ne sont pas seulement 2D, elles ont souvent des canaux ****:

  • Forme: H × W × C (par exemple, C = 3 pour R, G, B).
  • Alors un noyau **** a aussi une profondeur C:
    • La forme: kH × kW × C.

étape de convulsion:

  • Pour une position, vous prenez un petit cube: kH × kW × C.
  • Multipliez avec le noyau kH × kW × C.
  • Sumer toutes les valeurs → 1 nombre (une valeur de canal de sortie à cet emplacement).

Donc conceptuellement: 3D convolution sur l'espace + canaux, mais encore juste pondéré somme de voisins.


3. Filtres (noyaux) et cartes des caractéristiques

Dans les CNN, vous n'utilisez pas un seul noyau; vous utilisez plusieurs:

  • Supposons que vous utilisiez différents noyaux F .
  • Chaque noyau a une forme kH × kW × C_in.
  • Chaque noyau produit un canal de sortie, appelé une carte des caractéristiques ****.

Donc si la forme d'entrée est:

  • H × W × C_in,

et vous utilisez des noyaux F , la forme de sortie devient:

  • H_out × W_out × F.

Chacun de ces canaux de sortie F capture un type différent de schéma:

  • Un noyau peut apprendre à détecter les bords de ****, un autre coin de ****, une autre textures, etc.

Réfléchissez:
Une couche CNN = appliquer de nombreuses convolutions différentes (filtres) sur l'entrée.


4. Plongée et rembourrage

Deux autres détails liés au tableau:

  • **** jusqu'où vous déplacez le noyau à chaque étape.
    • Étape 1: déplacer 1 pixel à la fois → sortie dense.
    • Pas 2: sautez tous les autres pixels → sorties plus petites.
  • Padding: ajoute des zéros autour de la limite de l'image.
    • Sans rembourrage, la sortie devient plus petite.
    • Avec le rembourrage, vous pouvez garder la même hauteur/largeur.

Mathématiquement, il s'agit toujours de fenêtres coulissantes et de produits dotés, mais avec un contrôle sur:

  • Vous allez jusqu'où ?
  • Si vous perdez des informations sur les frontières (padding).

5. Non linéaire: ajout de fonctions d'activation

Jusqu'à présent, tout est linéaire: sommes pondérées. Une couche CNN ajoute la non-linearité de ****:

  • Après la convulsion, appliquez une fonction d'activation par élément
    (par exemple, ReLU(x) = max(0, x)).

Donc une seule couche de est :

  1. Convolution (sommes pondérées linéaires).
  2. Activation (non linéaire).

Cette combinaison permet aux CNN d'apprendre des cartes complexes et non linéaires.


6. Couches d'empilement → hiérarchies de caractéristiques profondes

Un CNN complet est juste plusieurs couches de:

  • Convolution → activation (→ parfois regroupement).

L'intuition:

  • Les premières couches: détecter des choses simples (bois, taches).
  • Les couches intermédiaires: les combiner en textures, en formes.
  • Les couches ultérieures: combinent les formes en pièces et objets d'objets.

Tout cela est toujours construit à partir du même principe que vous comprenez:
prendre les quartiers locaux et calculer les sommes pondérées.


7. Connexion à des couches entièrement connectées (dense)

Une couche entièrement connectée est aussi une somme pondérée:

  • Entrée: vecteur 1D.
  • Unité de sortie = somme de (poids × entrée) + biais.

La différence:

  • Couche dense: chaque unité de sortie utilise tous les éléments d'entrée .
  • Couche Conv: chaque unité de sortie utilise uniquement un quartier local **** (connectivité spars) et partage des poids entre les positions.

Vous pouvez voir les CNN comme:

  • Une façon intelligente d' utiliser votre opération de convulsion pour obtenir:
    • La localisation (les pixels à proximité comptent davantage).
    • Partage de poids (même noyau dans toutes les positions).
    • Moins de paramètres qu'une couche dense sur des images complètes.

Conclusion: du simple fonctionnement aux réseaux puissants

"At each position, take neighbors and compute a weighted sum with a kernel,"

alors vous êtes déjà debout sur l'idée fondamentale derrière les CNN.

Les CNN prennent ce simple bâtiment et:

  • Élargissez-le des matrices 1D aux tensors 2D/3D.
  • Appliquer de nombreux noyaux différents en parallèle pour produire des cartes de fonctionnalités riches.
  • Ajouter des non-linéaires pour échapper à la ligne pure.
  • Empiler de nombreuses couches de ce type afin que chaque étape soit plus abstraite.

La magie des CNN n'est pas un nouveau type de mathématiques, c'est la composition de nombreuses petites opérations de convolutions locales dans une architecture profonde qui peut apprendre des représentations visuelles puissantes.

Prêt à recruter avec précision ?

Commencez gratuitement, invitez toute votre équipe et voyez votre premier candidat noté en 15 minutes.

fr