[Week6 & Day1] CNN Visualization

2021. 9. 14. 22:50AI 부스트캠프

Visualizing CNN

Why?

시각화를 한다는 것은 곧 디버깅을 의미한다. Computer Vision에서 시각화를 통한 디버깅은 모델 성능을 개선시키는데 매우 필수적인 작업이라고 할 수 있다.

 

왼쪽부터 input image >> output label으로 진행되는데,

첫번째로 알아 볼것은 Low layer단에서의 visualizing 이다.

input img => filter visualization => activation visualization 으로 진행된다. 단, 둘다 첫번째 convolution layer에서 추출한 값들로 시각화를 해야된다.
그럼 뒷쪽 layer들은 ? 왜 이렇게 하지 않을까? 
직관적으로 알아볼수 있는 형태가 나오지 않는다. 즉, 사람이 해석할수 없게된다 (차원수가 높기때문)

 

 

좌측으로 갈수록 모델에 포커스, 우측으로 갈수록 데이터 결과에 포커스를 맞춘다

Analysis of model behaviors

High level layer

모든 layer을 거친 ouput을 시각화 하는법 : nearest neighbor을 이용한다.
거리에 따라서 정렬을 하게 되는데 해석을 할 수 있는 여지를 주게 된다. 
예를 들어 코끼리 영상이 들어오면 가장 유사한 사진을 DB에서 뽑아온다

 


또 예를들어 어떤 이미지가 들어오면 픽셀사이즈로 유사한 사진을 뽑아온다.
그런데 픽셀별로 찾아오면 포즈나 위치가 다를 수 있다. 의미는=> 픽셀은 포즈나 위치변화에 강인하게, 컨셉을 잘 학습한다

미리 학습된 NN을 준비 FC layer전에서 feature을 추출할 수 있게끔 한다.


Embedding feature을 분석하는 방법
너무 고차원이여서 해석하기가 힘들다는 것을 해결하기 위해 고차원 벡터를 저차원 벡터로 차원축소를 이용한다.
t-SNE를 이용한다. (쉽게 이용가능하다)


Mid level layer

Layer activation(mid 와 high layer을 시각화)

각 노드마다 어떤 역할을 하는지 알 수 있게된다.

 

  • Maximally activating pathes
  1. 현재 layer에서 채널하나를 선택한다.
  2. 이미지 조각을 공급하고, activation 값을 기록한다
  3. 가장 큰 activation 값 근처에서 이미지를 crop한다

Output level

Gradient ascent

loss 계산 식 : I* = arg max f(I) {f는 관심있는 클래스} - Reg(I) {regularization term, 보통 L2 norm을 사용, 작아져야되는 정도}

순서
1. 임의의 영상을 input으로 넣어 준다 (여기서 임의의 영상이란 ? 빈 이미지나 랜덤한 초기값을 의미한다)
2. 역전파를 통해 gradient를 계산하여 업데이트한다
3. 계속 input의 img를 업데이트 한다

 

Model decision explanation

Saliency test

  • Occlusion map
    • 이미지를 국소적으로 돌며 가려가면서 정확도를 측정하는데, 높은 정확도가 나타나면 이미지를 판별하는데 별로 중요하지 않은 부위임을 알 수 있다.
    • 이렇게 도출된 점수들로 heatmap으로 표현 가능하다
  • via Backpropagation
    • 역전파를 통해 색깔이나 밝기를 통해 영역이 중요한 부분인지 아닌지 판별가능
    • Gradient ascent 와 비슷한 구조를 가지고 잇지만 다른점이 존재한다. 입력으로 임의의 값이 아닌 현재 데이터와 관련된 값을 넣어줘야 한다.

 

Class activation mapping (CAM)

  • heatmap과 같은 형태로 표현해주는 시각화
  • conv part를 통과 하고 FC layer을 통과하기 전에 GAP을 둔다 그리고 gap을 통과하고 FC layer는 하나만 통과하도록 재설계한다
  • 단점 : 마지막 레이어를 바꿔야되므로 성능이 바뀌게 된다. 단, FC 레이어가 하나만 있는 모델은 바꿀필요가없으므로 괜찮음