Les réseaux de neurones convolutionnels sont montrés comme étant plus adaptés pour de grandes images car nécessitant moins de paramètres.
Pourtant, à la fin d'un CNN il y a bien une ou plusieurs couches denses.
Dans le Notebook MNIST 2, quand on affiche le résumé du modèle, on voit à l'étape "flatten" qu'on obtient une image de 400 pixels en tout, qu'on utilise en entrée de la partie "dense".
De base les images faisaient 28 * 28 = 784 pixels. On a quasiment divisé par deux la taille des images en entrée de la partie dense et c'est bien mais pas tant que ça je trouve. Et c'est vraiment parce qu'on a décidé d'avoir un padding "valid" car avec un padding "same" on aurait à la fin 16 couches d'images 7*7 soit... 784 pixels à nouveau.
Mais du coup on a pas diminué le nombre de paramètres ! On en a même plus.
Ma question porte sur le cas général, avec vraiment de grandes images et la nécessité de conserver un nombre de paramètres bas.
Comment fait-on ?
J'ai l'impression que là on a un peu un cas particulier car si j'ai bien compris, le pooling divise la taille des images par 4, et chaque nouvelle "couche" convolutionnelle double le nombre de kernels et donc de "canaux" à l'image.
On utilise de base 8 kernels donc on a après cette étape 8 fois plus de pixels.
Pooling on divise par 4 : on a 2 fois plus de pixels.
On double le nombre de kernels : on a 4 fois plus de pixels
Pooling on divise par 4 : on a autant de pixels qu'au départ....
Est ce que dans le cas général on conserve le nombre de kernels de départ, mais on rajoute plus de couches convolutionnels (et donc d'étapes de pooling (qui divisent par 4) alors que les kernels ne font que doubler à chaque étape) pour finalement diminuer le nombre de pixels en entrée de la partie dense ?
Lorsque l'on souhaite traiter des images sensiblement plus grandes, est-ce que l'on diminue grandement la taille (via des pooling) mais sans compenser totalement avec la "profondeur" (en ajoutant 2 fois plus de neurones convolutionnels) ?