//Description: Programming_AI_Terrain (自动生成地貌)
//Create Date: 2022-01-28 15:28:39
//Author: channy
目标:根据输入的描述性文字,自动生成游戏中的地形地貌
思路:机器学习GAN模型
参考样例:基于GAN的描述文本生成图像
文本生成图像:VAE(Variational Auto-Encoder),DRAW(Deep Recurrent Attention Writer)以及GAN(GAN-INT-CLS)等
DF-GAN 根据描述文字生成对应图像
参考数据
ModelNet 训练网络的时候用的是voxel grids格式的数据,shapeNet提供了32×32×32的grid数据以及grid数据相应渲染的结果,里面grid数据是用.binvox格式存储的binvox ,python的读取示例(dimatura/binvox-rw-py),如果想要将mesh数据体素化,可以用 mesh-voxelization工具(FairyPig/mesh-voxelization)。 ShapeNet
我们的数据准备
- voxel使用进制存储文件,其中前3个byte存储该voxel的size(x, y, z),后续xyz个byte存储对应位置上的sdf[0,254]
- 文字描述直接使用几何体名称
- 参考DF-GAN的数据输入格式生成filenames.pickle和captions.pickle
- 使用StackGAN-inception-model生成DAMSM,用于在训练过程中计算DAMSM loss
- batch_size每次迭代训练取batch_size个样本。数据量小时取1
正在修复bug。。。
2017 StackGAN
2019 MirrorGAN
2019 DM-GAN
2016 text2image
2016 text-to-image
2018 AttnGAN 2020 DF-GAN 2019 ControlGAN
2020 ManiGAN 基于ControlGAN的改进
2016 voxel-dcgan
2016 3D GAN github-tf-3dgan
2017 3D-RecGAN
2018 Z-GAN
binvox文件由ASCII的文件头和二进制的数据组成
#binvox 1
dim 32 32 32
translate -0.302239 -0.169754 -0.360326
scale 0.720652
data
其中,”#binvox 1”指定版本号,”dim”指定体素网格的size,”translate”和”scale”用于正则化对应的变换,”data”标志文件头结束,往下都是数据。
二进制数据中包含多对数据,每对数据(pair)的首个byte是当前pair的具体数值0或1(1表示该voxel被填充),第二个byte是当前数值被重复多少次[1,255]。
即:binvox是把原voxel的数据生成一个一维的数组,并将重复的点压缩后得到的结果