[PYTHON] Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.

introduction

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. スクリーンショット 2016-09-06 11.17.15.png

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 d'abord de réduire

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. スクリーンショット 2016-09-06 11.21.07.png

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.

Essayez de changer la méthode

La fonction resize_images peut prendre quatre méthodes:

Les résultats d'essayer un par un sont les suivants: スクリーンショット 2016-09-06 12.08.59.png

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: スクリーンショット 2016-09-06 13.20.00.png

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é. スクリーンショット 2016-09-06 13.53.39.png

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. スクリーンショット 2016-09-06 13.57.54.png

prime

En combinant resize_image_with_crop_or_pad et resize_images, vous pouvez réduire l'image avec uniquement un remplissage sans recadrage. test.jpg

manière

  1. Obtenez la taille de l'image
  2. Spécifiez la taille du côté long dans target_height et target_width de la fonction resize_image_with_crop_or_pad.
  3. Réduisez l'image remplie avec resize_images

référence

TensorFlow/image

Recommended Posts

Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
Je n'ai pas compris le comportement d'argsort de numpy, donc je vais le résumer
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
L'arbre.plot_tree de scikit-learn était très simple et pratique, j'ai donc essayé de résumer comment l'utiliser facilement.
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé de résumer la commande umask
J'ai essayé de résumer la modélisation graphique.
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
J'ai essayé de résumer la manière logique de penser l'orientation objet.
J'ai essayé de corriger la forme trapézoïdale de l'image
LeetCode j'ai essayé de résumer les plus simples
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de résumer les paramètres des différentes bases de données de Django (MySQL, PostgreSQL)
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
Je veux bien comprendre les bases de Bokeh
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
[Rails] v1.0 est sorti sur google-cloud-vision de gem, j'ai donc essayé de le soutenir
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
[Introduction] J'ai essayé de l'implémenter moi-même tout en expliquant pour comprendre la dichotomie
J'ai essayé de faciliter la modification du paramètre du proxy authentifié sur Jupyter
J'ai essayé d'utiliser l'apprentissage en profondeur pour extraire la partie où la plante est montrée de la photo de la véranda, mais cela n'a pas fonctionné, je vais donc résumer le contenu des essais et erreurs. Partie 2
Ne lisez pas la documentation officielle tant que je n'ai pas compris les fichiers statiques de Django
Je n'ai pas compris le comportement d'argsort de numpy, donc je vais le résumer
Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
Qu'est-ce que Django? .. ..
J'ai pensé "Qu'est-ce que Linux?", Alors je l'ai recherché.
J'ai essayé de trouver l'entropie de l'image avec python
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
[Première API COTOHA] J'ai essayé de résumer l'ancienne histoire
J'ai essayé de refactoriser le modèle CNN de TensorFlow en utilisant TF-Slim
J'ai essayé de résumer le code souvent utilisé dans Pandas
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Je l'ai écrit en langage Go pour comprendre le principe SOLID
Le livre de PyTorch était difficile à comprendre, alors je l'ai complété
J'ai essayé de résumer les commandes souvent utilisées en entreprise
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
Je veux connaître la légende du monde des technologies informatiques
J'ai essayé de résumer comment utiliser à nouveau le référentiel EPEL
J'ai examiné les traits du visage de Yuki Kashiwagi pour comprendre TensorFlow [Partie 2]
J'ai examiné les traits du visage de Yuki Kashiwagi pour comprendre TensorFlow [Partie 1]
Je veux comprendre à peu près systemd
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de visualiser AutoEncoder avec TensorFlow
Je veux gérer la rime part1
Je veux gérer la rime part3
J'ai essayé de classer le texte en utilisant TensorFlow
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Implémentation de DQN avec TensorFlow (je voulais ...)
Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
J'ai essayé de bien le comprendre en implémentant l'algorithme Adaboost en machine learning (+ j'ai approfondi ma compréhension du calcul de tableaux)
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé le tutoriel TensorFlow 2ème
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai regardé les méta-informations de BigQuery et essayé de les utiliser
J'ai essayé de résumer les commandes utilisées par les ingénieurs débutants aujourd'hui
[Super basiques de Python] J'ai appris les bases des bases, donc je l'ai résumé brièvement.
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python