Zum Inhalt springen

Atk Hairy Hairy Info

device = "cuda" if torch.cuda.is_available() else "cpu" model = resnet50(pretrained=True).eval().to(device) preprocess = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor(), T.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])])

# Define atk_hairy_hairy: as PGD but adding a high-frequency "hair" mask def generate_hair_mask(shape, density=0.02): # shape: (1,3,H,W) in [0,1] tensor _,_,H,W = shape mask = torch.zeros(1,1,H,W) rng = torch.Generator().manual_seed(0) num_strands = max(1,int(H*W*density/50)) for _ in range(num_strands): x = torch.randint(0,W,(1,), generator=rng).item() y = torch.randint(0,H,(1,), generator=rng).item() length = torch.randint(int(H*0.05), int(H*0.3),(1,), generator=rng).item() thickness = torch.randint(1,4,(1,), generator=rng).item() for t in range(length): xx = min(W-1, max(0, x + int((t/length-0.5)*10))) yy = min(H-1, max(0, y + t)) mask[0,0,yy:yy+thickness, xx:xx+thickness] = 1.0 return mask.to(device) atk hairy hairy

# Use PGD but restrict updates to mask locations and add high-frequency noise pattern attack = LinfPGD(steps=40, abs_stepsize=0.01) device = "cuda" if torch