[PYTHON] Apprenez à gonfler des images à partir du code TensorFlow

introduction

Quoi qu'il en soit, le nombre d'images est nécessaire pour classer les images avec précision avec Deep Learning. Cependant, il est difficile de préparer et d'étiqueter manuellement un grand nombre d'images. Par conséquent, le nombre d'images est augmenté (gonflé) en traitant les images marquées. スクリーンショット 2016-09-07 13.40.40.png

Cette fois, j'aimerais apprendre du code TensorFlow ce qu'il faut faire pour gonfler.

Plus précisément, nous apprendrons du code CIFAR-10. cifar10/cifar10_input.py

Dans le code réel, l'image a été gonflée en combinant plusieurs processus comme indiqué ci-dessous.

# Image processing for training the network. Note the many random
# distortions applied to the image.

# Randomly crop a [height, width] section of the image.
distorted_image = tf.random_crop(reshaped_image, [height, width, 3])

# Randomly flip the image horizontally.
distorted_image = tf.image.random_flip_left_right(distorted_image)

# Because these operations are not commutative, consider randomizing
# the order their operation.
distorted_image = tf.image.random_brightness(distorted_image, max_delta=63)
distorted_image = tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)

# Subtract off the mean and divide by the variance of the pixels.
float_image = tf.image.per_image_whitening(distorted_image)

En regardant chacun d'eux, il y avait cinq choses dans le code CIFAR-10:

Nous comprendrons ** visuellement ** ce que chacun fait.

tf.random_crop(value, size, seed=None, name=None) La fonction random_crop est une fonction de recadrage aléatoire d'une image d'une taille donnée. L'image ci-dessous est le résultat du recadrage d'une image 256x170 avec une taille = 100x100:

スクリーンショット 2016-09-07 12.26.51.png

La position de coupe change selon la valeur donnée à la graine. Si la valeur de départ est la même, la même image sera générée quel que soit le nombre d'exécutions.

tf.image.random_flip_left_right(image, seed=None)

La fonction random_flip_left_right est une fonction pour retourner une image de manière aléatoire horizontalement. L'image ci-dessous est le résultat de l'application effective de la fonction random_flip_left_right: スクリーンショット 2016-09-07 13.21.57.png

Puisque l'inversion est effectuée de manière probabiliste, elle peut ne pas être inversée en fonction de la valeur de départ.

Une autre fonction similaire à random_flip_left_right est random_flip_up_down. Alors que random_flip_left_right tourne horizontalement, random_flip_up_down retourne verticalement. ..

tf.image.random_brightness(image, max_delta, seed=None)

La fonction random_brightness est une fonction permettant d'ajuster la luminosité d'une image par un facteur aléatoire. L'image ci-dessous est le résultat de l'application effective de la fonction random_brightness: スクリーンショット 2016-09-07 13.40.40.png

Le degré de luminosité change en fonction des valeurs de max_delta et de seed.

tf.image.random_contrast(image, lower, upper, seed=None)

La fonction random_contrast est une fonction permettant d'ajuster le contraste d'une image en raison d'un facteur aléatoire. L'image ci-dessous est le résultat de l'application effective de la fonction random_contrast: スクリーンショット 2016-09-07 13.46.37.png

Vous pouvez voir que Contrast1 a un contraste réduit et Contrast2 a un contraste amélioré. Les limites inférieure et supérieure de la résistance peuvent être ajustées avec des valeurs inférieures et supérieures.

tf.image.per_image_whitening(image)

La fonction per_image_whitening est une fonction pour blanchir une image de sorte que la moyenne soit de 0. L'image ci-dessous est le résultat de l'application effective de la fonction per_image_whitening:

スクリーンショット 2016-09-07 13.50.52.png

En fait, chaque valeur de pixel est calculée par (x --mean) / Adjust_stddev. mean est la moyenne de toutes les valeurs de pixel de l'image, et ajusté_stddev est défini comme ajusté_stddev = max (stddev, 1.0 / sqrt (image.NumElements ())). Où stddev est l'écart type de toutes les valeurs de pixels de l'image.

Autre

Il existe d'autres fonctions qui pourraient être utilisées pour le remplissage, bien qu'elles ne soient pas utilisées dans l'exemple TensorFlow CIFAR-10. Je vais en présenter environ 5. tf.image.transpose_image(image) La fonction transpose_image est une fonction qui transpose une image. L'image ci-dessous est le résultat de l'application effective de la fonction transpose_image: スクリーンショット 2016-09-08 9.08.54.png

Puisqu'il n'est que transposé, le résultat est le même quel que soit le nombre de fois qu'il est exécuté. Si vous déplacez davantage l'image déplacée, elle reviendra à l'image d'origine.

tf.image.rot90(image, k=1) La fonction rot90 fait pivoter l'image dans le sens antihoraire tous les 90 degrés. L'image ci-dessous est le résultat de l'application effective de la fonction rot90: スクリーンショット 2016-09-08 9.12.28.png

Vous pouvez spécifier le nombre de rotations en modifiant la valeur de k.

tf.image.random_hue(image, max_delta, seed=None) La fonction random_hue est une fonction permettant d'ajuster la teinte d'une image RVB en raison d'un facteur aléatoire. L'image ci-dessous est le résultat de l'application effective de la fonction random_hue: スクリーンショット 2016-09-08 9.17.04.png

max_delta doit être compris entre 0 et 0,5.

tf.image.random_saturation(image, lower, upper, seed=None) La fonction random_saturation est une fonction permettant de régler la saturation d'une image RVB. L'image ci-dessous est le résultat de l'application effective de la fonction random_saturation: スクリーンショット 2016-09-08 9.21.20.png

Agrandissement / réduction

Veuillez vous référer à ce qui suit pour l'agrandissement / réduction:

référence

Recommended Posts

Apprenez à gonfler des images à partir du code TensorFlow
TensorFlow Pour apprendre d'un grand nombre d'images ... (Problème non résolu) → 12/18 Résolu
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
Comment utiliser SWIG de WAF
Comment installer TensorFlow sur CentOS 7
Publier une image de Python sur Tumblr
Comment lancer Explorer à partir de WSL
Comment convertir le modèle Tensorflow en Lite
Programmation tirée des livres le 7 mai
Comment accéder à wikipedia depuis python
Comment convertir .mgz en .nii.gz
Migrer de VS Code vers PyCharm
Comment traiter les images de caméra avec Teams et Zoom Volume de l'analyse des émotions avec Tensorflow
Comment créer un clone depuis Github
Apprentissage amélioré pour apprendre de zéro à profond
Comment convertir facilement le format de Markdown
Qiita (1) Comment écrire un nom de code
Comment mettre à jour Google Sheets à partir de Python
[TF] Comment utiliser Tensorboard de Keras
Comment utiliser le multicœur du point de vue de plusieurs langues
Branche conditionnelle pour apprendre de Milk Boy
Comment accéder à RDS depuis Lambda (python)
Comment faire fonctionner Linux depuis la console
Comment utiliser Tensorflow dans un environnement Docker
Comment collecter des images de visage relativement facilement
Comment créer un référentiel à partir d'un média
Comment accéder à la banque de données de l'extérieur
Comment afficher les images dans l'administration de Django
Comment dessiner une image OpenCV avec Pygame
Comment exécuter du code TensorFlow 1.0 en 2.0
Tutoriel du didacticiel TensorFlow
Apprenez à gonfler des images à partir du code TensorFlow
Préparation à l'utilisation de Tensorflow (Anaconda) avec Visual Studio Code
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
[Tensorflowjs_converter] Comment convertir le modèle Tensorflow au format Tensorflow.js
Comment coder un drone en utilisant la reconnaissance d'image
Comment ouvrir un navigateur Web à partir de python
Étude de Python Hour7: Comment utiliser les classes
Comment obtenir les résultats de l'identifiant dans Celery
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment exécuter CNN en notation système 1 avec Tensorflow 2
Comment générer un objet Python à partir de JSON
Comment appeler l'API Cloud à partir de GCP Cloud Functions
Comment faire fonctionner Linux depuis l'extérieur Procédure
Comment bien gérer les commandes Linux à partir de Python
Comment extraire le coefficient de la formule minute
Comment mesurer la vitesse de la ligne depuis le terminal
Comment afficher des images en continu avec matplotlib Memo
Tensorufuro, Tensafuro Après tout, lequel (Comment lire Tensorflow)
Je veux créer du code C ++ à partir de code Python!
[TF] Comment créer Tensorflow dans un environnement Proxy
Comment entraîner Kaldi avec JUST Corpus
Comment forcer TensorFlow 2.3.0 à construire pour CUDA11 + cuDNN8
Comment cloner un référentiel distant Github depuis Atom
Comment créer un profil radial à partir d'images astronomiques (Chandra, XMM etc.) en utilisant python
Les images créées avec matplotlib passent de dvi à pdf
Comment traiter les images de caméra avec Teams et Zoom
[Python] Comment supprimer les valeurs en double de la liste
Comment créer un article à partir de la ligne de commande
Je veux détecter des images de chats d'Instagram
Comment utiliser Keras ~ De la simple génération de modèle à CNN ~
Comment récupérer des données d'image de Flickr avec Python