Извлечение оригинального формата изображения после состязательной атаки с Cleverhans

Предположим, я загружаю набор данных MNIST с Cleverhans и атакую ​​изображение с помощью FGM. Любое изображение, которое я загружаю через набор данных Cleverhans MNIST, уже имеет свои значения пикселей, ограниченные [0, 1], и то же самое верно после того, как я атакую ​​изображение (предположим, я обрезаю изображение до [0, 1]). Если я хочу увидеть атаку в этом случае, я бы просто умножил все значения пикселей на 255 и создал изображение соперника.

В этом сценарии исходное изображение MNIST со значениями пикселей в [0, 255] вместо этого было изменено, чтобы иметь значения пикселей в [0, 1], путем деления всех значений на 255. Чтобы вернуть исходные "свойства изображения" I просто умножьте снова на 255.

Есть ли способ (в Cleverhans или вообще) извлечь свойства исходного изображения, когда этот этап предварительной обработки (в случае MNIST, деление на 255) более сложный? Например, я имею в виду VGG16, в котором размер изображения ImageNet изменяется, а его пропорции сохраняются, а процесс возврата изображения к исходному размеру сложен и уникален для каждого изображения.

Можно ли добавить этот этап предварительной обработки в качестве шага в модели, чтобы непосредственно получить шум на исходном изображении? Я полагаю, что это, вероятно, не так, поскольку не все этапы предварительной обработки различимы?

Означает ли это, что я не могу видеть шум, примененный к исходному изображению, если этап предварительной обработки слишком сложен?

1 ответ

Решение

Это правильно, если ваш конвейер использует этап предварительной обработки, который:

  • трудно инвертировать: будет трудно получить изображение, которое соответствует возмущенному изображению в исходном домани, на основе (а) исходного изображения и (b) возмущения в предварительно обработанном пространстве.

  • недифференцируемый: для атак, которые требуют градиентов, будет невозможно вычислить возмущенное изображение в исходной области.

Однако вы можете использовать атаки, которые не вычисляют градиенты напрямую, например, SPSA, чтобы работать непосредственно в исходном домене, даже если этап предварительной обработки не дифференцируем: https://github.com/tensorflow/cleverhans/blob/master/cleverhans/attacks/spsa.py

Другие вопросы по тегам