L'idée d'appliquer des filtres pour faire quelque chose comme identifier les bords, est une idée plutôt cool.
Par exemple, vous pouvez prendre une image d'un 7. Avec certains filtres, vous pouvez vous retrouver avec des images transformées qui mettent en valeur différentes caractéristiques de l'image d'origine. L'original 7:
peut être vécu par le réseau comme:
Remarquez comment chaque image a extrait un bord différent de l'original 7.
Tout cela est très bien, mais disons que la couche suivante de votre réseau est une couche Max Pooling.
Ma question est, en général, cela ne semble-t-il pas un peu exagéré? Nous avons simplement été très prudents et délibérés avec l'identification des bords à l'aide de filtres - maintenant, nous ne nous soucions plus de rien, car nous avons foutu le bord des valeurs de pixels! Veuillez me corriger si je me trompe, mais nous sommes passés de 25 X 25 à 2 X 2! Pourquoi ne pas simplement aller directement à Max Pooling, ne finirons-nous pas par la même chose?
Dans le prolongement de ma question, je ne peux m'empêcher de me demander ce qui se passerait si, par coïncidence, chacun des 4 carrés avait juste un pixel avec la même valeur maximale. Ce n'est sûrement pas un cas rare, non? Soudain, toutes vos images d'entraînement se ressemblent exactement.
la source
The pooling operation provides a form of translation invariance
?La convolution consiste essentiellement à filtrer l'image avec un filtre de pixels plus petit pour réduire la taille de l'image sans perdre la relation entre les pixels (paramètres du réseau), le regroupement réduit également la taille spatiale en extrayant Max, Avg ou Sum des pixels à la taille du filtre, cependant, il peut manquer un paramètre important dans le processus que la convolution ré-atteindre en ne réduisant pas la taille de manière significative.
la source