celebA_hq高清人脸图片下载、生成代码
高清人脸.jpg格式下载
celebA_hq是clebbA的高质量人脸图像,共30000张可达1024尺寸。我分别生成了64、128、256、512、1024大小的图片,生成过程很漫长,约跑了3/4天才把所有图片保存出来。这里提供下载链接,供需要的朋友直接下载使用。
补一个永久链接,自己选择需要的文件
链接:https://pan.baidu.com/s/1ZF1G2MQILZSFNjD1YLVgZA
提取码:t76m
celebA_hq_64 ——提取码:6hf3
celebA_hq_128——提取码:xk6d
celebA_hq_256——提取码:016n
celebA_hq_512——提取码:byix
celebA_hq_1024——提取码:bszu
celebA_hq高清人脸图像获取方法
代码的原作者是GitHub上的willylulu,作者是python2写的。我自己改写了一个python3的版本,另修改了代码中的一点小问题,我的代码可以在Github中查看:链接
你需要下载准备
- img_celeba: 下载解压出202599张图片。注意是celeba,不是celeba_align!二者的区别,celeba是原始图像,大小比例不等;celeba_align是裁出其中的人脸部分,并带有40个属性标注,尺寸是178*218。如下图:
- CelebA_hq_deltas: 下载30个压缩包和1个image_list.txt,不需要解压。deltas是原始图片对应的增量,共30000个,所以hq共30000张图片。查看image_list.txt,可以查看delta对应的原始图片orig_files是哪些。这里有个玄学问题求大佬解答,我对比了图片加delta和不加delta的结果,对图片生成的质量几乎没什么影响,且加了delta的图片黑色区域反倒会出现噪点。然后我又对比了生成的图片和原图,发现原图的尺寸本身就是非常大的,hq也没有比原图更清晰,所以hq只是把原图中分辨率高的图片挑出来做了个简单的图像处理?求解答!!
- list_landmarks_celeba: 这个别的文章里面都说很好下载,但我找了很久才找到,云盘共享出来提取码:if0g 。如下图,里面包含了img_celeba中人脸五官的位置信息,用于确定人脸位置做裁剪。
代码解析
我们只需要看h5tool.py中的create_celeba_hq函数,根据command的参数运行代码就行了。只需要指定celeba_dir和delta_dir, 其他参数不用管,生成h5文件的时候才会用到。
// 除了celeba_dir,delta_dir,其他参数不用管,生成h5文件的时候才会用到
p = add_command( 'create_celeba_hq', 'Create HDF5 dataset for CelebA-HQ.',
'create_celeba_hq celeba-hq-1024x1024.h5 ~/celeba ~/celeba-hq-deltas')
p.add_argument( 'h5_filename', help='HDF5 file to create')
p.add_argument( 'celeba_dir', help='Directory to read CelebA data from')
p.add_argument( 'delta_dir', help='Directory to read CelebA-HQ deltas from')
p.add_argument( '--num_threads', help='Number of concurrent threads (default: 4)', type=int, default=4)
p.add_argument( '--num_tasks', help='Number of concurrent processing tasks (default: 100)', type=int, default=100)
注意580行左右,process_func
函数的这个位置。其中img加delta的效果我上面又讲,酌情考虑要不要加。图片的尺寸是1024的,可以自己酌情resize成任意尺寸。return的orig_file
,为原始图片的名字,用于生成图片的命名,保持生成图和原图名称一致。
# Apply delta image.
img = img + delta
img = np.asarray(img).transpose(1, 2, 0)
img = PIL.Image.fromarray(img, mode='RGB')
img512 = img.resize((512, 512), PIL.Image.ANTIALIAS)
img256 = img.resize((256, 256), PIL.Image.ANTIALIAS)
img128 = img.resize((128, 128), PIL.Image.ANTIALIAS)
img64 = img.resize((64, 64), PIL.Image.ANTIALIAS)
return orig_file, img64, img128, img256, img512, img
自定义图片存储路径,其中x = x + 1000
用于定义开始获取HQ图片的位置,以免程序意外中断,可以接着运行。
for x in fields['idx']:
x = x + 1000
print(x)
aidx, aimg64, aimg128, aimg256, aimg512, aimg1024 = process_func(x)
aimg64.save('./celeba-hq/celeba_64/'+str(aidx)+'.jpg')
aimg128.save('./celeba-hq/celeba_128/'+str(aidx)+'.jpg')
aimg256.save('./celeba-hq/celeba_256/'+str(aidx)+'.jpg')
aimg512.save('./celeba-hq/celeba_512/'+str(aidx)+'.jpg')
aimg1024.save('./celeba-hq/celeba_1024/'+str(aidx)+'.jpg')