Spaces:
Runtime error
Runtime error
File size: 6,148 Bytes
2fa4776 a8aa29a 2079028 a8aa29a 5dc76cf ba90702 d2f300d a8aa29a 2fa4776 faad0e8 2fa4776 a769fa2 2fa4776 c64ae0b be43c31 2fa4776 be43c31 2fa4776 b5f67e7 2fa4776 be43c31 2fa4776 0969a4f 2fa4776 95a9966 9b308a0 df1c43e cb5fbf2 2fa4776 95a9966 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import gradio as gr
import numpy as np
import os
import subprocess
from datetime import datetime
os.system('git clone https://huggingface.co./camenduru/GaussianDreamer')
os.system('pip install ./gaussiansplatting/submodules/diff-gaussian-rasterization')
os.system('pip install ./GaussianDreamer/nerfacc-0.5.3-cp310-cp310-linux_x86_64.whl')
os.system('pip install ./gaussiansplatting/submodules/simple-knn')
# os.system('pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch')
os.system('pip install -q https://huggingface.co./camenduru/CoDeF/resolve/main/tinycudann-1.7-cp310-cp310-linux_x86_64.whl')
os.system('git clone https://github.com/openai/shap-e.git')
os.system('pip install -e ./shap-e')
os.system('mv ./GaussianDreamer/shapE_finetuned_with_330kdata.pth ./load/shapE_finetuned_with_330kdata.pth')
example_inputs = [[
"A fox."
], [
"fries and a hamburger."
], [
"Viking axe, fantasy, weapon, blender, 8k, HD."
], [
"ferrari convertible, trending on artstation, ultra realistic, 4k, HD"
], [
"flamethrower, with fire, scifi, cyberpunk, photorealistic, 8K, HD"
], [
"Blue and white porcelain Viking axe"
], [
"a DSLR photo of a small saguaro cactus planted in a clay pot"
], [
"a zoomed out DSLR photo of an amigurumi motorcycle"
], [
"a DSLR photo of a teapot shaped like an elephant head where its snout acts as the spout"
], [
"a DSLR photo of a wine bottle and full wine glass on a chessboard"
], [
"a panda wearing a necktie and sitting in an office chair"
], [
"a spanish galleon sailing on the open sea"
], [
"airplane, fighter, steampunk style, ultra realistic, 4k, HD"
]]
example_outputs_1 = [
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_fox.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/fries_and_a_hamburger.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/Viking_axe,_fantasy,_weapon,_blender,_8k,_HD.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/ferrari_convertible,_trending_on_artstation,_ultra_realistic,_4k,_HD.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/flamethrower,_with_fire,_scifi,_cyberpunk,_photorealistic,_8K,_HD.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/Blue_and_white_porcelain_Viking_axe.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_DSLR_photo_of_a_small_saguaro_cactus_planted_in_a_clay_pot.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_zoomed_out_DSLR_photo_of_an_amigurumi_motorcycle.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_DSLR_photo_of_a_teapot_shaped_like_an_elephant_head_where_its_snout_acts_as_the_spout.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_DSLR_photo_of_a_wine_bottle_and_full_wine_glass_on_a_chessboard.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_panda_wearing_a_necktie_and_sitting_in_an_office_chair.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/a_spanish_galleon_sailing_on_the_open_sea.mp4'), autoplay=True),
gr.Video(value=os.path.join(os.path.dirname(__file__), 'example/airplane,_fighter,_steampunk_style,_ultra_realistic,_4k,_HD.mp4'), autoplay=True)
]
subprocess.run([
f'python shape.py'],
shell=True)
def main(prompt, iteration,CFG, seed):
if [prompt] in example_inputs:
return example_outputs_1[example_inputs.index([prompt])]
seed = int(seed)
iteration = int(iteration)
print('==> User Prompt:', prompt)
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
print('==> User Shell:', f'python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="{prompt}" seed={seed} system.guidance.guidance_scale={CFG} trainer.max_steps={iteration} use_timestamp=False timestamp="{timestamp}" ',)
subprocess.run([
f'python launch.py --config configs/gaussiandreamer-sd.yaml --train --gpu 0 system.prompt_processor.prompt="{prompt}" seed={seed} system.guidance.guidance_scale={CFG} trainer.max_steps={iteration} use_timestamp=False timestamp="{timestamp}" '],
shell=True)
path= os.path.join("./outputs/gaussiandreamer-sd",f'{prompt.replace(" ","_")}{timestamp}',f"save/it{iteration}-test.mp4")
print('==> Save path:', path)
return gr.Video(value=path, autoplay=True)
with gr.Blocks() as demo:
gr.Markdown("# <center>GaussianDreamer: Fast Generation from Text to 3D Gaussians by Bridging 2D and 3D Diffusion Models</center>")
gr.Markdown("This live demo allows you to generate high-quality 3D content using text prompts. The outputs are 360° rendered 3d video.<br> \
It is based on Stable Diffusion 2.1-base. Please check out our <strong><a href=https://taoranyi.com/gaussiandreamer/>Project Page</a> / <a href=https://arxiv.org/abs/2310.08529>Paper</a> / <a href=https://github.com/hustvl/GaussianDreamer>Code</a></strong> if you want to learn more about our method!<br> \
Note that this demo is running on T4, the running time might be longer than the reported 15 minutes (1200 iterations) on RTx 3090.<br> \
© This Gradio space is developed by <a href=https://taoranyi.com/>Taoran Yi</a>.")
gr.Interface(fn=main, inputs=[gr.Textbox(lines=2, value="fries and a hamburger.", label="Your prompt"),
gr.Slider(0, 2000, value=900, label="Number of iteration (using 1200 in paper)"),
gr.Slider(80, 200, value=100, label="CFG"),
gr.Number(value=0, label="Seed")],
outputs=["playable_video"],
examples=example_inputs,
cache_examples=True,
concurrency_limit=1)
demo.launch() |