web-dev-qa-db-fra.com

CNN - Redimensionnement d'image VS Padding (en gardant le rapport d'aspect ou non?)

Alors que généralement, les gens ont tendance à simplement redimensionner n'importe quelle image dans un carré pendant la formation d'un CNN (par exemple, resnet prend une image carrée de 224x224), cela me semble laid, surtout lorsque le rapport d'aspect n'est pas autour de 1.

(En fait, cela pourrait changer la vérité du terrain, par exemple l'étiquette qu'un expert pourrait donner à l'image déformée pourrait être différente de celle d'origine).

Alors maintenant, je redimensionne l'image à, disons, 224x160, en gardant le rapport d'origine, puis je remplis l'image avec 0s (collez-la dans un emplacement aléatoire dans une image 224x224 totalement noire).

Mon approche ne me semble pas originale, et pourtant je ne trouve aucune information sur mon approche par rapport à l'approche "habituelle". Froussard!

Alors, quelle approche est la meilleure? Pourquoi? (Si la réponse dépend des données, veuillez partager votre réflexion sur le moment où l'un est préférable à l'autre.)

19
Yoni Keren

Selon Jeremy Howard , le remplissage d'un gros morceau de l'image (64x160 pixels) aura l'effet suivant: Le CNN devra apprendre que la partie noire de l'image n'est pas pertinente et n'aide pas à distinguer entre les classes (dans un cadre de classification), car il n'y a pas de corrélation entre les pixels de la partie noire et appartenant à une classe donnée. Comme vous ne codez pas dur, le CNN devra l'apprendre par descente de gradient, ce qui pourrait probablement prendre quelques époques. Pour cette raison, vous pouvez le faire si vous avez beaucoup d'images et de puissance de calcul, mais si vous avez un budget pour l'une d'entre elles, le redimensionnement devrait mieux fonctionner.

17
David Masip