Jétudiais une littérature relative aux réseaux entièrement convolutifs et je suis tombé sur la phrase suivante ,
Un réseau entièrement convolutif est obtenu en remplaçant les couches entièrement connectées riches en paramètres dans les architectures CNN standard par des couches convolutives avec $ 1 \ times 1 $ noyaux.
Jai deux questions.
-
Quentend-on par riche en paramètres ? Est-ce quon appelle cela riche en paramètres parce que les couches entièrement connectées transmettent des paramètres sans aucune sorte de réduction «spatiale»?
-
De plus, comment fonctionnent les noyaux $ 1 \ times 1 $ ? Le noyau « t $ 1 \ times 1 $ ne signifie-t-il pas simplement que lon glisse un pixel sur limage? Je suis confus à ce sujet.
Réponse
Réseaux à convolution complète
A réseau à convolution complète (FCN) est un réseau neuronal qui neffectue que des opérations de convolution (et de sous-échantillonnage ou de suréchantillonnage). De manière équivalente, un FCN est un CNN sans couches entièrement connectées.
Réseaux de neurones à convolution
Le réseau de neurones à convolution (CNN) typique nest pas entièrement convolutif car contient souvent des couches entièrement connectées (qui neffectuent pas lopération de convolution), qui sont riches en paramètres , en ce sens quelles ont de nombreux paramètres (par rapport à leur convolution équivalente couches), bien que les couches entièrement connectées puissent également être vues comme des convolutions avec ker nels qui couvrent toutes les régions dentrée , ce qui est lidée principale de la conversion dun CNN en FCN. Regardez cette vidéo dAndrew Ng qui explique comment convertir une couche entièrement connectée en couche convolutive.
Un exemple de FCN
Un exemple de réseau entièrement convolutif est le U-net (appelé de cette manière en raison de sa forme en U, que vous pouvez voir sur lillustration ci-dessous), qui est un célèbre réseau utilisé pour la sémantique segmentation , cest-à-dire classer les pixels dune image de sorte que les pixels appartenant à la même classe (par exemple une personne) soient associés au même libellé (cest-à-dire personne), cest-à-dire par pixel ( ou dense).
Segmentation sémantique
Ainsi, dans la segmentation sémantique, vous voulez associer une étiquette à chaque pixel (ou petit patch de pixels) de limage dentrée. Voici « une illustration plus suggestive dun réseau de neurones qui effectue une segmentation sémantique.
Segmentation dinstance
Il existe également segmentation dinstance , où vous souhaitez également différencier différentes instances de la même classe (par exemple, vous souhaitez distinguer deux personnes dans la même image en les étiquetant différemment). Un exemple de réseau neuronal utilisé pour la segmentation dinstances est mask R-CNN . Le billet de blog Segmentation: U-Net, Mask R-CNN et Medical Applications (2020) de Rachel Draelos décrit très bien ces deux problèmes et réseaux.
Voici un exemple dimage où les instances de la même classe (cest-à-dire personne) ont été étiquetées différemment (orange et bleu).
Les segmentations sémantiques et dinstances sont des tâches de classification denses (en particulier, elles dans la catégorie segmentation dimage ), cest-à-dire que vous souhaitez classer chaque pixel ou plusieurs petites parcelles de pixels dune image.
$ 1 \ times 1 $ convolutions
Dans le diagramme U-net ci-dessus, vous pouvez voir quil ny a que des convolutions, copie et recadrage, max- opérations de regroupement et de suréchantillonnage. Il ny a pas de couches entièrement connectées.
Alors, comment associer une étiquette à chaque pixel (ou un petit patch de p ixels) de lentrée? Comment pouvons-nous effectuer la classification de chaque pixel (ou patch) sans une couche finale entièrement connectée?
Cest là que le $ 1 \ times 1 $ les opérations de convolution et de suréchantillonnage sont utiles!
Dans le cas du diagramme U-net ci-dessus (en particulier, la partie supérieure droite du diagramme, qui est illustrée ci-dessous pour plus de clarté), deux $ 1 \ times 1 \ times 64 $ les noyaux sont appliqués au volume dentrée (pas aux images!) pour produire deux cartes dentités de taille 388 $ \ times 388 $ . Ils ont utilisé deux noyaux $ 1 \ times 1 $ car il y avait deux classes dans leurs expériences (cell et non-cell). Le billet de blog mentionné vous donne également lintuition derrière cela, vous devriez donc le lire.
Si vous avez essayé danalyser attentivement le diagramme U-net, vous remarquerez que la sortie correspond ont des dimensions spatiales (hauteur et poids) différentes de celles des images dentrée, qui ont des dimensions 572 $ \ times 572 \ times 1 $ .
Cest « s très bien car notre objectif général est deffectuer une classification dense (cest-à-dire classer les correctifs de limage, où les correctifs ne peuvent contenir quun seul pixel ), même si jai dit que nous aurions effectué une classification par pixel, vous vous attendiez peut-être à ce que les sorties aient les mêmes dimensions spatiales exactes que les entrées. Cependant, notez que, dans la pratique, vous pourriez également avoir la même dimension spatiale que les entrées: vous ne pour effectuer une autre opération de suréchantillonnage (déconvolution).
Comment fonctionnent les $ 1 \ times 1 $ convolutions?
A $ 1 \ times 1 $ la convolution est juste la convolution 2d typique mais avec un noyau $ 1 \ times1 $ .
Comme vous le savez probablement déjà (et si vous ne le saviez pas, maintenant vous le savez), si vous avez un $ g \ times g $ noyau appliqué à une entrée de taille $ h \ times w \ times d $ , où $ d $ est la profondeur du volume dentrée (qui, par exemple, dans le cas dimages en niveaux de gris, cest $ 1 $ ), le noyau a en fait la forme $ g \ times g \ times d $ , cest-à-dire que la troisième dimension du noyau est égale à la troisième dimension de lentrée à laquelle elle est appliquée. Cest toujours le cas, sauf pour les convolutions 3d, mais nous parlons maintenant des convolutions 2d typiques! Voir cette réponse pour plus dinformations.
Donc, dans le cas où nous voulons appliquer un $ 1 \ times 1 $ convolution en une entrée de forme 388 $ \ times 388 \ times 64 $ , où 64 $ $ est la profondeur de lentrée, alors les noyaux $ 1 \ times 1 $ que nous devrons utiliser ont la forme 1 $ \ fois 1 \ fois 64 $ (comme je lai dit plus haut pour le U-net). La façon dont vous réduisez la profondeur de lentrée avec $ 1 \ times 1 $ est déterminée par le nombre de 1 $ \ fois 1 $ les noyaux que vous souhaitez utiliser. Cest exactement la même chose que pour toute opération de convolution 2d avec différents noyaux (par exemple $ 3 \ times 3 $ ).
Dans le cas du U-net, les dimensions spatiales de lentrée sont réduites de la même manière que les dimensions spatiales de toute entrée dun CNN sont réduites (c.-à-d. Convolution 2d suivie dopérations de sous-échantillonnage). La principale différence (hormis le fait de ne pas utiliser de couches entièrement connectées) entre le U-net et les autres CNN est que le U-net effectue des opérations de suréchantillonnage, de sorte quil peut être considéré comme un encodeur (partie gauche) suivi dun décodeur (partie droite) .
Commentaires
- Merci pour votre réponse détaillée, je lapprécie vraiment!