数据集,数据加载(基于dataset,dataloader)"/>
数据集,数据加载(基于dataset,dataloader)
从文件夹中加载Dataset
import torch.utils.data as data
from PIL import Image
import osdef default_loader(path):return Image.open(path).convert('RGB')
##type(return):<class 'PIL.Image.Image'>IMG_EXTENSIONS = ['.jpg', '.JPG', '.jpeg', '.JPEG','.png', '.PNG', '.ppm', '.PPM', '.bmp', '.BMP',
]def is_image_file(filename):return any(filename.endswith(extension) for extension in IMG_EXTENSIONS)#返回每个图像文件的路径(list)
def make_dataset(dir):images = [] #images保存图片文件的路径(不只是名字)assert os.path.isdir(dir), '%s is not a valid direntory' % dir# os.wark()方法# os.wark()实际返回产生生成器<class 'generator'># sorted(os.wark())返回有若干三元组组成的list# sorted()保证每次数据顺序一样for root, dirs, files in sorted(os.walk(dir)):for fname in files:if is_image_file(fname):path = os.path.join(root,fname)images.append(path)return imagesclass ImageFolder(data.Dataset):def __init__(self, root='makeup', transform=None,return_path=False,loder=default_loader):imgs = sorted(make_dataset(root))if len(imgs) == 0:raise(RuntimeError("Found 0 image in:" + root + "\n""Supported image extensions are:" +",".join(IMG_EXTENSIONS)))self.root = rootself.imgs = imgsself.transform = transformself.return_path = return_pathself.loader = default_loaderdef __len__(self):return len(self.imgs)def __getitem__(self,index):path = self.imgs[index]img = self.loader(path)if self.transform is not None:img = self.transform(img)if self.return_path:return img, pathelse:return img
更多推荐
数据集,数据加载(基于dataset,dataloader)
发布评论