from torch import nn from .latent_encoder import LatentEncoder def add_vista4d_modules(model): model.vista4d = True model.latent_encoder = LatentEncoder( source_init_mode="wan_patch_embed", point_cloud_init_mode="wan_patch_embed", mask_init_mode="zero_init", use_source_masks=True, use_point_cloud_masks=True, wan_patch_embedding=model.patch_embedding, rgb_in_channels=model.in_dim, mask_in_channels=2 * 4 * 8 * 8, ) hidden_dim = model.blocks[0].self_attn.q.weight.shape[0] for block in model.blocks: block.cam_encoder = nn.Linear(6, hidden_dim) block.projector = nn.Linear(hidden_dim, hidden_dim) if not block.cam_encoder.weight.is_meta: block.cam_encoder.weight.data.zero_() block.cam_encoder.bias.data.zero_() if not block.projector.weight.is_meta: nn.init.eye_(block.projector.weight) nn.init.zeros_(block.projector.bias)