CS 공부/AI
CNN Visualization (결과 분석 기법)
imsmile2000
2023. 4. 3. 20:17
CNN Visualization이란?
- CNN은 블랙박스 방식이다
- 결과는 인간과 유사하게 또는 원하는대로 도출할 수 있지만 무엇을 근거로 그러한 결과가 나왔는지 알 수 없다
1. Feature analysis (모델의 특징 분석)
- Embedding Feature 분석 방법 (High Layer 해석)
- Nearest neighbors(NN) in feature space
- 단순한 픽셀 비교가 아니라 컨셉을 이해해서 물체의 위치변화에도 강함
- query image와 비슷한 이미지를 DB에서 찾아서 나열하면 의미론적으로 유사한 이미지들끼리 모이게 됨
- 특징과 유사한 이미지들을 묶어서 return
- 전체적인 이미지 파악은 어려움
- Dimensionality reduction
- 3차원 이상의 고차원의 분포를 저차원으로 차원축소하여 얻어내는 방법
- t-SNE(t-distributed stochastic neighbor embedding): 높은 차원의 복잡한 데이터를 2차원에 차원 축소
- feature space의 형상 시각화
- 데이터 사이의 거리가 가까울수록 유사도가 크고, 멀수록 유사도가 작아진다
- Nearest neighbors(NN) in feature space
- Activation investigation (Middle, High layer 해석)
- Layer activation
- 각 layer의 hidden node를 파악할 수 있음 (얼굴을 찾는 노드인지, 계단을 찾는 노드인지)
- AlexNet의 conv5의 138번째 채널은 얼굴을 찾고, 53번째 채널은 계단을 찾는다
- 적당한 값으로 thresholding하여 mask 생성
- 각 layer의 hidden node를 파악할 수 있음 (얼굴을 찾는 노드인지, 계단을 찾는 노드인지)
- Maximally activating patches
- feature map이 Maximally Activating 이미지 상의 어느 부분에 초점을 맞추는지 면밀하게 확인할 수 있다
- 특정 layer 내 각 feature map이 커버하는 현실 이미지 상의 시각적 특징들 확인 가능
- Patch 뽑는 과정
- 원하는 layer의 채널 선택
- 예제 데이터를 backbone network에 넣어서 각 layer의 activation 값을 모두 뽑음
- 가장 큰 activation 값을 가지는 위치 근방의 patch를 뽑음
- Class visualization
- 특정 네트워크가 어떤 모습을 상상하고 있는지 확인 가능
- Gradient ascent: 네트워크 가중치를 전부 고정시키고 gradient ascent를 통해 클래스 스코어가 최대화될 수 있도록 입력 이미지의 픽셀값을 바꿔주는 방법
- 임의의 아무 영상을 넣어 target class의 prediction 점수를 얻는다
- backpropagation을 통해서 입력단의 gradient를 구한다 (target class의 점수가 높아지는 방향으로)
- 이미지 업데이트
- 업데이트된 영상으로 1번~3번 여러번 반복 (초기 설정에 따라 결과가 다양해짐)
- Layer activation
2. Sensitivity Analysis (민감도 분석, data에 집중)
- Saliency test
- Occlusion map: occlusion으로 이미지를 가림. 어떤 위치를 가리냐에 따라 occlusion score가 바뀜
- 물체와 상관없는 영역일수록 점수가 높다, 물체가 있을수록 점수가 낮음
- 모든 영역에 이미지를 가려보면서 heatmap을 만듦
- Backpropagation 이용
- 결과물을 보고 결정적으로 영향을 미친 부분이 어디인지 heatmap 기법으로 나타내는 방법
- input 이미지의 class score을 얻음
- 입력 도메인까지 backpropagation해주고 여기서 얻은 gradient의 절대값을 취해줌
- 2에서 얻은 gradient 크기 map을 시각화
- 결과물을 보고 결정적으로 영향을 미친 부분이 어디인지 heatmap 기법으로 나타내는 방법
- Occlusion map: occlusion으로 이미지를 가림. 어떤 위치를 가리냐에 따라 occlusion score가 바뀜
- Backpropagaation-based Saliency
- Rectified unit (backward pass)
- backaward 연산을 적용할 때 gradient 자체에 ReLU 적용
- Guided backpropagation
- 양수의 Gradient값만을 사용하여 최적화 하는 기법
- 조금 더 깨끗한 이미지를 얻을 수 있다
- Rectified unit (backward pass)
- Class activation mapping
- CAM
- 이미지의 어떤부분이 최종 결정에 기여하는지 시각화 (bbox)
- Conv의 마지막 FC layer 대신 Global average pooling layer 통과시켜 새로운 weight 만들어냄
- 데이터셋에서 위치정보를 주지않아도 위치를 파악해준다는 놀라운 사실이,,,!
- 단점: 마지막 layer이 FC layer과 GAP으로 이루어져야하고 re-training이 필요하다
- Grad-CAM
- 기본 CNN이외에 필요한 backbone이 필요없어 일반화된 툴
- CAM에서 Global average pooling 없이 FC layer가 두 개 존재
- 각 Feature map에 곱해줄 weight를 학습이 아닌 미분(gradient)을 통해 구하기 때문에 re-training 필요없음
- CAM 계산식 유도 과정
- neuron importance weight, a와 각 k개의 Feature map을 곱하여 weight sum of Feature map을 구함
→ ReLU를 취하여 최종 Grad-CAM에 의한 Heatmap이 출력 - https://wewinserv.tistory.com/143
- neuron importance weight, a와 각 k개의 Feature map을 곱하여 weight sum of Feature map을 구함
- CAM
CAM (Class activation mapping) 내용 정리 [XAI-2]
논문 제목 : Learning deep features for discriminative localization 논문 주소 : openaccess.thecvf.com/content_iccv_2017/html/Selvaraju_Grad-CAM_Visual_Explanations_ICCV_2017_paper.html ICCV 2017 Open Access Repository Grad-CAM: Visual Explanations F
wewinserv.tistory.com