基于generate.py实现。
运行命令:python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/s5 --trunc=1 --seeds=5 --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3"
seed=5 python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/s_$seed --trunc=1 --seeds=$seed --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3"
trunc 越接近0,输出图像越接近平均值。 在后面的实验中,我们设置trunc的默认值为0.7
seed=30000 python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/s_$seed --seeds=$seed --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3"
测试多个种子的情况。
问题是: 上下两张图是什么关系呢?
seed=6 relative_range_u_scale=10 python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/s_$seed --seeds=$seed --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3" --relative_range_u_scale=$relative_range_u_scale
结果:看不出来有明显的差别。
减小输出数量,(增大图像之间的视角差)python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/debug --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3"大致要处理的内容
- 取消掉视频输出。
- 单独输出一次camera的信息。
- 输出图片格式为xxxx_xx.png
信息的存储部分代码如下:
img_dir = os.path.join(outdir, 'images')
os.makedirs(img_dir, exist_ok=True)
camera_dir = os.path.join(outdir, 'cameras')
if os.path.exists(camera_dir):
pass
else:
os.makedirs(camera_dir, exist_ok=True)
_, H, W, _ = imgs[0].shape
for step, camera in enumerate(cameras):
intri, pose, _, _ = camera
focal = (H - 1) * 0.5 / intri[0, 0, 0].item()
intri = np.diag([focal, focal, 1.0, 1.0]).astype(np.float32)
intri[0, 2], intri[1, 2] = (W - 1) * 0.5, (H - 1) * 0.5
pose = pose.squeeze().detach().cpu().numpy() @ np.diag([1, -1, -1, 1]).astype(np.float32)
np.savez(os.path.join(camera_dir, f'{step:02d}.npz'), intrinsics=intri, poses=pose)
最终的运行命令为:python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/Mydataset --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3" --num_seeds=100
尝试正式生成数据集放到服务器上跑命令:python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/Mydataset_3w --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_256.pkl --render-program="rotation_camera3" --num_seeds=30000
调整视角范围:large = 2 range_u, range_v = gen.C.range_u, gen.C.range_v u_mid = (range_u[1] - range_u[0]) / 2 + range_u[0] u_gap = (range_u[1] - range_u[0]) / 2 * large range_u = [u_mid - u_gap, u_mid + u_gap] v_mid = (range_v[1] - range_v[0]) / 2 + range_v[0] v_gap = (range_v[1] - range_v[0]) / 2 * large range_v = [v_mid - v_gap, v_mid + v_gap]
先在 generate.py 上做测试
运行命令 :python generate.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/generate/view_0.7 --trunc=0.7 --seeds=5 --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_512.pkl --render-program="rotation_camera3"
从左到右,large分别为,0.5,0.6,0.7,1,2,3
data ='/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/' camera_1 = os.path.join(data,'test_overlap_0.5','cameras','mode.npz') camera_2 = os.path.join(data,'test_overlap_1','cameras','mode.npz') # 加载camera数据 mode_1 = np.load(camera_1)['mode'] mode_2 = np.load(camera_2)['mode'] print(mode_1) print(mode_2)调整range_radius
变形严重。 放弃调整range_radius 这个方案。
命令:python dataset_create.py --outdir=/home/joselyn/workspace/0419-course/logs/StyleNeRF-main/dataset_create/1024 --network=/home/joselyn/workspace/0419-course/stylenerf_pkl/ffhq_1024.pkl --render-program="rotation_camera3" --seed_s=0 --seed_e=6 --large=0.5 --n_steps=12
1024 的效果还挺好的。



