** Je veux afficher l'image après l'augmentation des données! ** **
Je l'ai pensé et mis en œuvre.
L'augmentation des données est une technologie de remplissage d'une seule image, et les opérations suivantes sont ajoutées.
--Random Crop (Recadrer l'image au hasard) -Random Horizontal Flip (Retourner l'image à gauche et à droite avec une certaine probabilité)
Il y a beaucoup d'autres choses.
Cette fois, j'ai chargé l'ensemble de données d'image d'apprentissage de CIFAR-10 et j'ai essayé d'incorporer le retournement horizontal aléatoire et l'effacement aléatoire dans les transformations.
test.py
import torch
import numpy as np
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import Dataset,DataLoader
import torchvision.datasets as dsets
import matplotlib.pyplot as plt
#Chargement des images
batch_size = 100
train_data = dsets.CIFAR10(root='./tmp/cifar-10', train=True, download=False, transform=transforms.Compose([transforms.RandomHorizontalFlip(p=0.5), transforms.ToTensor(), transforms.RandomErasing(p=0.5, scale=(0.02, 0.4), ratio=(0.33, 3.0))]))
train_loader = DataLoader(train_data,batch_size=batch_size,shuffle=True)
test_data = dsets.CIFAR10(root='./tmp/cifar-10', train=False, download=False, transform=transforms.Compose([transforms.ToTensor(),]))
test_loader = DataLoader(test_data,batch_size=batch_size,shuffle=False)
def image_show(data_loader,n):
#Lire les données d'image augmentées
tmp = iter(data_loader)
images,labels = tmp.next()
#Convertir une image de tenseur en numpy
images = images.numpy()
#Retirez n images une par une et affichez-les
for i in range(n):
image = np.transpose(images[i],[1,2,0])
plt.imshow(image)
plt.show()
image_show(train_loader,10)
La fonction image_show est une fonction qui affiche l'image après Augmentation.
Obtenez un mini-lot de DataLoader avec iter ().
Ensuite, .next () stocke les données d'image dans les images et les étiquettes dans les étiquettes.
images = images.numpy () convertit les données d'image du tensor en numpy.
À ce stade, les images ont une structure de ** [taille du lot, nombre de canaux, largeur, hauteur] **, mais pour afficher les images avec pyplot de matplotlib ** [largeur, hauteur, nombre de canaux] Doit être **.
Par conséquent, il est transformé à l'aide de np.transpose.
Il a été confirmé qu'il était retourné horizontalement et que le bruit avait été ajouté par effacement aléatoire.
Recommended Posts