1 what is CNN Visualization?
- CNN의 원리를 시각화 -> CNN은 어떻게 인간보다 뛰어날 수 있을까, 왜 어떨땐 잘 되고 어떨땐 잘 못할까?
- Black box를 들여다 봄으로 원리를 이해해보자는 시도 -> debug tool과 같은 역할 가능
- 더 나아가서 성능을 더욱 끌어올리는 방법에 대한 연구
ZFNet[Zeiler and Fergus, ECCV 2014]
- deconv를 이용한 feature map의 시각화
- low level feature와 high level feature가 구분되는 것을 볼 수 있음
Filter weight visualization
- Filter visualization : conv 필터 자체를 그려보는 것
- Activation visualization : conv의 결과를 들여다 보는 것
- 필터 수가 적은 1st conv, low level conv 를 이해할 수는 있지만 필터수가 많은 high level conv 는 시각화가 어렵다
2. Analysis of model behaviors
2.1 Enbedding feature analysis
Nearest neighbors in a feature space [krizhevsky et al., NIPS 2012]
- classifier, fc layer를 통과하기 전의 feature map을 고차원 공간에 분포시키고 고차원상의 거리가 가까운 데이터를 클러스터링 한다.
- 너무 고차원이어서 해석하기 어렵고 직관을 가지기 어려울 만큼 난해하다.
Dimensionality reduction
t-distributed stochastic neighbor embedding (t-SNE) [Maaten and Hinton, JMLR 2008]
- 직관적인 저차원상의 분석이 가능하다.
Layer activation -Behaviors of mid-to high -level hidden units [Bau et al., CVPR 2017]
- hidden unit들의 activation 을 마스크로 만들어 보면 그 유닛이 어디를 집중하는지 알 수 있다.
Maximally activating patches
- activate 된 값중 가장 큰 값에 해당하는 부분(patch)를 찾아서 보면 해당 노드가 어디를 가장 주요허게 보는지 알 수 있다.
- 완전 high level 보다는 중간층의 분석에 적합하다.
- Analysis step
1. Pick a channel in a certain layer
2. Feed a check of images and record each activation map (of the chosen channel)
3. Crop image patched around maximum activation
Class visualization
- Generate a synthetic image that triggers maximal class activation
- 최적화를 통해서 class에 따른 이미지를 어떻게 '상상' 하고 있는지 알 수 있다.
- 입력의 이미지로 노이즈를 넣고 원하는 class의 prediction을 최대화 하는 이미지를 최적화를 통해 찾는다.
- 해석 가능한 이미지를 얻기 위해서 입력 이미지의 크기를 regularizer로 넣어준다.
- Gradient ascent를 통해서 값을 최대화 하도록 최적화해야한다.
-Optimize step
1. get a prediction score of the target class of a dummy image
2. backpropagate the gradient maximizing the target class score
3. update the current image
3. Model decision explanation
모델이 특정 입력을 어떤 각도로 바라보는지 해석하는 방법
Occlusion map
- patch를 통해서 특정 부분을 가리고 (occlusion) 확률을 얻어보는 방법
검은 부분은 물체 인식에서 중요한 정보가 있는 부분으로 해석할 수 있다.
Saliency test via Backpropagation - Derivatives of a class score w.r.t. input domain [Simonyan et al., CoRR 2013]
- Class visualization과는 다르게 의미가 있는 입력을 넣어준다.
- 거기서 부터 발생한 gradient를 관찰함으로 유의미한 입력을 어떤 관점으로 보는지 확인하는 방법이다.
Backpropagation-based saliency
- Zeiler 방식 backward pass 에서 발생하는 gradient 값에 ReLU를 취해주고 update 한다.
- deconv연산이라고 생각할 수 있고 이를 이용한 saliency map의 시각화가 가능해진다.
- Rectified unit [Kim et al., ICCV 2019]
- Forward rectifing mask 와 backward rectifing mask를 and gate 연산 하여 saliency map을 얻는다.
- 사실 수학적으로 굉장히 이상한 연산이라고 할 수 있는데 의미론 적으로 접근해 볼 수 있다.
- Forward pass에서 class 결정에 필요한 정보가 있는 pixel과
backward pass에서도 동시에 의미가 있는 pixel들을 시각화 했다는 해석이 가능하다.
Class Activation Mapping (CAM)
- Derivation of CAM
- Global Average Pooling 의 선형성을 이용하여 연산의 순서를 바꿔주면 CAM이 유도된다.
- GAP를 하기 이전이므로 spatial information이 남아있는 상태다.
- 이 saptial information을 이용하여 공간차원의 어디에 집중하는지 알 수 있다.
- 데이터에서 위치정보를 주지 않았음에도 위치정보를 학습하는 weekly supervised learning 이 가능하다.
- Flattening->classifier 구조를 가지는 모델에서는 성능을 보장하기 힘들다는 단점이 있다.
- Grad-CAM
- Backbone이 CNN이면 일반화된 학습 가능
- 기존의 CAM에서 사용한 importace weight을 어떻게 구할 것인가에 초점
- Loss function의 관심이 있는 feature map에 대한 gradient -> GAP -> importance weight of feature map
- Saliency map과 유사한 접근
- Grad-CAM으로 Guided backprop.을 마스킹하여 사용도 가능
- SCOUTER[Li et al., arXiv 2020]
- GAN dessection[Bau et al., ICLR 2019]
###
피어세션
금일 피어세션 회의록 공유드립니다.
■ 상현님 꿀팁 공유
1. black 을 이용하여 Python Code를 PEP8 형식 맞춰 오류 및 수정 가능 (Flake8 은 오류 검사만)
2. Github에 linter를 setting하여 push 할 때, 자동 검사하고 Push or Merge 여부를 제어할 수 있다.
3. Codeclimate를 이용하여 Github에 Code Quality를 지표(Score)상으로 확인하고 게시할 수 있다.
■ 강의 관련
1. Filter visualization (p9)
-. 1차 Layer의 Filter 시각화, 그리고 이를 적용했을 때의 Activation 시각화
-. 2차 Layer 이후 Filter 들은 3차원(channel)이 아니므로 사람이 이해할 수 없는 형태이며,
시각화 하는게 큰 의미가 없다. [Dimensionality reduction(차원 축소) 必]2. Embedding feature analysis - Nearest neighbors (p13)
-. 사물의 위치정보에 크게 영향을 받지 않고 특성을 잘 학습됨을 확인할 수 있다.3. Nearest neighbors in a feature space (p19)
-. 각각의 Feature들을 n차원 공간 상에 표시하였고, 유사도를 이용하여 Classification 및 유사 Image 추출 가능4. t-SNE (p22)
-. 점과 점사이의 거리가 중요한 정보이다. (축은 큰 의미가 없다.)5. Layer activation (p23)
-. Receptive Area 내 activation 이 진행된 영역(ReLU)에 대해서 표시6. Maximally activating patches (p27)
-. activation 값이 제일 큰 부분의 Receptive Area Crop & 출력7. Class visualization (p28)
-. 학습 Data 의 Bias 부분도 시각화를 통해 확인할 수 있다. (ex) 강아지 옆 어린 아이)8. Gradient ascent (p29)
-. Maximize가 되었을 때 학습이 끝 (I*)
-. argmax f(I) : Input Image에 대한 label 값을 Maximize
-. Regularization term : 사람이 분석할 수 있는 Data 범위로 맞춰주는 역할
댓글