Gaussiandra / PSCC-Net-review

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PSCC-Net

Постановка задачи

Авторы статьи решают задачу image manipulation detection and localization, где для предложенной картинки нужно определить, есть ли изменения вида splicing, copy-move, removal и, если есть, вывести маску, где эти изменения применены.

Пример картинок с изменением и соответствующими масками.
dataset example

Верхнеуровневое описание

Исследователи реализуют архитектуру сети на основе HRNet и предложенного SCCM модуля для нахождения spatial и channel-wise корреляций. Сеть состоит из Top-down и Bottom-up проходов. В первом проходе из исходной картинки извлекаются признаки четырёх разных размерностей с помощью HRNet. Далее во втором проходе каждый из четырёх наборов признаков пропускается через SCCM и Detection Head, благодаря чему удаётся оценить вероятность того, что картинка была изменена, и узнать маску предполагаемого изменения.

Архитектура PSCC-Net net

Полученная архитектура работает и обучается быстрее предшественников и при этом станосится SOTA подходом в задачах детекции и локализации.

Детальное описание

Исходная картинка пропускается через HRNetV2p-W18, благодаря чему получается четыре набора признаков размерностей $\displaystyle\frac{H}{2^i} \times \displaystyle\frac{W}{2^i} \times 2^iC, \ где \ i = {0, 1, 2, 3}$. Затем решаются задачи детекции с помощью Detection Head и локализации с помощью SCCM. Сам процесс локализации заключается в получении маски изменённой части картинки ($M_1$). Она получается из HRNet признаков ($F_i$), как описано в цитате из статьи ниже.

image

SCCM

Основное нововведение статьи состоит в предложенном способе находить spatial и channel-wise корреляции, а затем объединять их.

Прежде всего к признаками применяется функция $h$, которая уменьшает их размерность(см. фото ниже), что позволяет снизить расход памяти и время работы сети. В данном случае $r$ берётся равным четырём.

image

Далее применяются $1 \times 1$ свёртки $g, \theta, \phi$ для преобразования $h(X)$.

image

После чего происходит вычисление spatial and channel-wise attentions и их upsampling($h^{-1}$).

Ys Yc

В конце концов вычисляются residuals и искомая маска.

image

Обучение происходит на binary cross-entropy loss, который учитывает качество детекции и всех полученных масок.

loss

Данные и подробности обучения

Обучение происходило на 116,583 картинках с splicing class, 100,000 с copy-move class, 78,246 с removal class, и 81,910 фотограций без изменений. В статье также подробно описан способ генерации этих данных для обучения.

На вход подавались картинки размером 256x256, обучение просходило с batch size = 10 и learning rate 2e-4 с уменьшением вдвое каждые пять эпох(всего их 25) на Nvidia GTX 1080Ti. Всего 2M параметров на HRNet(бралась предобученная на ImageNet), 0,9M на Detection Head и 0,7M на остальную часть Bottom-up пайплайна.

Результаты и метрики

В качестве метрик в статье используют F1 и AUC и измеряют качество для задач локализации и детекции отдельно. Кроме этого, для задачи локализации ещё делают дообучение под домен датасета, на котором считается оценка.

Оригинальный PSCC-Net показывает лучшее качество на датасетах Columbia, CASIA, NIST16 и IMD20. На Coverage он оказывается вторым(table II). Дообученная модель стала лучшей на датасетах Coverage, CASIA, NIST16(table III).

localization metrics

В задаче детекции PSCC-Net также показала лучшие результаты среди других моделей.

detection metrics

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

Идеи для улучшения

  1. Взять HRNet с большим числом параметров, чем в предложенной статье. Например HRNet W64(вместо W18, как в статье).
  2. Увеличить число параметров в SCCM блоке, уменьшив параметр $r$ до двух. Эта идея позволит уменьшить проблему боттленека(про которую авторы даже не писали) во время применения функции $h$. Сейчас их опасение про недостаток видеопамяти менее актуально ввиду появления всё более новых видеокарт.
  3. Попробовать взять другой энкодер (например EfficientNet или какой-нибудь ViT) и отказаться от применения четырёх разных слоёв для генерации масок, вместо этого использовать только один SCCM. Применение четырёх разных слоёв выглядит довольно нецелостно и у меня есть интуитивное ощущение, что эту часть можно оптимизировать. Кроме этого, мой вариант должен лучше распараллеливаться.
  4. Можно ускорить процесс обучения и инференса модели, если использовать только две или три маски вместо четырёх. В статье(Table V) показано, что качество от Mask 3 к PSCC-Net растёт незначительно, но при этом время исполнения возрастает на 25%.

About