Найти в Дзене
Notes on ML

Когда несколько пикселей решают всё: One Pixel атака и способы защиты от неё

Удивительно, но факт: несколько изменений в изображении может полностью изменить вывод нейросети, что ломает заложенную разработчиком логику. В данной статье мы не просто подсветим факт существования One Pixel атаки, но и комплексно разберём архитектурные факторы, которые влияют на устойчивость CV-систем к данному семейству атак. Представим ситуацию: мы обучили нейросеть, которая предсказывает наличие макияжа (мало ли какие задачи перед нами могут встать). Модель в проде, всё прекрасно работает. Наша нейросеть уверенно определяет наличие макияжа на левой фотографии. Но справа мы видим те же глаза, ту же помаду, но эти три пикселя... и вот уже модель утверждает, что никакого макияжа нет. Ломается логика нашей CV-системы, и всё идёт не по плану... Примерно так функционирует one-pixel атака. На фотографии меняются всего несколько пикселей, которые изменяют предсказание нейросети. Самый сложный этап атаки — это найти наиболее значимые в принятии решения пиксели, которые и надо поменять, ве
Оглавление

Удивительно, но факт: несколько изменений в изображении может полностью изменить вывод нейросети, что ломает заложенную разработчиком логику. В данной статье мы не просто подсветим факт существования One Pixel атаки, но и комплексно разберём архитектурные факторы, которые влияют на устойчивость CV-систем к данному семейству атак.

Представим ситуацию: мы обучили нейросеть, которая предсказывает наличие макияжа (мало ли какие задачи перед нами могут встать). Модель в проде, всё прекрасно работает. Наша нейросеть уверенно определяет наличие макияжа на левой фотографии. Но справа мы видим те же глаза, ту же помаду, но эти три пикселя... и вот уже модель утверждает, что никакого макияжа нет. Ломается логика нашей CV-системы, и всё идёт не по плану...

Пример атаки. Из-за трёх пикселей модель поменяла своё предсказание на правом изображении.
Пример атаки. Из-за трёх пикселей модель поменяла своё предсказание на правом изображении.

Примерно так функционирует one-pixel атака. На фотографии меняются всего несколько пикселей, которые изменяют предсказание нейросети. Самый сложный этап атаки — это найти наиболее значимые в принятии решения пиксели, которые и надо поменять, ведь пикселей на изображении много, а возможных цветов для одного пикселя еще больше. Но после нахождения не составляет труда “обмануть” нейросеть.

Причём атака не всегда может быть преднамеренной. Проблема куда шире, ведь пиксели могут “испортиться” сами. Причиной тому бывают:

  • Битые пиксели на камере,
  • Помехи при передаче данных,
  • Банальная пыль на объективе.

Поэтому нашей задачей, как cv-инженеров, является увеличение устойчивости модели к one-pixel атаке. Сделать это можно как с помощью внешних цензоров, которые могут выявить попытку атаки на нейросеть, так и с помощью архитектуры модели, которая может увеличить устойчивость к атаке.

Архитектуры под прицелом: кто устойчивее к one pixel атакам?

Первым делом мне было интересно изучить такие архитектуры:

  • AlexNet
  • Inception v3,
  • ResNet152,
  • EfficientNet,
  • Visual Transformer.

Они являются наиболее известными и часто их можно встретить в cv-системах.

Перейдём к сравнению устойчивости. Методология проста: берём 30 изображений из тестовой выборки ImageNet и для каждой архитектуры проводим атаки на изображения. Будем использовать три вида атаки:

  • Изменение только одного пикселя,
  • Изменение трёх пикселей,
  • Изменение трёх пикселей размером 3х3.
Примеры атак.
Примеры атак.

После атаки замеряем, насколько процентов снизилась уверенность модели в истинном классе. То есть чем выше данная метрика, тем более защищённой является архитектура.

После долгих вычислений получаем следующий график:

Результаты сравнения моделей на устойчивость к one pixel атакам.
Результаты сравнения моделей на устойчивость к one pixel атакам.

Видим, что наиболее уязвимой является AlexNet и InceptionNet. Более современные архитектуры уже имеют больший разрыв в уверенности между истинным классом и побочным. И с помощью one-pixel атаки трудно данный разрыв преодолеть.

Посмотрим теперь на то, сколько изображений удалось успешно атаковать:

Количество успешных атак.
Количество успешных атак.

Из таблицы видно, что, начиная с ResNet, one-pixel атака имеет малый эффект и нужно либо изменять большее количество пикселей, либо использовать более мощные атаки.

Микровывод:

  • Наиболее устойчивыми архитектурами являются ResNet152 и ViT, который ни разу не удалось атаковать.
  • Наиболее уязвимыми являются такие архитектуры, как AlexNet и Inception v3.

Спускаемся на уровень ниже: Какие архитектурные особенности влияют на устойчивость?

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

Чтобы ответить на данный вопрос, давайте возьмём AlexNet, как самую простую архитектуру, и добавим в неё некоторые особенности из InceptionNet, ResNet и EfficientNet.

Можно выбрать следующие модификации:

  • Обычный AlexNet,
  • Предобученный на ImageNet AlexNet,
  • AlexNet cо свёртками 1х1 (как в Inception v3),
  • AlexNet с ассиметричными свёртками 11х1 и 1х11 вместо свёртки 11х11 (как в Inception v3),
  • AlexNet со scip-connection (как в ResNet),
  • AlexNet с BatchNorm2d (как в ResNet),
  • AlexNet с SiLU (как в EfficientNet).
  • AlexNet с dropout=0.9,
  • AlexNet, который будет обучаться на зашумлённых данных (add pixels):
Пример зашумлённых данных.
Пример зашумлённых данных.
Все подобные архитектуры довольно просто реализовать на Torch. С кодом и этапами исследования можно ознакомиться в репозитории исследования.

И вот мы получили 9 моделей с небольшими изменениями, которые теперь можно также исследовать, как и в главе выше. Только на этот раз возьмём датасет CelebA, который содержит около 200.000 фотографий людей. Для каждой фотографии определены 40 признаков. Мне показался интересным признак, который указывает на наличие макияжа у человека. Возьмём 30 изображений, которые верно предсказываются всеми моделями, и в дальнейшем будем проводить на них атаки.

Пример данных из CelebA.
Пример данных из CelebA.

Обучим полученные нами модели (или дообучим в случае предобученной на ImageNet модели) и проверим устойчивость каждой модели к атаке.

Чтобы AlexNet работал с задачей бинарной классификации, добавим в качестве последнего слоя линейный слой, который на выходе будет возвращать одно число которое будет передаваться в сигмоиду. Это позволяет утверждать, что если выход модели больше 0.5, то на изображении присутствует макияж, иначе нет.

После обучения моделей получаем следующие показатели точности:

Метрики точности обученных моделей.
Метрики точности обученных моделей.

Как и ожидалось, обученная на ImageNet модель оказалась самой точной. Также точность увеличилась при добавлении нормализации по батчу. Все остальные модернизации снизили точность. Хотя если посмотреть внимательно, то точность варьируется в пределах от 0.913 до 0.900, что некритично, если вопрос касается безопасности.

Теперь посмотрим, как модернизации влияют на устойчивость модели к one-pixel атаке. Результаты получились следующими:

Чем больше, тем менее устойчива модификация модели к атаке.
Чем больше, тем менее устойчива модификация модели к атаке.
Чем больше, тем менее устойчива модификация модели к атаке.
Чем больше, тем менее устойчива модификация модели к атаке.

Интересным является то, что предобученная модель оказалась наиболее уязвимой к атаке. Также, как и ожидалось, обученная на заранее зашумлённых данных модель оказалась самой устойчивой. Увеличение вероятности dropout также немного, но увеличило устойчивость. Неочевидным стало то, что всего лишь замена ReLU на SiLU значительно увеличило устойчивость модели.

Давайте посмотрим, на примеры атак:

Пример атаки.
Пример атаки.
Здесь мы буквально сами нанесли макияж.
Здесь мы буквально сами нанесли макияж.
Опять видим, что пиксели расположены в похожих местах.
Опять видим, что пиксели расположены в похожих местах.
И тут тоже.
И тут тоже.

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

Для чистоты эксперимента также была модернизирована архитектура ResNet. Результаты показали, что предобученная модель снова оказалась более уязвимой, а модель с SiLU показала большую устойчивость к атаке.

Вывод

В итоге, мы выяснили следующее:

  • Архитектуры ResNet и ViT оказались самыми защищёнными от one-pixel атаки. Их ни разу не удалось атаковать.
  • Архитектуры AlexNet и InceptionNet наиболее уязвимы к атаке. В первой модели можно добиться 53% успешных атак, а во второй — 43%.
  • Использование предобученных моделей понижает устойчивость к атаке
  • Увеличить устойчивость можно с помощью обучения модели на заранее зашумлённых изображениях.
  • Также защищённость модели можно повысить при замене функции активации с ReLU на SiLU.

P.S. Дальнейшие исследования будут нацелены на то, чтобы ответить на вопросы, почему именно такие факторы повышают устойчивость или почему генетический алгоритм работает лучше остальных и прочие.

Репозиторий исследования расположен тут. Если у вас есть интересные идеи, то с радостью готов их выслушать ;)