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.
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:
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:
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:
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:
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:
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.
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:
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:
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:
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:
Veuillez vous référer à ce qui suit pour l'agrandissement / réduction:
Recommended Posts