Взлом нейронной сети с помощью пикселя

машинное обучение искусственный интеллект Нейронные сети
Краткий комментарий: только один пиксель может сделать окружность нейронной сети, что приведет к неправильному суждению о картинке.

One Pixel Attack

Может ли глубокая нейронная сеть неправильно классифицировать изображение, если мы изменим только один пиксель?

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

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

Следующие проекты являются версиями и учебными пособиями Keras:One pixel attack for fooling deep neural networks

как это работает?

В этом наборе атак мы использовалиCifar10 dataset. Задача набора данных — правильно классифицировать изображение размером 32X32 пикселя, а пул классификации имеет десять вариантов (например, птица, олень, грузовик и т. д.). Для этой атаки черного ящика требуются только вероятностные метки (значения вероятности для каждого класса), выдаваемые нейронной сетью. Мы генерируем псевдоклассификации, выбирая пиксель и изменяя его до определенного цвета.

Используя эволюционный алгоритм под названием «Дифференциальная эволюция» (DE), состязательные изображения повторяются в попытке минимизировать достоверность классификации нейронной сети.


  • Сначала сгенерируйте несколько состязательных примеров, случайным образом измените пиксель и запустите изображение с помощью нейронной сети.
  • Затем объедините измененное изображение с предыдущими позициями пикселей и цветами, чтобы создать больше состязательных примеров, которые затем продолжают проходить через нейронную сеть. Если на предыдущем шаге были пиксели, которые снижали доверие нейронной сети, замените их текущим наиболее известным решением.
  • Повторите вышеуказанные шаги и выполните несколько итераций; на последнем шаге верните состязательное изображение, чтобы минимизировать доверие нейронной сети. В случае успеха достоверность уменьшается настолько, что теперь новый (неправильный) класс имеет максимальную вероятность достоверности.

Вы можете обратиться к следующим примерам успешных атак:

Подробное объяснение примера процесса атаки:Hyperparticle/one-pixel-attack-keras

Getting Started

Если вы хотите прочитать проект и код, см.:View the tutorial notebook on GitHub.

Для запуска кода в руководстве рекомендуется выделенный графический процессор (TensorFlow — GPU), подходящий для запуска keras.

Требуется питон 3.5+.

1. Клонируем репозиторий (репозиторий)

git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keras

2. Если вы не установили пакет python в файле require.txt, сначала установите его.

pip install -r ./requirements.txt

3. Запустите учебную записную книжку iPython с помощью Jupyter.

jupyter notebook ./one-pixel-attack.ipynb

тренируйся и тестируй

бегатьtrain.pyДля обучения модели после запуска модели контрольные точки автоматически сохраняются в каталоге network/models.

В качестве примера обучите ResNet с 200 контрольными точками и пакетами по 128 байт:

python train.py --model resnet --epochs 200 --batch_size 128

Доступные на данный момент модели:

  • lecun_net
  • pure_cnn
  • net_in_net
  • resnet
  • densenet
  • wide_resnet
  • capsnet

результат

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

Неизбирательные атаки на 1, 2, 3 пикселя на 100 семплов

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

Как видно из графика, CapsNet лучше противостоит однопиксельным атакам, чем другие нейронные сети, но все равно очень уязвима.

веха

  • Набор данных Cifar10 (√)
  • Учебный блокнот (√)
  • Сеть Lecun, сеть в сети, остаточная сеть, модели DenseNet (√)
  • Модель CapsNet (капсульная сеть)(√)
  • Настраиваемый интерфейс командной строки (√)
  • Efficient differential evolution implementation
  • MNIST dataset
  • ImageNet dataset
оригинал:Hyperparticle/one-pixel-attack-keras

Принцип: состязательное изображение случайным образом меняет точку пикселя и запускает ее с помощью нейронной сети; затем эта точка объединяется с состязательным паттерном, чтобы продолжить работу с нейронной сетью; если есть пиксели, которые снижают доверие нейронной сети, заменить это с текущим максимумом. Лучшее решение; повторение и повторение вышеперечисленных шагов приведет к ошибочной оценке нейронной сети.

Для получения более подробной информации, пожалуйста, прочитайте:Hyperparticle/one-pixel-attack-keras

Аврора Дейли,Аврора Разработчикего СМИ.

Читайте три технические статьи на английском языке каждый день.