[딥러닝] CNN Visualization

hj choi·2022년 10월 17일
0

AI

목록 보기
25/27

1. Visualizing CNN

1.1 CNN visualizaiton 이란?

  • Black box 시스템인 CNN의 내부를 visualization을 함으로써, 블랙박스 안을 들여다본다.

1.2 vanila example : filter visualization

  • filter visualization - (3,11,11)인 필터라서 컬러로 나옴

  • Activation visualization - input(강아지사진)에 filter로 convolution시킨 결과가 각 filter마다 한 채널로 나오기 때문에 흑백이미지로 나온다. 자세히 보면 어떤 결과는 강아지가 45도로 있는 것, 칼라를 반영하는 것, 세부적인 디테일을 본 결과들 등 다양한 결과들을 확인 할 수 있다. 이렇게 간단한 visualization을 통해 CNN의 첫 layer가 어떤것을 보고, 어떤것을 행동하고 있는지를 볼 수있다.

1.3 neural network를 분석 하기 위한 다양한 방법들

  • 뉴럴 네트워크 시각화의 방법
    • 모델 자체의 특성을 분석하는 방법론
    • 하나의 입력데이터에서부터 모델이 어떤 결론을 내었을때 어째서 그런 결론에 도달하게 되었는지 출력을 분석하는 방법론

2. Analysis of model hehabiors (모델의 특성 분석)

2.1 High level layer를 거쳐서 얻게된 feature들을 분석하는 방법


  1. 데이터베이스(DB)에 미리 많고 다양한 데이터셋을 넣어 놓은 뒤, Query image가 들어오면, Neares neighbors(NN)를 사용해 데이터베이스에 있는 데이터 중 , 인접한 n개의 데이터셋을 보는 방법
  • 강아지의 자세와 위치가 다름에도 가장 인접한 6개의 데이터가 이렇게 나왔다는것은 학습된 feature가 물체의 위치변화에 강인하게, 그리고 컨셉에 잘 학습했다는 것을 알 수 있다.
  1. 차원을 낮추는 방법
    2.1 t-SNE(t-distributed stochastic neighbor embedding)(깊은layer를 해석하는 방법)
    숫자를 t-SNE를 사용하여 visualization한 결과

2.2 Layer activation (중간layer와 깊은layer를 해석하는 방법)
layer의 activation을 분석함으로써, 모델의 특성을 파악하는 방법

2.3 Maximally activating patches(중간layer를 해석하는 방법)
layer activation을 분석하는 방법중에, patch를 뜯어서 사용하는 방법이 있다. 각 layer의 채널에서 하는 역할을 판단하기 위해서 그 채널 즉, hidden node에서 가장 높은값을 갖는 위치의 근방의 patch를 뜯어서 보면 어떤 특징을 보는 히든 노드인지 알 수 있다.
예제 데이터를 backbone 네트워크에 넣어서 각 layer의 activation을 다 뽑습니다. 그리고 우리가 뽑고 싶어했던 14번째 채널에 activation을 저장합니다. 그리고 그렇게 저장된 해당 채널에 activation값 중에서 가장 큰 값을 갖는 위치를 파악하고 그 위치에서 여기 activation에 오기전에 있는 입력 도메인에 이 위치에서의 maximum값을 도출하게 된 receptive field를 계산한 다음에, receptive field에 대한 입력영상의 해당 patch를 뜯어온다.

2.4 Class visualization(예제 데이터를 사용하지 않고, 네트워크가 내재하고있는(기억하고 있는) 이미지가 어떤것인지 분석하는 방법)

Model decision explanaion

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

3.1 Saliency test

  1. Occlusion map


A라는 큰 patch를 이용해서 Occulusion으로 가려준다. 그 때 elephant라고 대답을 할 확률이 score가 된다.

마찬가지로 B부분을 가렸을 때는 0.88이 나온다. 이렇게 어떤 부분을 가려주는지에 따라 스코어가 달라진다. 물체의 중요한 부분을 가리는지, 상관없는 부분을 가리는지에 따라 스코어가 달라지는 것을 활용해서 각 위치를 모두 확인해보며 위치에 따라서 변하는 score의 지도를 기록한다.

  1. via Backpropagation

  1. Class activation mapping(CAM)


0개의 댓글