BoostCamp

2021.09.13 - [Week 7] Day 1. 컨디션 쏘쏘

배기니어 2021. 9. 14. 00:09

공부한 내용

CNN Visualization

1. Visualizing CNN

 1.1. What is CNN visualization?

  1) Black box

   • CNN은 학습 가능한 convolution과 non-linear activation function들의 stack으로 이루어진 연산기

   • 가설 : 무엇인가 학습을 해서 결과가 잘 나오지 않을까?

   • CNN은 여러 단계에 걸친 학습으로 정해진 weight들로 복잡하게 이루어져 있다. -> black box

   • CNN visualization 통해 black box 들여다 보자!

   • visualization 통해 왜 잘 작동하는지 가늠

   • visualization 통해 어떻게 성능을 높일 수 있을지 힌트를 얻을 수 있다.

   • visualization은 debugging tool의 역할

  2) ZFNet

   • CNN layer들이 위치에 따라 어떤 지식을 배웠는지 deconvolution 이용해서 visualization

   • low level feature에는 기본적인 영상처리 filter같은 것들이 분포

   • high level feature에는 의미있는 표현 학습된 것 확인 가능

   • CNN을 눈으로 보면서 tuning 가능 -> visualization은 중요한 기술이다!

  3) Filter weight visualization

   • 가장 간단한 방법 : filter를 visualization하는 방법

   • e.g. AlexNet에서 첫 번째 layer의 convolution filter visualization

    - 3x11x11

    - color, edge, angle, block detector 같은 기본적인 operation 학습 확인

    - filter 취한 activation map을 visualization한 결과, 한 채널의 흑백 image로 표현 -> 각 filter의 특성마다 결과 출력

   • 높은 계층 layer는 filter 자체의 차원 수가 높아 추상적이고, 사람이 해석 사능한 정보가 부족하여 visualization의 의미가 없다.

  4) Types of neural network visualization

   • analysis of model behaviors

    - model 자체의 특성을 분석하는 visualization 방법

    - model을 이해하기 위한 노력

   • model decision explanation

    - input data로부터 나온 output에 대해 어떻게 output을 냈는지 출력 분석

    - data 결과 분석에 초점

 

2. Analysis of model behaviors

 2.1. Embedding feature analysis

  1) Overview

   • low level, mid level, high level 거쳐서 나온 feature를 분석하는 방법

  2) NN (Nearest Neighbor)

   • 예제 영상을 통해 visualization 하는 방법

   • query data 영상과 유사한 영상 DB 내에서 검색 후 거리(유사도)에 따라 정렬

   • 의미론적으로 비슷한 영상들이 clustering -> semantic concept 이해했다고 볼 수 있다.

   • pixel 별 비교를 통해 영상을 검색할 수도 있지만 비슷한 영상을 못 찾을 수도 있고, 전체적인 concept를 이해하지 못한다!

   • 학습된 feature가 물체의 위치 변화에 강인하고, concept 잘 학습한 것을 알 수 있다.

  3) NN in feature space

   • feature space (embedding space) : embedding feature vector가 존재하는 high dimensional space

   • 구현 : pretrained된 CNN에서 FC layer만 잘라 feature 추출 할 수 있도록 준비

   • 미리 예제 영상들의 feature를 추출해 DB에 저장 후 영상과 feature 연결(mapping, association)

   • query image의 feature와 가까운 image 찾아 return

   • 전체적인 그림 파악하기어려운 단점

  4) Dimensionality reduction

   • embedding 해석 방법

   • 고차원으로 가면 해석이 어렵기 때문에 차원을 축소하여 저차원으로 표현

   • backbone network 활용하여 feature 추출 후 고차원 feature vector 생성

   • high dimensional space에 있는 feature vector의 distribution을 저차원에서 표현

   • 눈으로 쉽게 확인 가능한 분포

   • e.g. MNIST dataset

    - class마다 서로 다른 색으로 표현

    - 전반적으로 비슷한 class끼리 분포

    - 3, 5, 8 세 숫자의 분포가 서로 맞닿아 있다 -> model이 세 class를 비슷하게 바라보고 있다고 해석

  5) Layer activation

   • 중간 layer, 높은 layer 해석하는 또 다른 해석 방법

   • layer의 activation 분석하여 model의 특성 파악

   • e.g. AlexNet

    - 채널 별 activation에 적당한 threshold 적용하고 mask로 만들어 input 영상에 overlay

    - 각 activation의 channel을 CNN에서 hidden node로 표현 가능

    - e.g. 138ch : 얼굴 찾는 node, 53ch : 계단 찾는 node

   • 각 layer의 hidden node들의 역할 파악할 수 있는 해석적인 방법

   • CNN은 hidden unit들이 각각 간단한 task를 다층으로 쌓아 조합하여 물체를 인식한다고 해석 가능

  6) Maximally activating patches

   • layer activation 이용한 분석 방법 중 patch를 사용하는 방법

   • 각 layer의 hidden node(channel)에서 하는 역할 판단

   • hidden node에서 가장 높은 값을 갖는 위치에서 patch를 뜯어 visualization

   • 국부적인 patch 분석하는 방법으로, 중간 계층(mid layer) 분석에 적합

   • 분석 방법

    - ① 분석하고자 하는 layer 선정 (e.g. conv5 layer의 14번째 channel)

    - ② data를 backbone network에 넣어 activation을 뽑고, 원하는 channel의 ativation map 저장

    - ③ 저장된 activaiton 중 가장 큰 값을 갖는 위치에서 input domain의 receptive field 파악 후 patch를 뜯어 나열

  7) Class visualization

   • network가 기억하고 있는 image가 어떤 것인지 분석

   • 각 class 판단할 때 network가 상상하는 모습

   • gradient ascent

    - gradient ascent 통해 합성 영상을 찾아나가는 과정

    - class score를 최대화하는 I에 대한 class score

    - L2 norm

   • 분석 방법

    - ① 임의의 영상(black or random initial 영상)에 대해 class score 계산

    - ② backpropagation을 통해 gradient 구해서 target class score를 높이는 방향으로 input image를 update

    - ③ update된 input image로 위의 과정 반복

 

3. Model decision explanation

 3.1. Saliency test

  1) Occlusion map

   • patch로 특정 부분을 가렸을 때, class를 맞출 확률 계산

   • patch의 위치에 따라 heatmap으로 표현

  2) via Backpropagation

   • backpropagation 통해 network가 결정에 input의 어느 부분을 참조하는지 분석

   • 분석 방법

    - ① input 이미지에 대해 class score 계산

    - ② backpropagation으로 gradient 계산

    - ③ gradient를 시각화

 

 3.2. Backpropagate features

  1) Rectified unit

   • forward path : 음수의 값만 0으로 masking (ReLU)

   • backward path : forward path에서 적용된 masking을 그대로 적용하여 해당 부분을 0으로 변경

   • deconvolution : backward path의 이전 convolution에서 0 이하인 부분에 masking 적용

  2) Guided backpropagation

   • backward path + deconvolution

   • forward path에서의 masking과 backward path에서의 masking을 함께 사용

   • network가 집중하는 부분을 좀 더 구체적으로 표현 가능

 

 3.3. Class Activation Mapping

  1) CAM (Class Activation Mapping)

   • input image의 어떤 부분을 참조했는지 heatmap 형태로 표현

   • GAP (Global Average Pooling) layer와 FC layer의 연산 순서를 바꿔 CAM 적용

   • GAP layer와 FC layer가 있는 network 구조에서 적용 가능한 한계 (e.g. ResNet, GoogLeNet)

   • network 재학습 필요

  2) Grad-CAM

   • backpropagation 통해 CAM의 구조적인 한계 및 재학습 문제 극복

   • CNN backbone network에서 추출된 activaiton map마다 가중치 계산

   • backpropagation으로 가중치 구해 Activiation map을 weighted sum하여 Grad-CAM 계산

   • 여러 가지 head 적용하여 다양한 task 수행 가능

  3) SCOUTER

   • input이 왜 해당 class인지, 왜 다른 class가 아닌지 시각적으로 표현

 

 3.4. Conclusion

  1) GAN dissection

   • GAN에서 특정 채널을 이용하여 element 생성 및 수정 가능

   • e.g. 문을 담당하는 채널 이용하여 건물 사진에서 문 생성 가능

 

 

손에 수포가 올라왔따.

백신을 맞고 생긴 부작용인지 대상포진인지...

경험 상 대상포진은 한 부위에 집중적으로 생기는데 양 손에 다 올라온거 보니 대상포진은 아닐 것 같다.

뭐든 그냥 별 탈 없이 지나가줬으면 한다. 공부에 집중하고 싶다아아아아아아

 

'BoostCamp' 카테고리의 다른 글

2021.09.23 - [Week 8] Day 1. Comma  (0) 2021.09.24
2021.09.14 - [Week 7] Day 2. 팀 구성 완료  (0) 2021.09.15
2021.09.09 - [Week 6] Day 4. -  (0) 2021.09.10
2021.09.07 - [Week 6] Day 2. -  (0) 2021.09.08
2021.09.06 - [Week 6] Day 1. Level 2  (0) 2021.09.07