WorldGen: 1600 upscale path
Browse files- worldgen/worldgen_i2s.py +12 -7
worldgen/worldgen_i2s.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
|
| 2 |
|
| 3 |
import argparse
|
| 4 |
import os
|
|
@@ -75,11 +75,12 @@ def main():
|
|
| 75 |
|
| 76 |
out = Path(args.out)
|
| 77 |
out.mkdir(parents=True, exist_ok=True)
|
|
|
|
| 78 |
prep = out / "prep"
|
| 79 |
run([
|
| 80 |
sys.executable, str(ROOT / "worldgen/worldgen_i2s_prep.py"),
|
| 81 |
"--image", args.image, "--out", str(prep),
|
| 82 |
-
"--width", str(
|
| 83 |
])
|
| 84 |
|
| 85 |
prompt = (
|
|
@@ -99,14 +100,14 @@ def main():
|
|
| 99 |
"-p", prompt,
|
| 100 |
"-n", "blurry, low quality",
|
| 101 |
"--lora-model-dir", str(FLUX),
|
| 102 |
-
"-W", str(
|
| 103 |
"--steps", str(args.steps),
|
| 104 |
"--cfg-scale", "1.0",
|
| 105 |
"--guidance", "30.0",
|
| 106 |
"--sampling-method", "euler",
|
| 107 |
"--strength", "1.0",
|
| 108 |
"--seed", str(args.seed),
|
| 109 |
-
*
|
| 110 |
"--backend", "diffusion=vulkan0",
|
| 111 |
"-o", str(out / "pano_fill.png"),
|
| 112 |
])
|
|
@@ -129,9 +130,11 @@ def main():
|
|
| 129 |
m = mask_img.filter(ImageFilter.GaussianBlur(24))
|
| 130 |
valid = (1.0 - np.asarray(m).astype(np.float32) / 255.0)[..., None]
|
| 131 |
pano = (g * (1.0 - valid) + c * valid).clip(0, 255).astype(np.uint8)
|
| 132 |
-
Image.fromarray(pano)
|
| 133 |
-
|
| 134 |
-
|
|
|
|
|
|
|
| 135 |
d.astype("<f4").tofile(out / "depth.f32")
|
| 136 |
cpu_mesh = args.mesh_shell or args.cpu_mesh
|
| 137 |
run([
|
|
@@ -195,3 +198,5 @@ def main():
|
|
| 195 |
if __name__ == "__main__":
|
| 196 |
main()
|
| 197 |
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Single image -> FLUX Fill panorama -> DA-2 depth -> Rust 3DGS/mesh."""
|
| 2 |
|
| 3 |
import argparse
|
| 4 |
import os
|
|
|
|
| 75 |
|
| 76 |
out = Path(args.out)
|
| 77 |
out.mkdir(parents=True, exist_ok=True)
|
| 78 |
+
gen_w, gen_h = (1024, 512) if args.width >= 1600 else (args.width, args.height)
|
| 79 |
prep = out / "prep"
|
| 80 |
run([
|
| 81 |
sys.executable, str(ROOT / "worldgen/worldgen_i2s_prep.py"),
|
| 82 |
"--image", args.image, "--out", str(prep),
|
| 83 |
+
"--width", str(gen_w), "--height", str(gen_h),
|
| 84 |
])
|
| 85 |
|
| 86 |
prompt = (
|
|
|
|
| 100 |
"-p", prompt,
|
| 101 |
"-n", "blurry, low quality",
|
| 102 |
"--lora-model-dir", str(FLUX),
|
| 103 |
+
"-W", str(gen_w), "-H", str(gen_h),
|
| 104 |
"--steps", str(args.steps),
|
| 105 |
"--cfg-scale", "1.0",
|
| 106 |
"--guidance", "30.0",
|
| 107 |
"--sampling-method", "euler",
|
| 108 |
"--strength", "1.0",
|
| 109 |
"--seed", str(args.seed),
|
| 110 |
+
*["--vae-tiling", "--vae-tile-size", ("512x512")],
|
| 111 |
"--backend", "diffusion=vulkan0",
|
| 112 |
"-o", str(out / "pano_fill.png"),
|
| 113 |
])
|
|
|
|
| 130 |
m = mask_img.filter(ImageFilter.GaussianBlur(24))
|
| 131 |
valid = (1.0 - np.asarray(m).astype(np.float32) / 255.0)[..., None]
|
| 132 |
pano = (g * (1.0 - valid) + c * valid).clip(0, 255).astype(np.uint8)
|
| 133 |
+
pano_img = Image.fromarray(pano)
|
| 134 |
+
if pano_img.size != (args.width, args.height):
|
| 135 |
+
pano_img = pano_img.resize((args.width, args.height), Image.LANCZOS)
|
| 136 |
+
pano_img.save(out / "pano.png")
|
| 137 |
+
d = da2_depth(pano_img, args.width, args.height)
|
| 138 |
d.astype("<f4").tofile(out / "depth.f32")
|
| 139 |
cpu_mesh = args.mesh_shell or args.cpu_mesh
|
| 140 |
run([
|
|
|
|
| 198 |
if __name__ == "__main__":
|
| 199 |
main()
|
| 200 |
|
| 201 |
+
|
| 202 |
+
|