2021.09.13 - [Week 7] Day 1. 컨디션 쏘쏘
공부한 내용
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. 문을 담당하는 채널 이용하여 건물 사진에서 문 생성 가능
손에 수포가 올라왔따.
백신을 맞고 생긴 부작용인지 대상포진인지...
경험 상 대상포진은 한 부위에 집중적으로 생기는데 양 손에 다 올라온거 보니 대상포진은 아닐 것 같다.
뭐든 그냥 별 탈 없이 지나가줬으면 한다. 공부에 집중하고 싶다아아아아아아