Spaces:
Running
on
Zero
Running
on
Zero
update debug
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- LHM/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/datasets/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/datasets/__pycache__/cam_utils.cpython-310.pyc +0 -0
- LHM/datasets/__pycache__/mixer.cpython-310.pyc +0 -0
- LHM/models/__pycache__/ESRGANer_utils.cpython-310.pyc +0 -0
- LHM/models/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/__pycache__/arcface_utils.cpython-310.pyc +0 -0
- LHM/models/__pycache__/embedder.cpython-310.pyc +0 -0
- LHM/models/__pycache__/modeling_human_lrm.cpython-310.pyc +0 -0
- LHM/models/__pycache__/transformer.cpython-310.pyc +0 -0
- LHM/models/__pycache__/transformer_dit.cpython-310.pyc +0 -0
- LHM/models/__pycache__/utils.cpython-310.pyc +0 -0
- LHM/models/encoders/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/encoders/__pycache__/dinov2_fusion_wrapper.cpython-310.pyc +0 -0
- LHM/models/encoders/__pycache__/sapiens_warpper.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/hub/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/hub/__pycache__/backbones.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/hub/__pycache__/utils.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/attention.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/block.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/dino_head.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/drop_path.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/layer_scale.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/mlp.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/patch_embed.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/layers/__pycache__/swiglu_ffn.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/models/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2/models/__pycache__/vision_transformer.cpython-310.pyc +0 -0
- LHM/models/encoders/dinov2_fusion_wrapper.py +4 -4
- LHM/models/encoders/sapiens_warpper.py +4 -4
- LHM/models/modeling_human_lrm.py +18 -18
- LHM/models/rendering/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/gs_renderer.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/gsplat_renderer.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/mesh_utils.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/smpl_x.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/smpl_x_voxel_dense_sampling.cpython-310.pyc +0 -0
- LHM/models/rendering/__pycache__/synthesizer.cpython-310.pyc +0 -0
- LHM/models/rendering/smpl_x_voxel_dense_sampling.py +29 -15
- LHM/models/rendering/utils/__pycache__/__init__.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/math_utils.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/ray_marcher.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/ray_sampler.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/renderer.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/sh_utils.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/typing.cpython-310.pyc +0 -0
- LHM/models/rendering/utils/__pycache__/utils.cpython-310.pyc +0 -0
- LHM/models/transformer.py +10 -10
LHM/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/__pycache__/__init__.cpython-310.pyc and b/LHM/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/datasets/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/datasets/__pycache__/__init__.cpython-310.pyc and b/LHM/datasets/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/datasets/__pycache__/cam_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/datasets/__pycache__/cam_utils.cpython-310.pyc and b/LHM/datasets/__pycache__/cam_utils.cpython-310.pyc differ
|
|
|
LHM/datasets/__pycache__/mixer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/datasets/__pycache__/mixer.cpython-310.pyc and b/LHM/datasets/__pycache__/mixer.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/ESRGANer_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/ESRGANer_utils.cpython-310.pyc and b/LHM/models/__pycache__/ESRGANer_utils.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/__init__.cpython-310.pyc and b/LHM/models/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/arcface_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/arcface_utils.cpython-310.pyc and b/LHM/models/__pycache__/arcface_utils.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/embedder.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/embedder.cpython-310.pyc and b/LHM/models/__pycache__/embedder.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/modeling_human_lrm.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/modeling_human_lrm.cpython-310.pyc and b/LHM/models/__pycache__/modeling_human_lrm.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/transformer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/transformer.cpython-310.pyc and b/LHM/models/__pycache__/transformer.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/transformer_dit.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/transformer_dit.cpython-310.pyc and b/LHM/models/__pycache__/transformer_dit.cpython-310.pyc differ
|
|
|
LHM/models/__pycache__/utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/__pycache__/utils.cpython-310.pyc and b/LHM/models/__pycache__/utils.cpython-310.pyc differ
|
|
|
LHM/models/encoders/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/__pycache__/__init__.cpython-310.pyc and b/LHM/models/encoders/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/encoders/__pycache__/dinov2_fusion_wrapper.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/__pycache__/dinov2_fusion_wrapper.cpython-310.pyc and b/LHM/models/encoders/__pycache__/dinov2_fusion_wrapper.cpython-310.pyc differ
|
|
|
LHM/models/encoders/__pycache__/sapiens_warpper.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/__pycache__/sapiens_warpper.cpython-310.pyc and b/LHM/models/encoders/__pycache__/sapiens_warpper.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/__pycache__/__init__.cpython-310.pyc and b/LHM/models/encoders/dinov2/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/hub/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/hub/__pycache__/__init__.cpython-310.pyc and b/LHM/models/encoders/dinov2/hub/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/hub/__pycache__/backbones.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/hub/__pycache__/backbones.cpython-310.pyc and b/LHM/models/encoders/dinov2/hub/__pycache__/backbones.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/hub/__pycache__/utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/hub/__pycache__/utils.cpython-310.pyc and b/LHM/models/encoders/dinov2/hub/__pycache__/utils.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/__init__.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/attention.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/attention.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/attention.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/block.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/block.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/block.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/dino_head.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/dino_head.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/dino_head.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/drop_path.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/drop_path.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/drop_path.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/layer_scale.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/layer_scale.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/layer_scale.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/mlp.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/mlp.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/mlp.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/patch_embed.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/patch_embed.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/patch_embed.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/layers/__pycache__/swiglu_ffn.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/layers/__pycache__/swiglu_ffn.cpython-310.pyc and b/LHM/models/encoders/dinov2/layers/__pycache__/swiglu_ffn.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/models/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/models/__pycache__/__init__.cpython-310.pyc and b/LHM/models/encoders/dinov2/models/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2/models/__pycache__/vision_transformer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/encoders/dinov2/models/__pycache__/vision_transformer.cpython-310.pyc and b/LHM/models/encoders/dinov2/models/__pycache__/vision_transformer.cpython-310.pyc differ
|
|
|
LHM/models/encoders/dinov2_fusion_wrapper.py
CHANGED
|
@@ -19,9 +19,9 @@ import kornia
|
|
| 19 |
import torch
|
| 20 |
import torch.nn as nn
|
| 21 |
import torch.nn.functional as F
|
| 22 |
-
from accelerate.logging import get_logger
|
| 23 |
|
| 24 |
-
logger = get_logger(__name__)
|
| 25 |
|
| 26 |
|
| 27 |
class DPTHead(nn.Module):
|
|
@@ -126,7 +126,7 @@ class Dinov2FusionWrapper(nn.Module):
|
|
| 126 |
self._freeze()
|
| 127 |
|
| 128 |
def _freeze(self):
|
| 129 |
-
logger.warning(f"======== Freezing Dinov2FusionWrapper ========")
|
| 130 |
self.model.eval()
|
| 131 |
for name, param in self.model.named_parameters():
|
| 132 |
param.requires_grad = False
|
|
@@ -170,7 +170,7 @@ class Dinov2FusionWrapper(nn.Module):
|
|
| 170 |
|
| 171 |
dinov2_hub = import_module(".dinov2.hub.backbones", package=__package__)
|
| 172 |
model_fn = getattr(dinov2_hub, model_name)
|
| 173 |
-
logger.debug(f"Modulation dim for Dinov2 is {modulation_dim}.")
|
| 174 |
model = model_fn(modulation_dim=modulation_dim, pretrained=pretrained)
|
| 175 |
return model
|
| 176 |
|
|
|
|
| 19 |
import torch
|
| 20 |
import torch.nn as nn
|
| 21 |
import torch.nn.functional as F
|
| 22 |
+
# from accelerate.logging import get_logger
|
| 23 |
|
| 24 |
+
# logger = get_logger(__name__)
|
| 25 |
|
| 26 |
|
| 27 |
class DPTHead(nn.Module):
|
|
|
|
| 126 |
self._freeze()
|
| 127 |
|
| 128 |
def _freeze(self):
|
| 129 |
+
# logger.warning(f"======== Freezing Dinov2FusionWrapper ========")
|
| 130 |
self.model.eval()
|
| 131 |
for name, param in self.model.named_parameters():
|
| 132 |
param.requires_grad = False
|
|
|
|
| 170 |
|
| 171 |
dinov2_hub = import_module(".dinov2.hub.backbones", package=__package__)
|
| 172 |
model_fn = getattr(dinov2_hub, model_name)
|
| 173 |
+
# logger.debug(f"Modulation dim for Dinov2 is {modulation_dim}.")
|
| 174 |
model = model_fn(modulation_dim=modulation_dim, pretrained=pretrained)
|
| 175 |
return model
|
| 176 |
|
LHM/models/encoders/sapiens_warpper.py
CHANGED
|
@@ -18,10 +18,10 @@ import torch
|
|
| 18 |
import torch.nn as nn
|
| 19 |
import torch.nn.functional as F
|
| 20 |
import torchvision
|
| 21 |
-
from accelerate.logging import get_logger
|
| 22 |
from tqdm import tqdm
|
| 23 |
|
| 24 |
-
logger = get_logger(__name__)
|
| 25 |
|
| 26 |
timings = {}
|
| 27 |
BATCH_SIZE = 64
|
|
@@ -188,7 +188,7 @@ class SapiensWrapper(nn.Module):
|
|
| 188 |
@staticmethod
|
| 189 |
def _build_sapiens(model_name: str, pretrained: bool = True):
|
| 190 |
|
| 191 |
-
logger.debug(f"Using Sapiens model: {model_name}")
|
| 192 |
USE_TORCHSCRIPT = "_torchscript" in model_name
|
| 193 |
|
| 194 |
# build the model from a checkpoint file
|
|
@@ -201,7 +201,7 @@ class SapiensWrapper(nn.Module):
|
|
| 201 |
return model
|
| 202 |
|
| 203 |
def _freeze(self):
|
| 204 |
-
logger.warning(f"======== Freezing Sapiens Model ========")
|
| 205 |
self.model.eval()
|
| 206 |
for name, param in self.model.named_parameters():
|
| 207 |
param.requires_grad = False
|
|
|
|
| 18 |
import torch.nn as nn
|
| 19 |
import torch.nn.functional as F
|
| 20 |
import torchvision
|
| 21 |
+
# from accelerate.logging import get_logger
|
| 22 |
from tqdm import tqdm
|
| 23 |
|
| 24 |
+
# logger = get_logger(__name__)
|
| 25 |
|
| 26 |
timings = {}
|
| 27 |
BATCH_SIZE = 64
|
|
|
|
| 188 |
@staticmethod
|
| 189 |
def _build_sapiens(model_name: str, pretrained: bool = True):
|
| 190 |
|
| 191 |
+
# logger.debug(f"Using Sapiens model: {model_name}")
|
| 192 |
USE_TORCHSCRIPT = "_torchscript" in model_name
|
| 193 |
|
| 194 |
# build the model from a checkpoint file
|
|
|
|
| 201 |
return model
|
| 202 |
|
| 203 |
def _freeze(self):
|
| 204 |
+
# logger.warning(f"======== Freezing Sapiens Model ========")
|
| 205 |
self.model.eval()
|
| 206 |
for name, param in self.model.named_parameters():
|
| 207 |
param.requires_grad = False
|
LHM/models/modeling_human_lrm.py
CHANGED
|
@@ -14,7 +14,7 @@ import numpy as np
|
|
| 14 |
import torch
|
| 15 |
import torch.nn as nn
|
| 16 |
import torch.nn.functional as F
|
| 17 |
-
from accelerate.logging import get_logger
|
| 18 |
from diffusers.utils import is_torch_version
|
| 19 |
|
| 20 |
from LHM.models.arcface_utils import ResNetArcFace
|
|
@@ -29,7 +29,7 @@ from .embedder import CameraEmbedder
|
|
| 29 |
from .rendering.synthesizer import TriplaneSynthesizer
|
| 30 |
from .transformer import TransformerDecoder
|
| 31 |
|
| 32 |
-
logger = get_logger(__name__)
|
| 33 |
|
| 34 |
|
| 35 |
class ModelHumanLRM(nn.Module):
|
|
@@ -212,42 +212,42 @@ class ModelHumanLRM(nn.Module):
|
|
| 212 |
if encoder_type == "dino":
|
| 213 |
from .encoders.dino_wrapper import DinoWrapper
|
| 214 |
|
| 215 |
-
logger.info("Using DINO as the encoder")
|
| 216 |
return DinoWrapper
|
| 217 |
elif encoder_type == "dinov2":
|
| 218 |
from .encoders.dinov2_wrapper import Dinov2Wrapper
|
| 219 |
|
| 220 |
-
logger.info("Using DINOv2 as the encoder")
|
| 221 |
return Dinov2Wrapper
|
| 222 |
elif encoder_type == "dinov2_unet":
|
| 223 |
from .encoders.dinov2_unet_wrapper import Dinov2UnetWrapper
|
| 224 |
|
| 225 |
-
logger.info("Using Dinov2Unet as the encoder")
|
| 226 |
return Dinov2UnetWrapper
|
| 227 |
elif encoder_type == "resunet":
|
| 228 |
from .encoders.xunet_wrapper import XnetWrapper
|
| 229 |
|
| 230 |
-
logger.info("Using XnetWrapper as the encoder")
|
| 231 |
return XnetWrapper
|
| 232 |
elif encoder_type == "dinov2_featup":
|
| 233 |
from .encoders.dinov2_featup_wrapper import Dinov2FeatUpWrapper
|
| 234 |
|
| 235 |
-
logger.info("Using Dinov2FeatUpWrapper as the encoder")
|
| 236 |
return Dinov2FeatUpWrapper
|
| 237 |
elif encoder_type == "dinov2_dpt":
|
| 238 |
from .encoders.dinov2_dpt_wrapper import Dinov2DPTWrapper
|
| 239 |
|
| 240 |
-
logger.info("Using Dinov2DPTWrapper as the encoder")
|
| 241 |
return Dinov2DPTWrapper
|
| 242 |
elif encoder_type == "dinov2_fusion":
|
| 243 |
from .encoders.dinov2_fusion_wrapper import Dinov2FusionWrapper
|
| 244 |
|
| 245 |
-
logger.info("Using Dinov2FusionWrapper as the encoder")
|
| 246 |
return Dinov2FusionWrapper
|
| 247 |
elif encoder_type == "sapiens":
|
| 248 |
from .encoders.sapiens_warpper import SapiensWrapper
|
| 249 |
|
| 250 |
-
logger.info("Using Sapiens as the encoder")
|
| 251 |
return SapiensWrapper
|
| 252 |
|
| 253 |
def forward_transformer(self, image_feats, camera_embeddings, query_points):
|
|
@@ -560,10 +560,10 @@ class ModelHumanLRM(nn.Module):
|
|
| 560 |
},
|
| 561 |
]
|
| 562 |
|
| 563 |
-
logger.info("======== Weight Decay Parameters ========")
|
| 564 |
-
logger.info(f"Total: {len(decay_params)}")
|
| 565 |
-
logger.info("======== No Weight Decay Parameters ========")
|
| 566 |
-
logger.info(f"Total: {len(no_decay_params)}")
|
| 567 |
|
| 568 |
print(f"Total Params: {len(no_decay_params) + len(decay_params)}")
|
| 569 |
|
|
@@ -936,10 +936,10 @@ class ModelHumanLRMSapdinoBodyHeadSD3_5(ModelHumanLRMSapdinoBodyHeadSD3):
|
|
| 936 |
},
|
| 937 |
]
|
| 938 |
|
| 939 |
-
logger.info("======== Weight Decay Parameters ========")
|
| 940 |
-
logger.info(f"Total: {len(decay_params)}")
|
| 941 |
-
logger.info("======== No Weight Decay Parameters ========")
|
| 942 |
-
logger.info(f"Total: {len(no_decay_params)}")
|
| 943 |
|
| 944 |
print(f"Total Params: {len(no_decay_params) + len(decay_params)}")
|
| 945 |
|
|
|
|
| 14 |
import torch
|
| 15 |
import torch.nn as nn
|
| 16 |
import torch.nn.functional as F
|
| 17 |
+
# from accelerate.logging import get_logger
|
| 18 |
from diffusers.utils import is_torch_version
|
| 19 |
|
| 20 |
from LHM.models.arcface_utils import ResNetArcFace
|
|
|
|
| 29 |
from .rendering.synthesizer import TriplaneSynthesizer
|
| 30 |
from .transformer import TransformerDecoder
|
| 31 |
|
| 32 |
+
# logger = get_logger(__name__)
|
| 33 |
|
| 34 |
|
| 35 |
class ModelHumanLRM(nn.Module):
|
|
|
|
| 212 |
if encoder_type == "dino":
|
| 213 |
from .encoders.dino_wrapper import DinoWrapper
|
| 214 |
|
| 215 |
+
# logger.info("Using DINO as the encoder")
|
| 216 |
return DinoWrapper
|
| 217 |
elif encoder_type == "dinov2":
|
| 218 |
from .encoders.dinov2_wrapper import Dinov2Wrapper
|
| 219 |
|
| 220 |
+
# logger.info("Using DINOv2 as the encoder")
|
| 221 |
return Dinov2Wrapper
|
| 222 |
elif encoder_type == "dinov2_unet":
|
| 223 |
from .encoders.dinov2_unet_wrapper import Dinov2UnetWrapper
|
| 224 |
|
| 225 |
+
# logger.info("Using Dinov2Unet as the encoder")
|
| 226 |
return Dinov2UnetWrapper
|
| 227 |
elif encoder_type == "resunet":
|
| 228 |
from .encoders.xunet_wrapper import XnetWrapper
|
| 229 |
|
| 230 |
+
# logger.info("Using XnetWrapper as the encoder")
|
| 231 |
return XnetWrapper
|
| 232 |
elif encoder_type == "dinov2_featup":
|
| 233 |
from .encoders.dinov2_featup_wrapper import Dinov2FeatUpWrapper
|
| 234 |
|
| 235 |
+
# logger.info("Using Dinov2FeatUpWrapper as the encoder")
|
| 236 |
return Dinov2FeatUpWrapper
|
| 237 |
elif encoder_type == "dinov2_dpt":
|
| 238 |
from .encoders.dinov2_dpt_wrapper import Dinov2DPTWrapper
|
| 239 |
|
| 240 |
+
# logger.info("Using Dinov2DPTWrapper as the encoder")
|
| 241 |
return Dinov2DPTWrapper
|
| 242 |
elif encoder_type == "dinov2_fusion":
|
| 243 |
from .encoders.dinov2_fusion_wrapper import Dinov2FusionWrapper
|
| 244 |
|
| 245 |
+
# logger.info("Using Dinov2FusionWrapper as the encoder")
|
| 246 |
return Dinov2FusionWrapper
|
| 247 |
elif encoder_type == "sapiens":
|
| 248 |
from .encoders.sapiens_warpper import SapiensWrapper
|
| 249 |
|
| 250 |
+
# logger.info("Using Sapiens as the encoder")
|
| 251 |
return SapiensWrapper
|
| 252 |
|
| 253 |
def forward_transformer(self, image_feats, camera_embeddings, query_points):
|
|
|
|
| 560 |
},
|
| 561 |
]
|
| 562 |
|
| 563 |
+
# logger.info("======== Weight Decay Parameters ========")
|
| 564 |
+
# logger.info(f"Total: {len(decay_params)}")
|
| 565 |
+
# logger.info("======== No Weight Decay Parameters ========")
|
| 566 |
+
# logger.info(f"Total: {len(no_decay_params)}")
|
| 567 |
|
| 568 |
print(f"Total Params: {len(no_decay_params) + len(decay_params)}")
|
| 569 |
|
|
|
|
| 936 |
},
|
| 937 |
]
|
| 938 |
|
| 939 |
+
# logger.info("======== Weight Decay Parameters ========")
|
| 940 |
+
# logger.info(f"Total: {len(decay_params)}")
|
| 941 |
+
# logger.info("======== No Weight Decay Parameters ========")
|
| 942 |
+
# logger.info(f"Total: {len(no_decay_params)}")
|
| 943 |
|
| 944 |
print(f"Total Params: {len(no_decay_params) + len(decay_params)}")
|
| 945 |
|
LHM/models/rendering/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/__init__.cpython-310.pyc and b/LHM/models/rendering/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/gs_renderer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/gs_renderer.cpython-310.pyc and b/LHM/models/rendering/__pycache__/gs_renderer.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/gsplat_renderer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/gsplat_renderer.cpython-310.pyc and b/LHM/models/rendering/__pycache__/gsplat_renderer.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/mesh_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/mesh_utils.cpython-310.pyc and b/LHM/models/rendering/__pycache__/mesh_utils.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/smpl_x.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/smpl_x.cpython-310.pyc and b/LHM/models/rendering/__pycache__/smpl_x.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/smpl_x_voxel_dense_sampling.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/smpl_x_voxel_dense_sampling.cpython-310.pyc and b/LHM/models/rendering/__pycache__/smpl_x_voxel_dense_sampling.cpython-310.pyc differ
|
|
|
LHM/models/rendering/__pycache__/synthesizer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/__pycache__/synthesizer.cpython-310.pyc and b/LHM/models/rendering/__pycache__/synthesizer.cpython-310.pyc differ
|
|
|
LHM/models/rendering/smpl_x_voxel_dense_sampling.py
CHANGED
|
@@ -318,8 +318,10 @@ class SMPLX_Mesh(object):
|
|
| 318 |
return joint_offset
|
| 319 |
|
| 320 |
def get_subdivider(self, subdivide_num):
|
| 321 |
-
vert = self.layer["neutral"].v_template.float().cuda()
|
| 322 |
-
face = torch.LongTensor(self.face).cuda()
|
|
|
|
|
|
|
| 323 |
mesh = Meshes(vert[None, :, :], face[None, :, :])
|
| 324 |
|
| 325 |
if subdivide_num > 0:
|
|
@@ -419,7 +421,8 @@ class SMPLX_Mesh(object):
|
|
| 419 |
normal = (
|
| 420 |
Meshes(
|
| 421 |
verts=mesh_neutral_pose[None, :, :],
|
| 422 |
-
faces=torch.LongTensor(self.face_upsampled).cuda()[None, :, :],
|
|
|
|
| 423 |
)
|
| 424 |
.verts_normals_packed()
|
| 425 |
.reshape(self.vertex_num_upsampled, 3)
|
|
@@ -537,11 +540,14 @@ class SMPLXVoxelMeshModel(nn.Module):
|
|
| 537 |
):
|
| 538 |
"""Smooth KNN to handle skirt deformation."""
|
| 539 |
|
| 540 |
-
lbs_weights = lbs_weights.cuda()
|
|
|
|
| 541 |
|
| 542 |
dist = knn_points(
|
| 543 |
-
voxel_v.unsqueeze(0).cuda(),
|
| 544 |
-
template_v.unsqueeze(0).cuda(),
|
|
|
|
|
|
|
| 545 |
K=1,
|
| 546 |
return_nn=True,
|
| 547 |
)
|
|
@@ -555,8 +561,10 @@ class SMPLXVoxelMeshModel(nn.Module):
|
|
| 555 |
# Smooth Skinning
|
| 556 |
|
| 557 |
knn_dis = knn_points(
|
| 558 |
-
voxel_v.unsqueeze(0).cuda(),
|
| 559 |
-
voxel_v.unsqueeze(0).cuda(),
|
|
|
|
|
|
|
| 560 |
K=smooth_k + 1,
|
| 561 |
return_nn=True,
|
| 562 |
)
|
|
@@ -667,7 +675,7 @@ class SMPLXVoxelMeshModel(nn.Module):
|
|
| 667 |
)
|
| 668 |
|
| 669 |
coordinates = coordinates.view(-1, 3).float()
|
| 670 |
-
coordinates = coordinates.cuda()
|
| 671 |
|
| 672 |
if os.path.exists(f"./pretrained_models/voxel_grid/voxel_{voxel_size}.pth"):
|
| 673 |
print(f"load voxel_grid voxel_{voxel_size}.pth")
|
|
@@ -722,12 +730,15 @@ class SMPLXVoxelMeshModel(nn.Module):
|
|
| 722 |
smpl_x = self.smpl_x
|
| 723 |
|
| 724 |
# using KNN to query subdivided mesh
|
| 725 |
-
dense_pts = self.dense_pts.cuda()
|
|
|
|
| 726 |
template_verts = self.smplx_layer.v_template
|
| 727 |
|
| 728 |
nn_vertex_idxs = knn_points(
|
| 729 |
-
dense_pts.unsqueeze(0).cuda(),
|
| 730 |
-
template_verts.unsqueeze(0).cuda(),
|
|
|
|
|
|
|
| 731 |
K=1,
|
| 732 |
return_nn=True,
|
| 733 |
).idx
|
|
@@ -1046,7 +1057,8 @@ class SMPLXVoxelMeshModel(nn.Module):
|
|
| 1046 |
) # [B, 54, 3]
|
| 1047 |
# smplx pose-dependent vertex offset
|
| 1048 |
pose = (
|
| 1049 |
-
axis_angle_to_matrix(pose) - torch.eye(3)[None, None, :, :].float().cuda()
|
|
|
|
| 1050 |
).view(batch_size, (self.smpl_x.joint_num - 1) * 9)
|
| 1051 |
# (B, 54 * 9) x (54*9, V)
|
| 1052 |
|
|
@@ -1499,7 +1511,8 @@ def read_smplx_param(smplx_data_root, shape_param_file, batch_size=1, device="cu
|
|
| 1499 |
osp.join(data_root_path, "cam_params", str(frame_idx) + ".json")
|
| 1500 |
) as f:
|
| 1501 |
cam_param = {
|
| 1502 |
-
k: torch.FloatTensor(v).cuda() for k, v in json.load(f).items()
|
|
|
|
| 1503 |
}
|
| 1504 |
cam_param_list.append(cam_param)
|
| 1505 |
|
|
@@ -1668,7 +1681,8 @@ def generate_smplx_point():
|
|
| 1668 |
for k, v in data.items():
|
| 1669 |
if k in smplx_keys:
|
| 1670 |
# print(k, v.shape)
|
| 1671 |
-
smplx_params[k] = data[k].unsqueeze(0).cuda()
|
|
|
|
| 1672 |
return smplx_params
|
| 1673 |
|
| 1674 |
def sample_one(data):
|
|
|
|
| 318 |
return joint_offset
|
| 319 |
|
| 320 |
def get_subdivider(self, subdivide_num):
|
| 321 |
+
# vert = self.layer["neutral"].v_template.float().cuda()
|
| 322 |
+
# face = torch.LongTensor(self.face).cuda()
|
| 323 |
+
vert = self.layer["neutral"].v_template.float()
|
| 324 |
+
face = torch.LongTensor(self.face)
|
| 325 |
mesh = Meshes(vert[None, :, :], face[None, :, :])
|
| 326 |
|
| 327 |
if subdivide_num > 0:
|
|
|
|
| 421 |
normal = (
|
| 422 |
Meshes(
|
| 423 |
verts=mesh_neutral_pose[None, :, :],
|
| 424 |
+
# faces=torch.LongTensor(self.face_upsampled).cuda()[None, :, :],
|
| 425 |
+
faces=torch.LongTensor(self.face_upsampled)[None, :, :],
|
| 426 |
)
|
| 427 |
.verts_normals_packed()
|
| 428 |
.reshape(self.vertex_num_upsampled, 3)
|
|
|
|
| 540 |
):
|
| 541 |
"""Smooth KNN to handle skirt deformation."""
|
| 542 |
|
| 543 |
+
# lbs_weights = lbs_weights.cuda()
|
| 544 |
+
lbs_weights = lbs_weights
|
| 545 |
|
| 546 |
dist = knn_points(
|
| 547 |
+
# voxel_v.unsqueeze(0).cuda(),
|
| 548 |
+
# template_v.unsqueeze(0).cuda(),
|
| 549 |
+
voxel_v.unsqueeze(0),
|
| 550 |
+
template_v.unsqueeze(0),
|
| 551 |
K=1,
|
| 552 |
return_nn=True,
|
| 553 |
)
|
|
|
|
| 561 |
# Smooth Skinning
|
| 562 |
|
| 563 |
knn_dis = knn_points(
|
| 564 |
+
# voxel_v.unsqueeze(0).cuda(),
|
| 565 |
+
# voxel_v.unsqueeze(0).cuda(),
|
| 566 |
+
voxel_v.unsqueeze(0),
|
| 567 |
+
voxel_v.unsqueeze(0),
|
| 568 |
K=smooth_k + 1,
|
| 569 |
return_nn=True,
|
| 570 |
)
|
|
|
|
| 675 |
)
|
| 676 |
|
| 677 |
coordinates = coordinates.view(-1, 3).float()
|
| 678 |
+
# coordinates = coordinates.cuda()
|
| 679 |
|
| 680 |
if os.path.exists(f"./pretrained_models/voxel_grid/voxel_{voxel_size}.pth"):
|
| 681 |
print(f"load voxel_grid voxel_{voxel_size}.pth")
|
|
|
|
| 730 |
smpl_x = self.smpl_x
|
| 731 |
|
| 732 |
# using KNN to query subdivided mesh
|
| 733 |
+
# dense_pts = self.dense_pts.cuda()
|
| 734 |
+
dense_pts = self.dense_pts
|
| 735 |
template_verts = self.smplx_layer.v_template
|
| 736 |
|
| 737 |
nn_vertex_idxs = knn_points(
|
| 738 |
+
# dense_pts.unsqueeze(0).cuda(),
|
| 739 |
+
# template_verts.unsqueeze(0).cuda(),
|
| 740 |
+
dense_pts.unsqueeze(0),
|
| 741 |
+
template_verts.unsqueeze(0),
|
| 742 |
K=1,
|
| 743 |
return_nn=True,
|
| 744 |
).idx
|
|
|
|
| 1057 |
) # [B, 54, 3]
|
| 1058 |
# smplx pose-dependent vertex offset
|
| 1059 |
pose = (
|
| 1060 |
+
# axis_angle_to_matrix(pose) - torch.eye(3)[None, None, :, :].float().cuda()
|
| 1061 |
+
axis_angle_to_matrix(pose) - torch.eye(3)[None, None, :, :].float()
|
| 1062 |
).view(batch_size, (self.smpl_x.joint_num - 1) * 9)
|
| 1063 |
# (B, 54 * 9) x (54*9, V)
|
| 1064 |
|
|
|
|
| 1511 |
osp.join(data_root_path, "cam_params", str(frame_idx) + ".json")
|
| 1512 |
) as f:
|
| 1513 |
cam_param = {
|
| 1514 |
+
# k: torch.FloatTensor(v).cuda() for k, v in json.load(f).items()
|
| 1515 |
+
k: torch.FloatTensor(v) for k, v in json.load(f).items()
|
| 1516 |
}
|
| 1517 |
cam_param_list.append(cam_param)
|
| 1518 |
|
|
|
|
| 1681 |
for k, v in data.items():
|
| 1682 |
if k in smplx_keys:
|
| 1683 |
# print(k, v.shape)
|
| 1684 |
+
# smplx_params[k] = data[k].unsqueeze(0).cuda()
|
| 1685 |
+
smplx_params[k] = data[k].unsqueeze(0)
|
| 1686 |
return smplx_params
|
| 1687 |
|
| 1688 |
def sample_one(data):
|
LHM/models/rendering/utils/__pycache__/__init__.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/__init__.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/__init__.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/math_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/math_utils.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/math_utils.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/ray_marcher.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/ray_marcher.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/ray_marcher.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/ray_sampler.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/ray_sampler.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/ray_sampler.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/renderer.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/renderer.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/renderer.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/sh_utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/sh_utils.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/sh_utils.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/typing.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/typing.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/typing.cpython-310.pyc differ
|
|
|
LHM/models/rendering/utils/__pycache__/utils.cpython-310.pyc
CHANGED
|
Binary files a/LHM/models/rendering/utils/__pycache__/utils.cpython-310.pyc and b/LHM/models/rendering/utils/__pycache__/utils.cpython-310.pyc differ
|
|
|
LHM/models/transformer.py
CHANGED
|
@@ -11,10 +11,10 @@ from typing import Any, Dict, Optional, Tuple, Union
|
|
| 11 |
|
| 12 |
import torch
|
| 13 |
import torch.nn as nn
|
| 14 |
-
from accelerate.logging import get_logger
|
| 15 |
from diffusers.utils import is_torch_version
|
| 16 |
|
| 17 |
-
logger = get_logger(__name__)
|
| 18 |
|
| 19 |
|
| 20 |
class TransformerDecoder(nn.Module):
|
|
@@ -106,7 +106,7 @@ class TransformerDecoder(nn.Module):
|
|
| 106 |
), f"Condition and modulation are not supported for BasicBlock"
|
| 107 |
from .block import BasicBlock
|
| 108 |
|
| 109 |
-
logger.debug(f"Using BasicBlock")
|
| 110 |
return partial(BasicBlock, inner_dim=inner_dim)
|
| 111 |
elif self.block_type == "cond":
|
| 112 |
assert (
|
|
@@ -117,10 +117,10 @@ class TransformerDecoder(nn.Module):
|
|
| 117 |
), f"Modulation dimension is not supported for ConditionBlock"
|
| 118 |
from .block import ConditionBlock
|
| 119 |
|
| 120 |
-
logger.debug(f"Using ConditionBlock")
|
| 121 |
return partial(ConditionBlock, inner_dim=inner_dim, cond_dim=cond_dim)
|
| 122 |
elif self.block_type == "mod":
|
| 123 |
-
logger.error(f"modulation without condition is not implemented")
|
| 124 |
raise NotImplementedError(
|
| 125 |
f"modulation without condition is not implemented"
|
| 126 |
)
|
|
@@ -130,7 +130,7 @@ class TransformerDecoder(nn.Module):
|
|
| 130 |
), f"Condition and modulation dimensions must be specified for ConditionModulationBlock"
|
| 131 |
from .block import ConditionModulationBlock
|
| 132 |
|
| 133 |
-
logger.debug(f"Using ConditionModulationBlock")
|
| 134 |
return partial(
|
| 135 |
ConditionModulationBlock,
|
| 136 |
inner_dim=inner_dim,
|
|
@@ -138,25 +138,25 @@ class TransformerDecoder(nn.Module):
|
|
| 138 |
mod_dim=mod_dim,
|
| 139 |
)
|
| 140 |
elif self.block_type == "cogvideo_cond":
|
| 141 |
-
logger.debug(f"Using CogVideoXBlock")
|
| 142 |
from LHM.models.transformer_dit import CogVideoXBlock
|
| 143 |
|
| 144 |
# assert inner_dim == cond_dim, f"inner_dim:{inner_dim}, cond_dim:{cond_dim}"
|
| 145 |
return partial(CogVideoXBlock, dim=inner_dim, attention_bias=True)
|
| 146 |
elif self.block_type == "sd3_cond":
|
| 147 |
-
logger.debug(f"Using SD3JointTransformerBlock")
|
| 148 |
from LHM.models.transformer_dit import SD3JointTransformerBlock
|
| 149 |
|
| 150 |
return partial(SD3JointTransformerBlock, dim=inner_dim, qk_norm="rms_norm")
|
| 151 |
elif self.block_type == "sd3_mm_cond":
|
| 152 |
-
logger.debug(f"Using SD3MMJointTransformerBlock")
|
| 153 |
from LHM.models.transformer_dit import SD3MMJointTransformerBlock
|
| 154 |
|
| 155 |
return partial(
|
| 156 |
SD3MMJointTransformerBlock, dim=inner_dim, qk_norm="rms_norm"
|
| 157 |
)
|
| 158 |
elif self.block_type == "sd3_mm_bh_cond":
|
| 159 |
-
logger.debug(f"Using SD3MMJointTransformerBlock")
|
| 160 |
from LHM.models.transformer_dit import SD3BodyHeadMMJointTransformerBlock
|
| 161 |
|
| 162 |
return partial(
|
|
|
|
| 11 |
|
| 12 |
import torch
|
| 13 |
import torch.nn as nn
|
| 14 |
+
# from accelerate.logging import get_logger
|
| 15 |
from diffusers.utils import is_torch_version
|
| 16 |
|
| 17 |
+
# logger = get_logger(__name__)
|
| 18 |
|
| 19 |
|
| 20 |
class TransformerDecoder(nn.Module):
|
|
|
|
| 106 |
), f"Condition and modulation are not supported for BasicBlock"
|
| 107 |
from .block import BasicBlock
|
| 108 |
|
| 109 |
+
# logger.debug(f"Using BasicBlock")
|
| 110 |
return partial(BasicBlock, inner_dim=inner_dim)
|
| 111 |
elif self.block_type == "cond":
|
| 112 |
assert (
|
|
|
|
| 117 |
), f"Modulation dimension is not supported for ConditionBlock"
|
| 118 |
from .block import ConditionBlock
|
| 119 |
|
| 120 |
+
# logger.debug(f"Using ConditionBlock")
|
| 121 |
return partial(ConditionBlock, inner_dim=inner_dim, cond_dim=cond_dim)
|
| 122 |
elif self.block_type == "mod":
|
| 123 |
+
# logger.error(f"modulation without condition is not implemented")
|
| 124 |
raise NotImplementedError(
|
| 125 |
f"modulation without condition is not implemented"
|
| 126 |
)
|
|
|
|
| 130 |
), f"Condition and modulation dimensions must be specified for ConditionModulationBlock"
|
| 131 |
from .block import ConditionModulationBlock
|
| 132 |
|
| 133 |
+
# logger.debug(f"Using ConditionModulationBlock")
|
| 134 |
return partial(
|
| 135 |
ConditionModulationBlock,
|
| 136 |
inner_dim=inner_dim,
|
|
|
|
| 138 |
mod_dim=mod_dim,
|
| 139 |
)
|
| 140 |
elif self.block_type == "cogvideo_cond":
|
| 141 |
+
# logger.debug(f"Using CogVideoXBlock")
|
| 142 |
from LHM.models.transformer_dit import CogVideoXBlock
|
| 143 |
|
| 144 |
# assert inner_dim == cond_dim, f"inner_dim:{inner_dim}, cond_dim:{cond_dim}"
|
| 145 |
return partial(CogVideoXBlock, dim=inner_dim, attention_bias=True)
|
| 146 |
elif self.block_type == "sd3_cond":
|
| 147 |
+
# logger.debug(f"Using SD3JointTransformerBlock")
|
| 148 |
from LHM.models.transformer_dit import SD3JointTransformerBlock
|
| 149 |
|
| 150 |
return partial(SD3JointTransformerBlock, dim=inner_dim, qk_norm="rms_norm")
|
| 151 |
elif self.block_type == "sd3_mm_cond":
|
| 152 |
+
# logger.debug(f"Using SD3MMJointTransformerBlock")
|
| 153 |
from LHM.models.transformer_dit import SD3MMJointTransformerBlock
|
| 154 |
|
| 155 |
return partial(
|
| 156 |
SD3MMJointTransformerBlock, dim=inner_dim, qk_norm="rms_norm"
|
| 157 |
)
|
| 158 |
elif self.block_type == "sd3_mm_bh_cond":
|
| 159 |
+
# logger.debug(f"Using SD3MMJointTransformerBlock")
|
| 160 |
from LHM.models.transformer_dit import SD3BodyHeadMMJointTransformerBlock
|
| 161 |
|
| 162 |
return partial(
|