Redimensionnement et remplissage d'image pour CNN

14

Je veux former un CNN pour la reconnaissance d'image. Les images pour la formation n'ont pas de taille fixe. Je veux que la taille d'entrée pour le CNN soit 50x100 (hauteur x largeur), par exemple. Lorsque je redimensionne des images de petite taille (par exemple 32x32) à la taille d'entrée, le contenu de l'image est trop étiré horizontalement, mais pour certaines images de taille moyenne, cela semble correct.

Quelle est la méthode appropriée pour redimensionner les images tout en évitant la destruction du contenu?

(Je pense à rembourrer les images avec des 0 pour terminer la taille après les avoir redimensionnées dans une certaine mesure en conservant le rapport de largeur et de hauteur. Est-ce que cela conviendrait à cette méthode?)

Odgiiv
la source

Réponses:

10

Cette question sur stackoverflow pourrait vous aider. Pour résumer, certains chercheurs en apprentissage profond pensent que le rembourrage d'une grande partie de l'image n'est pas une bonne pratique, car le réseau neuronal doit apprendre que la zone rembourrée n'est pas pertinente pour la classification, et il n'a pas à l'apprendre si vous utiliser l'interpolation, par exemple.

David Masip
la source
5

Vous avez quelques options:

Pour les petites images:

  • suréchantillonnage par interpolation
  • remplir l'image à l'aide de zéros

Si vous ne parvenez pas à conserver le rapport hauteur / largeur par suréchantillonnage, vous pouvez suréchantillonner et recadrer également les pixels en excès dans la plus grande dimension. Bien sûr, cela entraînerait la perte de données, mais vous pouvez déplacer à plusieurs reprises le centre de votre recadrage. Cela aiderait votre modèle à être plus robuste.


Pour les grandes images:

  • sous-échantillonner
  • rogner à votre taille d'entrée

Enfin, si vous utilisez un réseau entièrement convolutionnel (FCN), vous n'avez pas besoin de redimensionner vos images.

TL; DR:

oui, le remplissage avec des zéros est une option valide.

Benji Albert
la source
si j'ai des poids formés pour un réseau entièrement convolutionnel qui accepte 3 images vidéo concaténées, comment puis-je utiliser ces poids pour un réseau avec la même architecture, sauf que la taille d'entrée est augmentée à 11 images concaténées? Je fais seulement des prédictions, je ne m'entraîne pas davantage. Ma question est ici: datascience.stackexchange.com/questions/55737/…
mLstudent33
3

Vous pouvez effectuer les opérations suivantes: redimensionner d'abord les images dans une certaine mesure, puis remplir l'image de tous les côtés, ce qui pourrait aider à conserver les fonctionnalités de l'image.

Rohit Jere
la source