Как найти, какому патчу в оригинальном изображении соответствует активация в сети VGG после последнего слоя пулинга.

Вопрос или проблема

Итак, я работаю над задачей воспроизводимости NeurIPS 2019. Ссылка на статью: https://arxiv.org/abs/1806.10574. В основном у нас есть сеть vgg-16 с удаленными финальными полносвязными слоями, так что у нас есть активационные карты размером 7x7x512. Теперь в статье вводится новый прототипный слой, в котором мы сравниваем эти активационные карты 7×7 с прототипами размером 1x1x512, используя норму L2. Везде, где прототип имеет максимальную схожесть после рассмотрения всех входных изображений, мы приравниваем прототип к этой патче 1x1x512 на активационных картах.

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

Теперь, что я выяснил, это то, что переход от 224×224 к 7×7 можно эффективно осуществить с помощью ядра 212×212 с шагом 32 (используя эффективное локальное воспринимаемое поле) изображение, объясняющее это (не мое, скопировал изображение откуда-то).

Хорошо, так что теперь, если я получаю активацию 1×1, для которой мне нужно найти оригинальный патч изображения… это довольно просто… но проблема в том, что в сети VGG мы применяем нулевое заполнение 1 многократно, поэтому фактически мы получаем заполнение 90 (рассчитано с использованием размера входа 224, размера ядра 212 и шага 32) на оригинальном изображении. Так что, предположим, я получаю верхний левый 1×1 активацию как ту, для которой я хочу найти патч, тогда у нее будет много частей = 0 из-за сильного эффективного заполнения на оригинальном изображении. Это нормально?

Извините за чрезвычайно длинный вопрос, но он концептуальный и требует глубокого объяснения.

Отслеживание активации через нейронную сеть — сложная задача. OpenAI Microscope помогает визуализировать это.

Ответ или решение

Для того чтобы определить, какой патч оригинального изображения соответствует активации в моделях VGG после финального слоя подгонки, необходимо учитывать несколько факторов, связанных с архитектурой сети, размерами фрагментов активации и воздействиями операций свертки, включая нулевое дополнение (padding).

1. Архитектура VGG и размерность активаций

Как известно, сеть VGG-16 осуществляет свертки с использованием малых фильтров (размером 3×3), которые последовательно уменьшают пространство признаков. Ваша ситуация предполагает, что вы работаете с активациями размером 7x7x512 после удаления полностью соединенных слоев. Тем не менее, определение подходящего шага для обратного преобразования патчей активации в оригинальное изображение требует внимательного анализа.

2. Понимание receptive field

Как вы упомянули, receptive field (область восприятия) является важным аспектом в понимании того, как активации на выходе связаны с входным изображением. Для VGG рекурсивно наращиваем receptive field, что в вашем случае баланса 224×224 изображения к 7×7 активациям будет равно 212×212 с шагом в 32.

3. Рассмотрение нулевого дополнения

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

4. Идентификация патча в оригинальном изображении

Теперь, когда у вас есть выбранный патч 1×1 активации, для определения соответствующего патча в оригинальном изображении можно воспользоваться следующими шагами:

  • Координаты соответствия: Изучите координаты 1×1 активации. Каждое значение активации в 7×7 отображается на определенный участок оригинального изображения. Учитывая stride 32 и нулевое дополнение, вычислите соответствующие исходные координаты через следующие операции:

    • Определите индексы активации: если вы имеете вектор координат (i, j) активации, соответствует это:
    • ( x_{orig} = j \times 32 – 90 )
    • ( y_{orig} = i \times 32 – 90 )
  • Проверка выхода за границы: Убедитесь, что полученные координаты находятся в пределах 0 до 224 (размер оригинального изображения). Если координаты отрицательные, это будет указывать на то, что данная активация имеет плотный перекрывающийся контекст из-за нулевого дополнения.

5. Оценка значимости нулевого дополнения

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...