1. 下载数据集
网址在https://opendatalab.com/OpenDataLab/lsun/tree/main/raw/scenes
下载bedroom_val_lmdb.zip
然后解压后会又两个文件,一个data.mdb,另一个lock.mdb。
2. 使用torchvison使用LSUN数据集
我把解压后的bedroom_val_lmdb放在/home/data/下。
import torchvision
import matplotlib.pyplot as pltdataset=torchvision.datasets.LSUN('/home/data/',classes=['bedroom_val'])
aa=0
print(len(dataset)) ## 300
for img,number in dataset:print(number) ##为0plt.imshow(img)break
如何使用torchvision,查pytorch官网
在
https://pytorch.org/vision/stable/datasets.html找LSUN,
得到https://pytorch.org/vision/stable/generated/torchvision.datasets.LSUN.html#torchvision.datasets.LSUN
3. 转wbpq格式保存查看
这一步不是必须的,需要的时候用把,是从https://github.com/fyu/lsun里摘出来的。
import argparse
import cv2
import lmdb
import numpy
import os
from os.path import exists, joindef export_images(db_path, out_dir, flat=False, limit=-1):print('Exporting', db_path, 'to', out_dir)env = lmdb.open(db_path, map_size=1099511627776,max_readers=100, readonly=True)count = 0with env.begin(write=False) as txn:cursor = txn.cursor()for key, val in cursor:if not flat:image_out_dir = join(out_dir, '/'.join(key.decode('ascii')[:6]))else:image_out_dir = out_dirif not exists(image_out_dir):os.makedirs(image_out_dir)image_out_path = join(image_out_dir, key.decode('ascii') + '.webp')with open(image_out_path, 'wb') as fp:fp.write(val)count += 1if count == limit:breakif count % 1000 == 0:print('Finished', count, 'images')export_images('/home/data/bedroom_val_lmdb', './tmp')
这样图片就会存为如下样子