xinjie.wang commited on
Commit
1a190b2
·
1 Parent(s): a75fc8a
app.py CHANGED
@@ -102,6 +102,13 @@ with gr.Blocks(
102
  seed = gr.Slider(
103
  0, MAX_SEED, label="Seed", value=0, step=1
104
  )
 
 
 
 
 
 
 
105
  with gr.Row():
106
  randomize_seed = gr.Checkbox(
107
  label="Randomize Seed", value=False
@@ -403,6 +410,7 @@ with gr.Blocks(
403
  inputs=[
404
  output_buf,
405
  project_delight,
 
406
  ],
407
  outputs=[
408
  model_output_mesh,
 
102
  seed = gr.Slider(
103
  0, MAX_SEED, label="Seed", value=0, step=1
104
  )
105
+ texture_size = gr.Slider(
106
+ 1024,
107
+ 4096,
108
+ label="UV texture size",
109
+ value=2048,
110
+ step=256,
111
+ )
112
  with gr.Row():
113
  randomize_seed = gr.Checkbox(
114
  label="Randomize Seed", value=False
 
410
  inputs=[
411
  output_buf,
412
  project_delight,
413
+ texture_size,
414
  ],
415
  outputs=[
416
  model_output_mesh,
asset3d_gen/data/utils.py CHANGED
@@ -933,11 +933,21 @@ def get_images_from_grid(
933
  return images
934
 
935
 
936
- def post_process_texture(texture: np.ndarray, iter: int = 2) -> np.ndarray:
 
 
 
 
 
 
 
 
 
 
937
  for _ in range(iter):
938
- texture = cv2.fastNlMeansDenoisingColored(texture, None, 13, 13, 9, 27)
939
  texture = cv2.bilateralFilter(
940
- texture, d=9, sigmaColor=80, sigmaSpace=80
941
  )
942
 
943
  return texture
 
933
  return images
934
 
935
 
936
+ # def post_process_texture(texture: np.ndarray, iter: int = 2) -> np.ndarray:
937
+ # for _ in range(iter):
938
+ # texture = cv2.fastNlMeansDenoisingColored(texture, None, 13, 13, 9, 27)
939
+ # texture = cv2.bilateralFilter(
940
+ # texture, d=9, sigmaColor=80, sigmaSpace=80
941
+ # )
942
+
943
+ # return texture
944
+
945
+
946
+ def post_process_texture(texture: np.ndarray, iter: int = 1) -> np.ndarray:
947
  for _ in range(iter):
948
+ texture = cv2.fastNlMeansDenoisingColored(texture, None, 5, 5, 7, 19)
949
  texture = cv2.bilateralFilter(
950
+ texture, d=7, sigmaColor=50, sigmaSpace=50
951
  )
952
 
953
  return texture
asset3d_gen/models/segment_model.py CHANGED
@@ -6,7 +6,6 @@ import cv2
6
  import numpy as np
7
  import rembg
8
  import torch
9
- from transformers import pipeline
10
  from huggingface_hub import snapshot_download
11
  from PIL import Image
12
  from segment_anything import (
@@ -14,6 +13,7 @@ from segment_anything import (
14
  SamPredictor,
15
  sam_model_registry,
16
  )
 
17
  from asset3d_gen.utils.process_media import filter_small_connected_components
18
  from asset3d_gen.validators.quality_checkers import ImageSegChecker
19
 
@@ -296,9 +296,11 @@ class RembgRemover(object):
296
  class BMGG14Remover(object):
297
  def __init__(self) -> None:
298
  self.model = pipeline(
299
- "image-segmentation", model="briaai/RMBG-1.4", trust_remote_code=True
 
 
300
  )
301
-
302
  def __call__(
303
  self, image: Union[str, Image.Image, np.ndarray], save_path: str = None
304
  ):
@@ -309,7 +311,7 @@ class BMGG14Remover(object):
309
 
310
  image = resize_pil(image)
311
  output_image = self.model(image)
312
-
313
  if save_path is not None:
314
  os.makedirs(os.path.dirname(save_path), exist_ok=True)
315
  output_image.save(save_path)
@@ -400,4 +402,4 @@ if __name__ == "__main__":
400
  )
401
 
402
  remover = BMGG14Remover()
403
- remover("asset3d_gen/models/test_seg.jpg", "./seg.png")
 
6
  import numpy as np
7
  import rembg
8
  import torch
 
9
  from huggingface_hub import snapshot_download
10
  from PIL import Image
11
  from segment_anything import (
 
13
  SamPredictor,
14
  sam_model_registry,
15
  )
16
+ from transformers import pipeline
17
  from asset3d_gen.utils.process_media import filter_small_connected_components
18
  from asset3d_gen.validators.quality_checkers import ImageSegChecker
19
 
 
296
  class BMGG14Remover(object):
297
  def __init__(self) -> None:
298
  self.model = pipeline(
299
+ "image-segmentation",
300
+ model="briaai/RMBG-1.4",
301
+ trust_remote_code=True,
302
  )
303
+
304
  def __call__(
305
  self, image: Union[str, Image.Image, np.ndarray], save_path: str = None
306
  ):
 
311
 
312
  image = resize_pil(image)
313
  output_image = self.model(image)
314
+
315
  if save_path is not None:
316
  os.makedirs(os.path.dirname(save_path), exist_ok=True)
317
  output_image.save(save_path)
 
402
  )
403
 
404
  remover = BMGG14Remover()
405
+ remover("asset3d_gen/models/test_seg.jpg", "./seg.png")
common.py CHANGED
@@ -21,10 +21,10 @@ from asset3d_gen.data.differentiable_render import entrypoint as render_api
21
  from asset3d_gen.models.delight_model import DelightingModel
22
  from asset3d_gen.models.gs_model import GaussianOperator
23
  from asset3d_gen.models.segment_model import (
 
24
  RembgRemover,
25
  SAMPredictor,
26
  trellis_preprocess,
27
- BMGG14Remover,
28
  )
29
  from asset3d_gen.models.sr_model import ImageRealESRGAN
30
  from asset3d_gen.scripts.render_gs import entrypoint as render_gs_api
@@ -539,6 +539,7 @@ def extract_3d_representations(
539
  def extract_3d_representations_v2(
540
  state: dict,
541
  enable_delight: bool,
 
542
  req: gr.Request,
543
  ):
544
  output_root = TMP_DIR
@@ -585,6 +586,7 @@ def extract_3d_representations_v2(
585
  output_path=mesh_obj_path,
586
  skip_fix_mesh=False,
587
  delight=enable_delight,
 
588
  )
589
 
590
  mesh_glb_path = os.path.join(user_dir, f"{filename}.glb")
 
21
  from asset3d_gen.models.delight_model import DelightingModel
22
  from asset3d_gen.models.gs_model import GaussianOperator
23
  from asset3d_gen.models.segment_model import (
24
+ BMGG14Remover,
25
  RembgRemover,
26
  SAMPredictor,
27
  trellis_preprocess,
 
28
  )
29
  from asset3d_gen.models.sr_model import ImageRealESRGAN
30
  from asset3d_gen.scripts.render_gs import entrypoint as render_gs_api
 
539
  def extract_3d_representations_v2(
540
  state: dict,
541
  enable_delight: bool,
542
+ texture_size: int,
543
  req: gr.Request,
544
  ):
545
  output_root = TMP_DIR
 
586
  output_path=mesh_obj_path,
587
  skip_fix_mesh=False,
588
  delight=enable_delight,
589
+ texture_wh=[texture_size, texture_size],
590
  )
591
 
592
  mesh_glb_path = os.path.join(user_dir, f"{filename}.glb")