Esercizio: Visualizzare le foto in Jupyter Notebook
Verranno ora visualizzate alcune delle immagini caricate nel computer. Verranno visualizzate etichette per indicare il tipo di roccia presente in ogni foto.
Trasformare e visualizzare le immagini
In questa sezione verrà aggiunto il codice per associare ogni immagine di roccia a un tipo di roccia, in base alla cartella dell'immagine. Viene chiamata nuovamente la classe transforms.Compose
per trasformare ogni immagine in pixel e ridimensionarla in base alle dimensioni preferite.
Si seleziona un set di immagini casuale in modo simile a come sono stati usate le funzioni load_split_train_test
e SubsetRandomSampler
nell'ultimo esercizio. Il codice scorre le immagini riorganizzate nel set di dati di test.
L'ultima sezione del codice visualizza le immagini caricate nel programma. Le funzioni della libreria PIL vengono usate per modificare le immagini e il comando plt.show
viene usato per stamparle.
Aggiungere codice per trasformare e selezionare immagini casuali
Ora si è pronti ad aggiungere il codice per trasformare le immagini.
In Visual Studio Code tornare al file di Jupyter Notebook.
Aggiungere il codice seguente in una nuova cella. Dopo aver aggiunto il nuovo codice, eseguire la cella.
# Transform an image into pixels and resize it test_transforms = transforms.Compose([transforms.RandomResizedCrop(224), transforms.Resize(224), transforms.ToTensor(), ]) # Randomly select a set of images by using a similar approach as the load_split_train_test function def get_random_images(num): data = datasets.ImageFolder(data_dir, transform=test_transforms) classes = data.classes indices = list(range(len(data))) np.random.shuffle(indices) idx = indices[:num] from torch.utils.data.sampler import SubsetRandomSampler sampler = SubsetRandomSampler(idx) loader = torch.utils.data.DataLoader(data, sampler=sampler, batch_size=num) # Create an iterator to iterate over the shuffled images in the test image dataset dataiter = iter(loader) # Get and return the images and labels from the iterator images, labels = next(dataiter) return images, labels
Aggiungere codice per visualizzare immagini selezionate in modo casuale
Seguire questa procedura per aggiungere il codice per visualizzare le immagini.
Aggiungere il codice seguente in una nuova cella. Dopo aver aggiunto il nuovo codice, eseguire la cella.
# Show five images - you can change this number images, labels = get_random_images(5) # Convert the array of pixels to an image to_pil = transforms.ToPILImage() fig=plt.figure(figsize=(20,20)) # Get a list of all classes in the training data classes=trainloader.dataset.classes # Draw the images in a plot to display in the notebook for ii in range(len(images)): image = to_pil(images[ii]) sub = fig.add_subplot(1, len(images), ii+1) plt.axis('off') plt.imshow(image) # Display all of the images plt.show()
Premere CTRL+S per salvare le modifiche apportate al file di Jupyter Notebook.
Dopo aver eseguito questo nuovo codice, nell'output dovrebbero essere visualizzate cinque immagini pulite. Il codice è impostato per visualizzare cinque immagini, ma è possibile modificare il numero.
Passaggi successivi
Passare al modulo successivo in questo percorso di apprendimento e scoprire come classificare i tipi di rocce spaziali in foto casuali con l’intelligenza artificiale.
Importante
Se si prevede di proseguire con il modulo successivo del percorso di apprendimento, lasciare aperti il prompt di Anacoda e il file Jupyter Notebook in Visual Studio Code. Se si chiudono le applicazioni o si prevede di lavorare agli esercizi del modulo in più sessioni, sarà necessario riaprire gli strumenti e riconfigurare l'ambiente di lavoro per continuare lo sviluppo del modello.