1.celeba數據集
這是一個大規模人臉數據集官網
香港中文大學發佈的,提供了百度雲盤的下載,使用很方便。
總共有202,599張圖片,且有圖片的標註(Label)文件。 最常用的是剪裁過的圖片,文件名叫img_align_celeba
2.pytorch加載
pytorch加載數據集一般分爲兩步,第一步是創建一個代表整個數據集的對象dataSet
from torchvision import datasets
Celeba_dataset = datasets.ImageFolder(path, transform=torchvision.transforms.ToTensor())
# #dataset=torchvision.datasets.FashionMNIST('./data/', train=True, download=True, transform=transform),
# #dataset=torchvision.datasets.CIFAR10('./data', train=True, download=True, transform=transform),
# dataset=torchvision.datasets.MNIST('./data/', train=True, download=True, transform=transform),
第二步是創建一個dataloader,用於迭代一批數據,讓整個數據分批訓練,這裏batch_size就是一批圖片的大小。
data_loader = torch.utils.data.DataLoader(dset, batch_size=128, shuffle=true,drop_last=True)
3.加載報錯
如果報錯:
RuntimeError: Found 0 files in subfolders of: Data/celeb_data/resized_celeb/ Supported extensions are: .jpg,.jpeg,.png,.ppm,.bmp,.pgm,.tif,.tiff,.webp
這時要注意torchvision.datasets.ImageFolder這個數據集的子類,如果用這個默認類讀取圖片文件,需要在該文件下再創建文件夾作爲類別標籤,因爲它的格式是
img_file:
label1:
1.jpg
2.jpg
3.jpg
label2:
1...
所以在img_align_celeba文件夾外再套一個文件夾,把ImageFolder的path參數名改爲外面那個文件夾即可.
stack_overflow上也有類似的解釋:
https://stackoverflow.com/questions/56720653/image-is-in-jpeg-but-torchvision-shows-image-extension-is-unsupported