Перейти к основному содержимому

Интерпретация прогнозов

Выделение регионов, отвечающих за класс

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

Для работы метода нужно выбрать изображение xx и интересуемый класс cc, после чего работать с его вероятностью pc(x)p_c(x) или ненормированным рейтингом класса gc(x)g_c(x) до SoftMax преобразования.

Анализ закрасок

В анализе закрасок (occlusion analysis) [1] на классифицируемом изображении последовательно закрашиваются небольшие квадратные участки, после чего визуализируется карта предсказанной вероятности интересуемого класса для модифицированного изображения. Каждой позиции (i,j)(i,j) на этой карте соответствует вероятность pc(xij)p_c(x_{-ij}), где xijx_{-ij} - изображение, на котором затёрта квадратная часть серым цветом с центром в позиции (i,j)(i,j). Примеры таких карт для верного класса (указанного внизу соответствующих изображений) показаны ниже [1]:

Градиент по изображению

В работе [2] предлагается способ локализации регионов, отвечающих за тот или иной класс. Для этого ищется пространственная карта градиентов (gradient map) по рейтингу интересующего класса gc(x)g_c(x) на входном изображении:

W=gc(x)x.W=\frac{\partial g_c(x)}{\partial x}.

Данная карта вычисляется однократным проходом назад (backward pass) в методе обратного распространения ошибки. Градиент вычисляется не по весам модели, а по пикселям изображения, поэтому карта градиентов будет иметь тот же размер, как и исходное изображение.

Далее карта градиентов преобразуется в карту выраженности (saliency map) SRH×WS\in\mathbb{R}^{H\times W}, где HH и WW - высота и ширина рассматриваемого изображения.

В случае чёрно-белого изображения размера H×WH\times W выраженность считается как модуль градиента

Sij=Wij,S_{ij}=|W_{ij}|,

а в случае цветного - как максимальный градиент вдоль цветовых каналов R,G,B:

Sij=maxk{R,G,B}WkijS_{ij}=\max_{k\in\{R,G,B\}} |W_{kij}|

Ниже приведены примеры карт выраженности для нескольких изображений относительно предсказанного для них класса [2]:

Как видим, предсказанный класс локализован верно, хоть и с сильным шумом. В последующих работах были предложены различные улучшения (Guided Backpropagation [4] и Deconvolution [1]), позволяющие получить выделение класса более чётко.

Градиент по слою

Одним из способов избежать шумных оценок по отдельным пикселям является выявление связи не между рейтингом класса и исходными пикселями, а между рейтингом класса и картой активаций последнего свёрточного слоя, что было реализовано в методе Grad-CAM [3].

Пусть gc(x)g_c(x) - рейтинг интересуемого класса (перед SoftMax), а AijkA^k_{ij} - значение карты активаций (feature map) kk-го канала последнего свёрточного слоя сети в позиции (i,j)(i,j). Сама карта представляет собой матрицу AkRh×wA^k\in\mathbb{R}^{h\times w}.

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

αkc=1hwi=1hj=1wgc(x)Aijk\alpha^c_k=\frac{1}{hw}\sum_{i=1}^h \sum_{j=1}^w \frac{\partial g_c(x)}{\partial A^k_{ij}}

Тогда карта выраженности для класса cc считается по правилу:

S=ReLU(kαkcAk)S=\text{ReLU}\left( \sum_k \alpha^c_k A^k \right)

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

Полученная карта важности будет иметь размер последнего свёрточного слоя h×wh\times w, поэтому её нужно увеличить до размера изображения H×WH\times W перед тем, как наложить на фотографию.

Характерные изображения класса

Рассмотрим свёрточную нейросеть для классификации изображений. Такая нейросеть выдаёт CC рейтингов классов g1(x),...gC(x)g_1(x),...g_C(x), которые впоследствии проходят через SoftMax преобразование, чтобы вычислить вероятности классов.

В работе [1] предложен способ визуализации того, как нейросеть представляет тот или иной класс. Допустим, нас интересует класс cc. Для определения того, как нейросеть его видит, решается следующая оптимизационная задача:

x^c=argmaxx{gc(x)λx22},\hat{x}_c = \arg\max_x \{ g_c(x)-\lambda \|x\|^2_2\},

т.е. находится такое характерное изображение x^c\hat{x}_c, которое бы максимизировало рейтинг соответствующего класса. Чтобы избежать бесконтрольного изменения интенсивностей пикселей, изображение дополнительно регуляризуется по L2 норме (второе слагаемое в критерии оптимизации).

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

Примеры изображений, визуализирующих различные классы датасета ILSVRC-2013 на модели AlexNet приведены ниже [2]:

Другие подходы к визуализации

Для интерпретации отдельных свёрточных фильтров можно перебирать на изображениях различные фрагменты изображения, от которых зависит соответствующая свёртка (receptive field) и визуализировать те фрагменты, которые приводят к максимальной активации выбранной свёртки. Примеры такой визуализации отдельных свёрток на всё более глубоких слоях свёрточной сети приведены ниже [1]:

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

Непосредственная визуализация свёрток первого слоя

Обратим внимание, что на первом слое можно было визуализировать свёрточные фильтры и непосредственно, поскольку их ядра (convolution kernel), имеют размер 3×(2n+1)×(2n+1)3\times (2n+1)\times (2n+1) и могут интерпретироваться как изображения. Свёртки максимально активируются, когда обрабатываемые фрагменты будут наиболее похожи на их ядра. Последующие свёртки не допускают подобной непосредственной визуализации, поскольку будут обрабатывать уже больше 3х слоёв.

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

Для этого фиксируется слой, на котором располагается интересующий на свёрточный фильтр. Далее обучается декодировщик (deconv net [1]), восстанавливающий исходные изображения по внутреннему представлению изображений на выбранном слое.

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

Литература

  1. Zeiler M. D., Fergus R. Visualizing and understanding convolutional networks //Computer Vision–ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part I 13. – Springer International Publishing, 2014. – С. 818-833.

  2. Simonyan K. Deep inside convolutional networks: Visualising image classification models and saliency maps //arXiv preprint arXiv:1312.6034. – 2013.

  3. Selvaraju R. R. et al. Grad-cam: Visual explanations from deep networks via gradient-based localization //Proceedings of the IEEE international conference on computer vision. – 2017. – С. 618-626.

  4. Springenberg J. T. et al. Striving for simplicity: The all convolutional net //arXiv preprint arXiv:1412.6806. – 2014.