TensorFlow a un certain nombre de fonctions pour le redimensionnement.
Quand je l'ai recherché, il y a six fonctions de redimensionnement dans TensorFlow.
Quand je lis le document, l'explication est écrite, mais elle ne sort pas très bien.
J'aimerais donc l'essayer et comprendre visuellement comment cela fonctionne.
En conclusion, tf.image.resize_images incluait les quatre fonctionnalités suivantes:
Donc, je vais essayer seulement les deux suivants.
J'utiliserai Lena avec une taille de 256x256 et un chat avec une taille de 256x170.
Essayons-les un par un.
tf.image.resize_images(images, new_height, new_width, method=0, align_corners=False) resize_images est une fonction qui redimensionne les images à new_height x new_width par la méthode spécifiée.
Un tenseur 4D [lot, hauteur, largeur, canaux] ou un tenseur 3D [hauteur, largeur, canaux] peut être donné comme image d'entrée. Si elle est donnée dans 4D, la conversion par lots des images est possible.
Un tenseur 4D [batch, new_height, new_width, channels] ou un tenseur 3D [new_height, new_width, channels] est renvoyé comme valeur de retour. Cela change en fonction du tenseur d'entrée.
Essayez de réduire l'image à 128x128 avec les paramètres suivants.
tf.image.resize_images(image, 128, 128)
Le résultat est le suivant.
Lena a pu rétrécir sans problème, mais le chat est déformé. De cette façon, ** Si le rapport hauteur / largeur d'origine n'est pas le même que new_width et new_height, l'image redimensionnée sera déformée. ** Pour éviter cela, utilisez resize_image_with_crop_or_pad. J'essaierai plus tard.
La fonction resize_images peut prendre quatre méthodes:
Les résultats d'essayer un par un sont les suivants:
On peut voir que le degré de flou est légèrement différent de l'image d'origine lorsqu'elle est agrandie. Il semble que chacun a ses propres usages.
align_corners Voici une image lorsque align_corners est False et True:
Pour être honnête, je ne comprends pas vraiment la différence, mais il semble que True met à l'échelle l'entrée à (new_height -1) / (height -1), et False le met à l'échelle à new_height / height. En le définissant sur True, il semble que les positions des quatre coins de l'entrée et de la sortie soient alignées avec précision. Je ne sais pas quoi faire pour cela.
tf.image.resize_image_with_crop_or_pad(image, target_height, target_width) La fonction resize_image_with_crop_or_pad est une fonction qui rogne et / ou remplit l'image à la taille spécifiée (target_height x target_width).
Redimensionnez l'image à target_width et target_height en recadrant le centre de l'image ou en remplissant l'image noire.
Si la largeur ou la hauteur est supérieure à la largeur cible ou à la hauteur cible spécifiée, respectivement, recadrez le centre de l'image. Ce qui suit est un cas où une image de chat 256x170 est redimensionnée en spécifiant 128x128 pour target_height et target_width. Vous pouvez voir que le centre de l'image est rogné.
Si la largeur ou la hauteur est inférieure à target_width ou target_height, incorporez une image noire. Ce qui suit est un cas où une image de chat 256x170 est redimensionnée avec target_height et target_width spécifiés comme 196x196. Le centre de l'image est rogné tout en étant rembourré de haut en bas.
En combinant resize_image_with_crop_or_pad et resize_images, vous pouvez réduire l'image avec uniquement un remplissage sans recadrage.
manière