8주차 CNN Visualization 정리

kimkihoon·2022년 3월 17일
0

부스트캠프 AI

목록 보기
28/49

Visualizing CNN


CNN을 Visualizing 한다는 것은 debugging tool을 갖는것과 동일하다.

ZFNet

낮은 계층에는 기본적인 영상처리 필터들이 분포하고 점점 높은 계층으로 갈수록 high level features들을 학습했다는 것을 확인할 수 있었다.


왼쪽으로 갈수록 모델을 이해하기위한 노력이고 오른쪽으로 갈수록 데이터 결과를 분석하는데 초점을 맞췄다.

Analysis of model behaviors

Embedding feature analysis


Nearest neighbors

쿼리가 주어지면 유사한 이웃 영상을 찾아준다.


Dimensionality reduction

backbone network를 활용해서 특징을 추출하면 너무 고차원적인 vector가 나오게 되므로 차원축소를 시킨다.


t-SNE

클래스별로 분포를 확인하고 유사도를 확인할 수 있다.


Layer activation

layer의 activation을 분석함으로써 모델의 특성을 파악하는 방법이다.
각 activation의 channel이 CNN에서는 hidden node인데 이것들을 통해서 각 hidden node들의 역할을 파악할 수 있다.


Maximally activating patches

hidden node에서 가장 높은 값의 주변을 patch해서 확인한다. 중간계층을 분석하는데 적합한 방버이다.

  • 분석하고자하는 특정 layer를 하나 정한다.
  • 예제 데이터를 bacbone 네트워크에 넣어서 각 layer의 activation을 저장한다.
  • 해당 layer에서 가장 큰 값을 갖는 위치를 파악하고, 그 위치에 오기전의 첫 입력 이미지에서 파악된 위치의 receptive fields에 대한 patch를 뜯어온다.

Class visualization

각 클래스를 판단할 때에 이 네트워크가 상상하는 모습을 대충 생각할 수 있다.


argmax

I는 이미지고 f는 CNN 모델이다.
I를 f에 넣어서 클래스 스코어가 나오는데 이 값이 가장 높게 나오는 I를 찾는것이다.

Regularization term

argmax를 사용하면 영상이 아닌 부분이 찾아지게 되므로 reg term을 추가한다.
람다를 곱해서 값을 제어한다.

Gradient ascent


임의의 영상을 분석하고자하는 CNN모델에 넣어준다. target class의 score를 추출한다.


backpropagation을 통해 입력이 어떻게 변해야 target score가 높아지는지 학습하고 input image를 업데이트한다.
이 과정들을 여러번 반복한다.

Model decision explanation

모델이 특정 입력을 어떤 각도로 바라보고 있는지 해석하는 방법들

Saliency test 1


Occulusion map

A라는 map을 넣었을 때 elephant라고 대답할 확률이다.
map을 어느 위치에 넣는지에 따라 값이 바뀐다.
색이 진할수록 연관성이 높고 연할수록 낮다.


via Backpropagation

랜덤이미지가 아닌 특정 이미지를 분류해보고 최종 결론이 나온 class에 결정적으로 영향미친 부분에 heatmap으로 표시한다.
input에서 어떤 부분이 민감한지 알 수 있다.
현재 데이터가 어떻게 해석되는지 볼 수 있다.

Rectified unit


Forward pass를 할 때에 음수가 나오면 그 부분을 backward 할 때 0으로 대체한다.

deconv 방식과 forward의 위치를 저장해두고 backward할 때 해당 위치값을 0으로 만드는 방식에서 새로운 아이디어 도출하였다.

올라갈 때와 내려갈 때 모두 0으로 만들고 이 방식을 Guided Backprop이라고 한다.

CAM

유명하고 가장 많이 사용된다.
heatmap을 그려주고 잘 호라용하여 boundingbox도 생성가능하다.
FCLayer 하기 전에 GAP를 통과한다.
CAM 구조를 갖는 모델을 다시 학습한다. 재학습하기 때문에 성능이 떨어질 수도 있다.

Grad-CAM

CNN이기만하면 뒷부분이 얼마나 복잡한지 아닌지는 신경쓰지 않는다.
CAM과 다르게 재학습이 없고 구조변경도 없다.

0개의 댓글