adversarial-examples-pytorch
adversarial-examples-pytorch copied to clipboard
Possible issue with the `Loss_flow` code for Spatially Transformed Adversarial Examples
Hello,
I think there is an issue with the way you implement flow loss in the code. In the main paper it says that the flow loss is the sum of spatial movement distance for any two adjacent pixels. In the code you are doing the following: ` def forward(self, f): # TODO: padding ''' f - f.size() = [1, h, w, 2] f[0, :, :, 0] - u channel f[0, :, :, 1] - v channel ''' f_u = f[:, :, :, 0].unsqueeze(1) f_v = f[:, :, :, 1].unsqueeze(1)
diff_u = F.conv2d(f_u, self.filters)[0][0] # don't use squeeze
diff_u_sq = torch.mul(diff_u, diff_u)
diff_v = F.conv2d(f_v, self.filters)[0][0] # don't use squeeze
diff_v_sq = torch.mul(diff_v, diff_v)
dist = torch.sqrt(torch.sum(diff_u_sq, dim=0) + torch.sum(diff_v_sq, dim=0))
return torch.sum(dist)
The problem is that on the lines you are computing
diff_uand
diff_v, you only compute the sum for the neighboring pixel on the top left. I guess this is probably a small typo in the code. In fact, I think those two lines should be like this:
diff_u = F.conv2d(f_u, self.filters)[0]`.
Please correct me if I am wrong. thanks in advance for your reply.