Spaces:
Running
on
Zero
Running
on
Zero
import torch | |
import numpy as np | |
def TubeMaskingGenerator(input_size, mask_ratio, batch, device='cuda'): | |
frames, height, width = input_size | |
num_patches_per_frame = height * width | |
num_masks_per_frame = int(mask_ratio * num_patches_per_frame) | |
mask_list = [] | |
for _ in range(batch): | |
mask_per_frame = np.hstack([ | |
np.zeros(num_patches_per_frame - num_masks_per_frame), | |
np.ones(num_masks_per_frame), | |
]) | |
np.random.shuffle(mask_per_frame) | |
mask_list.append(np.tile(mask_per_frame, (frames, 1)).flatten()) | |
mask = torch.Tensor(mask_list).to(device, non_blocking=True).to(torch.bool) | |
return mask | |
def RandomMaskingGenerator(input_size, mask_ratio, batch, device='cuda'): | |
frames, height, width = input_size | |
num_patches = frames * height * width # 8x14x14 | |
num_mask = int(mask_ratio * num_patches) | |
mask_list = [] | |
for _ in range(batch): | |
mask = np.hstack([ | |
np.zeros(num_patches - num_mask), | |
np.ones(num_mask), | |
]) | |
np.random.shuffle(mask) | |
mask_list.append(mask) | |
mask = torch.Tensor(np.array(mask_list)).to(device, non_blocking=True).to(torch.bool) | |
return mask |