您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關ImageFolder怎么在pytorch中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
pytorch之ImageFolder
torchvision已經預先實現了常用的Dataset,包括前面使用過的CIFAR-10,以及ImageNet、COCO、MNIST、LSUN等數據集,可通過諸如torchvision.datasets.CIFAR10來調用。在這里介紹一個會經常使用到的Dataset——ImageFolder。
ImageFolder假設所有的文件按文件夾保存,每個文件夾下存儲同一個類別的圖片,文件夾名為類名,其構造函數如下:
ImageFolder(root, transform=None, target_transform=None, loader=default_loader)
它主要有四個參數:
root:在root指定的路徑下尋找圖片
transform:對PIL Image進行的轉換操作,transform的輸入是使用loader讀取圖片的返回對象
target_transform:對label的轉換
loader:給定路徑后如何讀取圖片,默認讀取為RGB格式的PIL Image對象
label是按照文件夾名順序排序后存成字典,即{類名:類序號(從0開始)},一般來說最好直接將文件夾命名為從0開始的數字,這樣會和ImageFolder實際的label一致,如果不是這種命名規范,建議看看self.class_to_idx屬性以了解label和文件夾名的映射關系。
圖片結構如下所示:
from torchvision import transforms as T import matplotlib.pyplot as plt from torchvision.datasets import ImageFolder dataset = ImageFolder('data/dogcat_2/') # cat文件夾的圖片對應label 0,dog對應1 print(dataset.class_to_idx) # 所有圖片的路徑和對應的label print(dataset.imgs) # 沒有任何的transform,所以返回的還是PIL Image對象 #print(dataset[0][1])# 第一維是第幾張圖,第二維為1返回label #print(dataset[0][0]) # 為0返回圖片數據 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) # 深度學習中圖片數據一般保存成CxHxW,即通道數x圖片高x圖片寬 #print(dataset[0][0].size()) to_img = T.ToPILImage() # 0.2和0.4是標準差和均值的近似 a=to_img(dataset[0][0]*0.2+0.4) plt.imshow(a) plt.axis('off') plt.show()
上述就是小編為大家分享的ImageFolder怎么在pytorch中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。