Содержание статьи
Исходный кот. Как заставить нейронную сеть ошибиться
Автоматизация процесса
Для этой уязвимости есть библиотека one-pixel-attack-keras, которая делает эксплуатацию тривиальной. Для уверенного результата необходим не один, а несколько (три или пять) пикселей. Но качество этого метода и так превзошло ожидания ученых: около 30% изображений было превращено в подделки изменением одного пикселя, а изменением трех — уже 80%.
Помимо такого способа обмана нейросети, ученые придумали еще очень много разных подходов, чтобы оставить искусственный интеллект в дураках. Именно поэтому была создана универсальная библиотека foolbox, которая автоматизирует все шаги, необходимые для создания поддельной картинки. Давай скачаем и используем ее!
Распознавание объектов — метод компьютерного зрения для поиска и идентификации людей, животных, зданий, транспорта на изображениях или видео. Включает определение класса: автомобиль, человек, животное, выделение границ объекта и его местоположение на изображении.
Для распознавания объектов применяются модели машинного и глубокого обучения, такие как сверточные нейронные сети (CNN), региональные сверточные нейронные сети (R-CNN), пирамидальные сверточные сети (FPN) и другие. Эти алгоритмы обучаются на размеченных датасетах, содержащих изображения с указанным местоположением и классом объектов.
При создании ложных изображений главное оружие нейронных сетей используют против них самих. Все нейронные сети — это большие математические функции, и, чтобы найти ложное изображение, разумно использовать их же. Так что наша задача сводится к оптимизации методом градиентного спуска.
Математика такой атаки до неприличия проста: мы выворачиваем процесс обучения нейронной сети наизнанку. Вместо фиксированных входных данных (тренировочного датасета) и обучающейся сети тут мы имеем меняющиеся, «обучающиеся» входные данные и фиксированную сеть.
Используя схожую технологию, что и у foolbox , ученые придумали другую атаку на нейросети, которая затрагивает лишь один пиксель. Новый алгоритм ищет тот пиксель изображения, который больше всего влияет на вывод нейронной сети, а затем использует найденную «точку давления», чтобы поменять правильный результат на неверный.
Поиски ошибочно распознаваемого примера можно поделить на два разных вида: ненаправленную атаку, когда ищется любой подходящий пример (необязательно имеющий смысл), и специально направленную атаку, цель которой — создать минимально измененный ошибочный пример, глядя на который человек распознает объект без проблем, а программа — нет.
Простая реализация
Самый большой минус ненаправленной атаки — это полное отсутствие у результата какой-либо смысловой нагрузки для человека. Но преимущество такой атаки — возможность легко применять в реальном мире. Например, через видеокамеры устройств IoT или систем безопасности: достаточно распечатать результат на бумажке и поднести к объективу.
Если хочешь проверить результат на своей машине, то используй скрипт из начала статьи — он запустится даже без графического процессора. Вот изображение, созданное этим алгоритмом, в формате PNG, сохрани его и посмотри, как на самом деле работает обман нейросетей.
Нейросети теперь повсюду, и распознавание объектов на картинках — это одно из самых популярных применений. Но что, если ты не хочешь, чтобы объекты на твоей картинке распознали? Или, например, хотел бы, чтобы нейросеть «увидела» что-то, что не увидит человек, глядя на ту же картинку? Для этого придуманы обманные методы, которые обращают нейросети против них самих. И благодаря готовым библиотекам пользоваться ими легче легкого.
Выбор метода зависит от требований к проекту, доступных ресурсов и задач, которые необходимо решить. Классические методы часто используются для простых задач, но для сложных или при обработке большой библиотеки данных сверточные нейронные сети, как правило, являются наиболее эффективным подходом.