J'ai récemment lu des réseaux entièrement convolutionnels pour la segmentation sémantique par Jonathan Long, Evan Shelhamer et Trevor Darrell. Je ne comprends pas ce que font les "couches déconvolutionnelles" / comment elles fonctionnent.
La partie pertinente est
3.3. L'échantillonnage est une convolution à pas en arrière
L'interpolation est un autre moyen de connecter des sorties grossières à des pixels denses. Par exemple, une simple interpolation bilinéaire calcule chaque sortie partir des quatre entrées les plus proches par une carte linéaire qui ne dépend que des positions relatives des cellules d’entrée et de sortie. En un sens, le suréchantillonnage avec le facteur f est une convolution avec une foulée d'entrée fractionnaire de 1 / f. Tant que f est intégral, un moyen naturel de suréchantillonner est donc la convolution vers l’arrière (parfois appelée déconvolution) avec une foulée de sortie de f . Une telle opération est triviale à mettre en oeuvre, car elle inverse simplement les passes de convolution aller et retour.
Ainsi, le suréchantillonnage est effectué sur le réseau pour un apprentissage de bout en bout par rétrodiffusion à partir de la perte au niveau des pixels.
Il est à noter que le filtre de déconvolution dans une telle couche n'a pas besoin d'être fixé (par exemple, pour un suréchantillonnage bilinéaire), mais peut être appris. Une pile de couches de déconvolution et de fonctions d’activation peut même apprendre un échantillonnage croissant non linéaire.
Dans nos expériences, nous avons constaté que l'échantillonnage sur réseau est rapide et efficace pour l'apprentissage de la prédiction dense. Notre meilleure architecture de segmentation utilise ces couches pour apprendre à suréchantillonner pour une prédiction plus précise dans la section 4.2.
Je ne pense pas avoir vraiment compris comment les couches convolutives sont formées.
Ce que je pense avoir compris, c’est que les couches convolutives de taille apprennent des filtres de taille k × k . La sortie d’une couche convolutive de taille k , k , stride s ∈ N et n filtres est de dimension Input dim . Cependant, je ne sais pas comment fonctionne l'apprentissage des couches convolutives. (Je comprends comment des MLP simples apprennent avec une descente de gradient, si cela peut aider).
Donc, si ma compréhension des couches convolutives est correcte, je ne sais pas comment cela peut être inversé.
Quelqu'un pourrait-il m'aider à comprendre les couches déconvolutionnelles?