Использование возможностей CNN для обнаружения манипуляций с изображениями

С появлением социальных сетей, таких как Facebook и Instagram, за последнее десятилетие значительно увеличился объем данных об изображениях. Использование программного обеспечения для обработки изображений (и видео), такого как GNU Gimp, Adobe Photoshop для создания подделанных изображений и видео, является серьезной проблемой для интернет-компаний, таких как Facebook. Эти изображения являются основным источником фейковых новостей и часто используются злонамеренно, например, для подстрекательства к толпе. Прежде чем действовать на основе сомнительного изображения, мы должны проверить его подлинность. Для решения этой проблемы Технический комитет IEEE по информационной криминалистике и безопасности (IFS-TC) в 2013 году запустил задачу судебной экспертизы обнаружения и локализации, First Image Forensics Challenge. Они предоставили открытый набор цифровых изображений, состоящий из изображений, сделанных при различных условиях освещения, и поддельных изображений, созданных с использованием таких алгоритмов, как:

  • Content-Aware Fill и PatchMatch (для копирования / вставки)
  • Content-Aware Healing (для копирования / вставки и сращивания)
  • Clone-Stamp (для копирования / вставки)
  • Резьба по шву (ретаргетинг изображения)
  • Inpainting (восстановление изображения поврежденных деталей - частный случай копирования / вставки)
  • Alpha Matting (для сращивания)

Задача состояла из 2 этапов.

  1. На этапе 1 участвующие команды должны были классифицировать изображения как поддельные или нетронутые (без манипуляций).
  2. На этапе 2 они должны были обнаружить / локализовать области подделки в поддельных изображениях.

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

Зачем использовать CNN?

В эпоху, предшествовавшую глубокому обучению искусственного интеллекта, то есть до задачи Image Net 2012, исследователи в области обработки изображений разрабатывали ручные функции для решения задач обработки изображений в целом и классификации изображений в частности. Одним из таких примеров является ядро Собеля, используемое для обнаружения края. Набор инструментов криминалистической экспертизы изображений, которые использовались ранее, можно разделить на 5 категорий, а именно:

  1. Пиксельные методы, которые обнаруживают статистические аномалии, представленные на уровне пикселей.
  2. Методы на основе форматов, которые используют статистические корреляции, введенные конкретной схемой сжатия с потерями
  3. Технологии на основе камеры, использующие артефакты, вносимые объективом камеры, датчиком или постобработкой на кристалле.
  4. Физические методы, которые явно моделируют и обнаруживают аномалии в трехмерном взаимодействии между физическими объектами, светом и камерой.
  5. Методы, основанные на геометрии, которые позволяют измерять объекты в мире и их положение относительно камеры.

Предоставлено: https://ieeexplore.ieee.org/abstract/document/4806202

Почти все эти методы используют основанные на содержании особенности изображения, то есть визуальную информацию, присутствующую в изображении. CNN вдохновлены зрительной корой головного мозга. Технически эти сети предназначены для извлечения признаков, значимых для классификации, то есть тех, которые минимизируют функцию потерь. Параметры сети - веса ядра изучаются с помощью Gradient Descent, чтобы генерировать наиболее различающие функции из изображений, передаваемых в сеть. Затем эти объекты передаются на полностью связанный слой, который выполняет окончательную задачу классификации.

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

Набор данных

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

  • Поддельное изображение: изображение, которое было обработано / обработано с помощью двух наиболее распространенных операций манипуляции, а именно: копирования / вставки и сращивания изображений.
  • Безупречное изображение: изображение, которое не подвергалось манипуляциям, за исключением изменения размера, необходимого для приведения всех изображений к стандартному размеру в соответствии с правилами конкурса.
  • Объединение изображений: операции объединения могут объединять изображения людей, добавлять двери в здания, добавлять деревья и автомобили на парковки и т. Д. Объединенные изображения могут также содержать части, полученные в результате операций копирования / вставки. Изображение, получающее склеенную часть, называется «основным» изображением. Части, соединяемые вместе с основным изображением, называются «пришельцами».

Полный набор данных как для первого, так и для второго этапа можно найти здесь. В этом проекте мы будем использовать только поезд. Он содержит 2 каталога: один содержит поддельные изображения и соответствующие им маски, а другой - нетронутые изображения. Маска поддельного изображения - это черно-белое (не в оттенках серого) изображение, описывающее склеенную область поддельного изображения. Черные пиксели в маске представляют область, где в исходном изображении были выполнены манипуляции для получения поддельного изображения, в частности, это область сращивания.

Набор данных состоит из 1050 оригинальных и 450 поддельных изображений. Цветные изображения обычно представляют собой трехканальные изображения по одному каналу для каждого красного, зеленого и синего цветов, однако иногда может присутствовать четвертый канал для желтого цвета. Изображения в нашем наборе данных представляют собой смесь 1-, 3- и 4-канальных изображений. Посмотрев на пару одноканальных изображений, то есть изображений в оттенках серого, было очевидно, что эти изображения

  1. было очень мало
  2. были потоки черного или синего цвета

Разработчики задач добавили эти изображения специально, поскольку им нужны были решения, устойчивые к такому шуму. Хотя некоторые из синих изображений могут быть изображениями ясного неба. Поэтому некоторые из них были включены, а другие отброшены как шум. Переходя к изображениям четырех каналов - они тоже не содержали никакой полезной информации. Это были просто сетки пикселей, заполненные значениями 0. Таким образом, наш исходный набор данных после очистки содержал около 1025 изображений RGB.

Поддельные изображения представляют собой смесь трех- и четырехканальных изображений, однако ни одно из них не является шумным. Соответствующие маски представляют собой смесь 1-, 3- и 4-канальных изображений. Для извлечения признаков, которое мы будем использовать, требуется информация только из одного канала масок. Таким образом, наш корпус фейковых изображений насчитывает 450 фейков. Затем мы провели разделение на поезд, чтобы оставить 20% из 1475 изображений для окончательного тестирования.

Извлечение признаков в наборе поездов

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

Для каждого фейкового изображения у нас есть соответствующая маска. Мы используем эту маску для сэмплирования поддельного изображения вдоль границы области сращивания таким образом, чтобы обеспечить как минимум 25% -ный вклад как кованной, так и не кованной части изображения. Эти образцы будут иметь отличительные границы, которые присутствуют только на поддельных изображениях. Эти границы должны быть изучены созданной нами CNN. Поскольку все 3 канала маски содержат одинаковую информацию (поддельная часть изображения в разных пикселях), нам нужен только 1 канал для извлечения сэмплов.

Чтобы сделать границы еще более четкими, изображения в градациях серого были преобразованы в двоичные с использованием пороговой обработки Оцу (реализованной в OpenCV) после шумоподавления с использованием фильтра Гаусса. После этой операции выборка была просто вопросом перемещения окна 64 × 64 (с шагом 8) через поддельное изображение и подсчета 0-значных (черных) пикселей в соответствующей маске и выборки в случае, если значение находится в определенном интервале. .

После сэмплирования мы получили 175 119 патчей размером 64 × 64 от поддельных изображений. Чтобы создать 0 помеченных (нетронутых) пятен, мы взяли примерно такое же количество образцов из подлинных изображений. Наконец, у нас было 350 728 патчей, которые были разделены на наборы для обучающей и перекрестной проверки.

Теперь у нас есть большой набор данных входных изображений хорошего качества. Пришло время поэкспериментировать с различными архитектурами CNN.

Индивидуальная архитектура CNN

Первая архитектура, которую мы опробовали, была вдохновлена ​​архитектурой, приведенной в оригинальной исследовательской статье. У них были входные изображения размером 128 × 128 × 3 и, следовательно, большая сеть. Поскольку у нас вдвое меньший пространственный размер, наша сеть также была меньше. Это первая испытанная архитектура.

Здесь зеленые слои являются сверточными, а синие - максимальным пулом. Эта сеть была обучена на 150 000 образцах поездов (для целей тестирования) и 25 000 образцов для проверки. В сети было 8 536 параметров, которые были относительно меньше по сравнению с образцами поездов, что позволило избежать необходимости более агрессивного отсева. Коэффициент отсева 0,2 был применен к сплющенному выходу 20 единиц. Мы использовали оптимизатор Adam со значением скорости обучения по умолчанию (0,001) и beta_1, beta_2. Примерно через ___ эпох результаты были следующими

Точность поездов: 77,13%, Потери поездов: 0,4678

Точность проверки: 75,68%, потеря проверки: 0,5121

Эти цифры не очень впечатляют, учитывая тот факт, что в 2012 году CNN с большим отрывом исследовал особенности, разработанные экспертами. Однако эти числа не так уж и плохи, учитывая тот факт, что мы не использовали абсолютно никаких знаний в области судебной экспертизы изображений (статистика пикселей и связанные концепции), чтобы получить ___ точность для невидимых данных.

Передача обучения

Поскольку именно CNN превзошла все классические алгоритмы машинного обучения в задаче классификации ImageNet, почему бы не использовать работу одной из этих мощных машин для решения поставленной задачи? В этом идея Трансферного обучения. Вкратце, мы используем веса предварительно обученной модели, которая, вероятно, была обучена на гораздо большем наборе данных и дала гораздо лучшие результаты при решении своей проблемы для решения нашей проблемы. Другими словами, мы переносим обучение одной модели на построение нашей. В нашем случае мы используем сеть VGG16, обученную на наборе данных ImageNet для векторизации изображений в нашем наборе данных.

Взяв идеи отсюда, мы попробовали 2 подхода.

  1. Используйте возможности узких мест, выводимые VGG16, и создайте неглубокую сеть поверх этого.
  2. Выполните точную настройку последнего сверточного слоя модели VGG16 + Shallow в (1) выше.

Интуитивно понятно, что 2 дало гораздо лучшие результаты, чем 1. Мы попробовали несколько архитектур для неглубокой сети, прежде чем, наконец, пришли к этому.

Входные данные для слоя выравнивания - это узкие места, выводимые VGG16. Это тензоры формы (2 × 2 × 512), поскольку мы использовали входные изображения 64 × 64.

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

Точность поездов: 83,18%, Потери поездов: 0,3230

Точность проверки: 84,26%, потеря проверки: 0,3833

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

Второй подход требует тонкой настройки последних слоев. Здесь важно отметить, что для точной настройки мы должны использовать предварительно обученную модель верхнего слоя. Цель состоит в том, чтобы немного изменить уже изученные веса, чтобы лучше соответствовать данным. Если мы используем несколько случайно инициализированных весов, небольшие вариации не принесут им никакой пользы, а большие вариации разрушат изученные веса сверточного слоя. Нам также нужна очень небольшая скорость обучения для точной настройки нашей модели (по той же причине, что упоминалась выше). В этом посте предлагается использовать оптимизатор SGD для тонкой настройки. Однако мы заметили, что в этой задаче Адам превзошел SGD.

Доработанная модель дала следующие результаты

Точность поездов: 99,16%, Потери поездов: 0,018

Точность проверки: 94,77%, потеря проверки: 0,30

Слегка переобученная модель, которую можно исправить, используя еще меньшую скорость обучения (мы использовали 1e-6).

Помимо VGG16, мы также попробовали функции узких мест из моделей ResNet50 и VGG19, предварительно обученных на наборе данных Image-Net. Функции ResNet50 превосходят VGG16. VGG19 не дал очень удовлетворительных результатов. Мы настроили архитектуру ResNet50 (последний слой свертки) аналогично VGG16, используя ту же стратегию обновления скорости обучения, и это дало более многообещающие результаты с меньшей проблемой переобучения.

Точность поездов: 98,65%, Потери поездов: 0,048

Точность проверки: 95,22%, потеря проверки: 0,18

Окончательный прогноз модели на тестовых данных

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

Точность теста: 94,65%, потеря теста: 0,31

ResNet50, с другой стороны, дал следующие результаты на тестовых данных

Точность теста: 95,09%, потеря теста: 0,19

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

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

Это все для этого поста. Сообщите мне о других хороших методах обнаружения поддельных изображений в разделе комментариев. До следующего раза… Прощай.

Источники

  1. Http://ifc.recod.ic.unicamp.br/fc.website/index.py?sec=5
  2. Https://ieeexplore.ieee.org/abstract/document/4806202
  3. Https://www.youtube.com/watch?v=uihBwtPIBxM
  4. Https://medium.com/@gopalkalpande/biological-inspiration-of-convolutional-neural-network-cnn-9419668898ac
  5. Https://ieeexplore.ieee.org/abstract/document/7823911
  6. Https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html