2021. 9. 14. 22:50ㆍAI 부스트캠프
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
- 현재 layer에서 채널하나를 선택한다.
- 이미지 조각을 공급하고, activation 값을 기록한다
- 가장 큰 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 레이어가 하나만 있는 모델은 바꿀필요가없으므로 괜찮음
- 구조를 변경하지 않고, 재학습도 필요없는 grad-CAM도 존재
- https://wordbe.tistory.com/entry/Grad-CAMGradient-weighted-Class-Activation-Mapping 다음 블로그를 참조하여 조금 더 깊이있게 다뤄보자!
'AI 부스트캠프' 카테고리의 다른 글
[Week6 & Day4] Multi-Modal Learning (0) | 2021.09.17 |
---|---|
[Week6 & Day 3] Conditional Generative Model (0) | 2021.09.16 |
[Week5 / Day 2] Annotation Data Efficient Learning[ (0) | 2021.09.09 |
[Week 5/ Day 1] Image Classification (0) | 2021.09.07 |
[Week 3] Pytorch(통합정리) (0) | 2021.08.20 |