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 plt
dataset=torchvision.datasets.LSUN('/home/data/',classes=['bedroom_val'])
aa=0
print(len(dataset)) ## 300
for img,number in dataset:
print(number) ##为0
plt.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, join
def 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 = 0
with 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_dir
if 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 += 1
if count == limit:
break
if count % 1000 == 0:
print('Finished', count, 'images')
export_images('/home/data/bedroom_val_lmdb', './tmp')
这样图片就会存为如下样子