最近,ChatGPT可以说是火得不要不要的。
11月30日,OpenAI发布聊天机器人ChatGPT,并免费向公众开放进行测试以来,在国内已经被玩出了花。
和机器人对话,就是让机器人去执行某个指令,比如说输入关键字让AI生成相应的画面。
这好像也不是什么稀奇的事了,OpenAI在4月不是还更新了DALL-E的新版本吗?
OpenAI,how old are you?(怎么老是你?)
要是文摘菌说生成的是3D画面,还是HDR全景图那种,或者是基于VR的图像内容呢?
最近,新加坡南洋理工大学的研究团队就提出了这么一个AI,只要用户用文字输入一个描述得很清晰的场景,系统就能生成逼真的3D场景。
先来看看效果如何,比如输入“白天湖上的棕色木码头被绿树环绕”时,系统就给出了这样的答案,这光线和细节效果直接拉满。
无需训练,即可生成3D的HDRIs
高质量的HDRI(高动态范围图像),也就是HDR全景图,是目前创建逼真的360度3D场景的热门方法。
考虑到捕捉HDRIs的难度,虽然现在有不少可利用AI生成3D场景的技术,但基本都需要进行一连串的参数设定,或是通过大量数据进行深度学习。
于是,研究人员提出了一个零拍摄文本驱动框架,即Text2Light,以生成4K+分辨率的HDRIs,并且整个过程不需要相应的训练数据。
生成HDRIs的过程可以分为两步。
第一步,基于双代码本的离散表示法将输入文本翻译成LDR全景图。输入文本首先被预训练的CLIP模型映射到文本嵌入;其次,一个文本条件的全局采样器学习根据输入文本从全局编码簿中采样整体语义;然后,一个结构感知的局部采样器合成局部补丁,并进行合成。
第二步,根据结构化的潜伏编码作为连续表示,对第一阶段的LDR结果进行升级。研究人员提出的超级分辨率反色调映射运算器(SR-iTMO)能够同时提高全景图的空间分辨率和动态范围。
如此一来,在无需进行训练之下就能生成具有4K分辨率的HDRIs,这也是迄今为止最先进的图像生成模型,清除了从LDR到HDR转换的不稳定性,并创建了一对全景图和文本供学习。
不过,目前此项技术仍处于早期研究阶段,仅能产生低解析度的360度环景图像内容,但研究团队计划在未来,对现阶段技术所产生环景图像进行升级,同时加入HDR影像强化效果,让生成的3D图像或VR场景的观看度更加流畅和有吸引力。
用文本驱动生成HDRI
接下来,我们就来看看一些操作过程。
先下载好checkpoints,注意团队分别发布了室外(local sampler outdoor)和室内(local sampler indoor)场景的模型。从一个句子生成HDR全景图:
python text2light.py -rg logs/global_sampler_clip -rl logs/local_sampler_outdoor --outdir ./generated_panorama --text "YOUR SCENE DESCRIPTION" --clip clip_emb.npy --sritmo ./logs/sritmo.pth --sr_factor 4
从系列文本描述中生成HDR全景图:
# assume your texts is stored in alt.txtpython text2light.py -rg logs/global_sampler_clip -rl logs/local_sampler_outdoor --outdir ./generated_panorama --text ./alt.txt --clip clip_emb.npy --sritmo ./logs/sritmo.pth --sr_factor 4
生成低分辨率(512x1024)LDR全景图:
# assume your texts is stored in alt.txtpython text2light.py -rg logs/global_sampler_clip -rl logs/local_sampler_outdoor --outdir ./generated_panorama --text ./alt.txt --clip clip_emb.npy
以此生成的HDR全景图可以直接在任何现代图形使用。以在三维计算机图形软件Blender进行对旧金山景观进行渲染为例,当输入landscape photography of mountain ranges under purple and pink skies后,我们会得到这样的图像:
为了便于批处理,例如使用多个hdri进行渲染,在命令行中也可以提供渲染3D的脚本。解包,检查检查Blender的使用情况:
# assume your downloaded version is 3.1.2tar -xzvf blender-3.1.2-linux-x64.tar.xzcd blender-3.1.2-linux-x64./blender --help
添加别名:
# PATH_TO_DOWNLOADED_BLENDER indicates the parent directory where you save the downloaded blenderalias blender="/PATH_TO_DOWNLOADED_BLENDER/blender-3.1.2-linux-x64/blender"
然后回到Text2Light代码库,为不同的呈现设置运行以下命令:
blender --background --python rendering_shader_ball.py -- ./rendered_balls 100 1000 PATH_TO_HDRI
就能得到这样的结果: