Skip to content

Is there a way to change/override the expected loss function of Foolbox's 'attack' function? #689

@John-Chin

Description

@John-Chin

Hi,
I am currently trying to generate adversarial images of a CIFAR10 dataset that can fool a CNN in a simple color estimation task.

As a little background for this color estimation task, I created a CNN to estimate the average global color of an image as a 3d column vector in terms of [average red channel, average blue channel, average green channel]. To train this CNN, I used a relabeled CIFAR10 dataset (where each label is no longer a number denoting it's class but a 3d vector of the average color) and MSE as my loss function.

But now, when I tried to use foolbox's attack function
raw_advs, clipped_advs, success = attack(fmodel, images, labels, epsilons=epsilons)
to create an adversarial image, I ran into this error:

Screen Shot 2022-05-30 at 7 31 55 PM

From this error trace, it seems that the attack function is automatically geared toward object recognition models that use cross entropy loss and output a 1d label.

So my question is: is there any way to modify the attack function's expected loss function to be Mean Square Error instead of Cross Entropy? Or perhaps I should not use the built-in attack function, and instead generate the adversarial images manually?
Thank you for any thoughts or tips.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions