pytorch之ImageFolder使用詳解
pytorch之ImageFolder
torchvision已經(jīng)預(yù)先實(shí)現(xiàn)了常用的Dataset,包括前面使用過的CIFAR-10,以及ImageNet、COCO、MNIST、LSUN等數(shù)據(jù)集,可通過諸如torchvision.datasets.CIFAR10來調(diào)用。在這里介紹一個(gè)會(huì)經(jīng)常使用到的Dataset——ImageFolder。
ImageFolder假設(shè)所有的文件按文件夾保存,每個(gè)文件夾下存儲(chǔ)同一個(gè)類別的圖片,文件夾名為類名,其構(gòu)造函數(shù)如下:
ImageFolder(root, transform=None, target_transform=None, loader=default_loader)
它主要有四個(gè)參數(shù):
root:在root指定的路徑下尋找圖片
transform:對PIL Image進(jìn)行的轉(zhuǎn)換操作,transform的輸入是使用loader讀取圖片的返回對象
target_transform:對label的轉(zhuǎn)換
loader:給定路徑后如何讀取圖片,默認(rèn)讀取為RGB格式的PIL Image對象
label是按照文件夾名順序排序后存成字典,即{類名:類序號(hào)(從0開始)},一般來說最好直接將文件夾命名為從0開始的數(shù)字,這樣會(huì)和ImageFolder實(shí)際的label一致,如果不是這種命名規(guī)范,建議看看self.class_to_idx屬性以了解label和文件夾名的映射關(guān)系。
圖片結(jié)構(gòu)如下所示:
from torchvision import transforms as T import matplotlib.pyplot as plt from torchvision.datasets import ImageFolder dataset = ImageFolder('data/dogcat_2/') # cat文件夾的圖片對應(yīng)label 0,dog對應(yīng)1 print(dataset.class_to_idx) # 所有圖片的路徑和對應(yīng)的label print(dataset.imgs) # 沒有任何的transform,所以返回的還是PIL Image對象 #print(dataset[0][1])# 第一維是第幾張圖,第二維為1返回label #print(dataset[0][0]) # 為0返回圖片數(shù)據(jù) plt.imshow(dataset[0][0]) plt.axis('off') plt.show()
加上transform
normalize = T.Normalize(mean=[0.4, 0.4, 0.4], std=[0.2, 0.2, 0.2]) transform = T.Compose([ T.RandomResizedCrop(224), T.RandomHorizontalFlip(), T.ToTensor(), normalize, ]) dataset = ImageFolder('data1/dogcat_2/', transform=transform) # 深度學(xué)習(xí)中圖片數(shù)據(jù)一般保存成CxHxW,即通道數(shù)x圖片高x圖片寬 #print(dataset[0][0].size()) to_img = T.ToPILImage() # 0.2和0.4是標(biāo)準(zhǔn)差和均值的近似 a=to_img(dataset[0][0]*0.2+0.4) plt.imshow(a) plt.axis('off') plt.show()
以上這篇pytorch之ImageFolder使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決List.append()?在?Python?中不起作用的問題
在?Python?中,我們通常使用?List.append()?方法向列表末尾添加元素,然而,在某些情況下,你可能會(huì)遇到?List.append()?方法不起作用的問題,本文將詳細(xì)討論這個(gè)問題并提供解決方法,需要的朋友可以參考下2023-06-06Windows下實(shí)現(xiàn)Python2和Python3兩個(gè)版共存的方法
這篇文章主要介紹了Windows下實(shí)現(xiàn)Python2和Python3兩個(gè)版共存的方法,本文詳細(xì)的給出了操作步驟和設(shè)置完成后的使用方法,需要的朋友可以參考下2015-06-06Python經(jīng)典題實(shí)戰(zhàn)記錄之百元買百雞
有一道著名的"百錢買百雞"問題大家應(yīng)該都不陌生,這篇文章主要給大家介紹了關(guān)于Python經(jīng)典題實(shí)戰(zhàn)記錄之百元買百雞的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-12-12淺析Python中正則表達(dá)式函數(shù)search()和match()的使用
在Python中,正則表達(dá)式是處理字符串的強(qiáng)大工具,search()和match()是Python標(biāo)準(zhǔn)庫中re模塊中兩個(gè)常用的正則表達(dá)式方法,本文將詳細(xì)講解這兩個(gè)方法的使用,需要的可以參考一下2023-08-08python操作小程序云數(shù)據(jù)庫實(shí)現(xiàn)簡單的增刪改查功能
這篇文章主要介紹了python操作小程序云數(shù)據(jù)庫實(shí)現(xiàn)簡單的增刪改查功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能,涉及Python針對文件與目錄的遍歷、查詢等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05Python 解決logging功能使用過程中遇到的一個(gè)問題
這篇文章主要介紹了Python 解決logging功能使用過程中遇到的一個(gè)問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04