pytorch之ImageFolder使用詳解
pytorch之ImageFolder
torchvision已經(jīng)預(yù)先實(shí)現(xiàn)了常用的Dataset,包括前面使用過(guò)的CIFAR-10,以及ImageNet、COCO、MNIST、LSUN等數(shù)據(jù)集,可通過(guò)諸如torchvision.datasets.CIFAR10來(lái)調(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:對(duì)PIL Image進(jìn)行的轉(zhuǎn)換操作,transform的輸入是使用loader讀取圖片的返回對(duì)象
target_transform:對(duì)label的轉(zhuǎn)換
loader:給定路徑后如何讀取圖片,默認(rèn)讀取為RGB格式的PIL Image對(duì)象
label是按照文件夾名順序排序后存成字典,即{類名:類序號(hào)(從0開(kāi)始)},一般來(lái)說(shuō)最好直接將文件夾命名為從0開(kāi)始的數(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文件夾的圖片對(duì)應(yīng)label 0,dog對(duì)應(yīng)1
print(dataset.class_to_idx)
# 所有圖片的路徑和對(duì)應(yīng)的label
print(dataset.imgs)
# 沒(méi)有任何的transform,所以返回的還是PIL Image對(duì)象
#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使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python用reduce和map把字符串轉(zhuǎn)為數(shù)字的方法
最近在復(fù)習(xí)高階函數(shù)的時(shí)候,有一道題想了半天解不出來(lái)。于是上午搜索資料,看了下別人的解法,發(fā)現(xiàn)學(xué)習(xí)編程,思維真的很重要。下面這篇文章就來(lái)給大家介紹了python利用reduce和map把字符串轉(zhuǎn)為數(shù)字的思路及方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12
如何使用Python修改matplotlib.pyplot.colorbar的位置以對(duì)齊主圖
使用matplotlib.colors模塊可以完成大多數(shù)常見(jiàn)的任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何使用Python修改matplotlib.pyplot.colorbar的位置以對(duì)齊主圖的相關(guān)資料,需要的朋友可以參考下2022-07-07
Python中schedule模塊關(guān)于定時(shí)任務(wù)使用方法
這篇文章主要介紹了Python中schedule模塊關(guān)于定時(shí)任務(wù)使用方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
利用python模擬sql語(yǔ)句對(duì)員工表格進(jìn)行增刪改查
這篇文章主要給大家介紹了關(guān)于利用python模擬sql語(yǔ)句實(shí)現(xiàn)對(duì)員工表格進(jìn)行增刪改查的相關(guān)資料,文中介紹了詳細(xì)的需求以及示例代碼,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
python給指定csv表格中的聯(lián)系人群發(fā)郵件(帶附件的郵件)
這篇文章主要介紹了python給指定csv表格中的聯(lián)系人群發(fā)郵件,本文通過(guò)代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Python中實(shí)現(xiàn)進(jìn)度條的多種方法總結(jié)
在Python編程中,進(jìn)度條是一個(gè)非常有用的功能,它能讓用戶直觀地了解任務(wù)的進(jìn)度,提升用戶體驗(yàn),本文將介紹幾種在Python中實(shí)現(xiàn)進(jìn)度條的常用方法,并通過(guò)代碼示例和案例來(lái)展示它們的具體應(yīng)用,需要的朋友可以參考下2025-01-01
30秒輕松實(shí)現(xiàn)TensorFlow物體檢測(cè)
這篇文章主要為大家詳細(xì)介紹了30秒輕松實(shí)現(xiàn)TensorFlow物體檢測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03

