< 목차 >
- 용어정의
- 요약
- 시각화방법 및 구현
- Occlusion Visualization
- Saliency Map
- SmoothGrad
- Generate Specific Classmap
- Class Activation Mapping(CAM)
- 출처
1. 용어정의
- 피드백 후 작성예정입니다.
2. 요약
콘볼루션 뉴럴네트워크는 여러겹의 레이어에 입력이미지를 통과시킴으로써 이미지 내 대상를 인지하고 무엇인지 구분할 수 있다. 하지만 모델이 이미지 내에서 어느부분을 보고 대상을 인지하는지는 알 수 없기 때문에 이를 시각화하는 방법들이 다양하게 연구되고 있고, 본 글에서 관련된 대표적 기술들을 차례로 소개하고자 한다.
구현된 모든코드는 Github 및 코드구현 카테고리에 업로드 예정입니다.
3. 시각화방법 및 구현
3-1. Occlusion Visualization
이 방법은 아래 그림에서 나타나듯이, 사각형 필터(회색 영역)를 이미지 전체에 대해 슬라이딩시켜 해당영역을 가린 상태로 이미지를 콘볼루션 뉴럴네트워크가 올바른 예측을 하는지 보는 방법이다.
즉, 필터영역을 이미지에서 지웠을 때 네트워크가 계산한 클래스 스코어가 높은 경우에는 해당 필터영역이 대상 인식에 크게 중요한 영향을 미치지 않는다는 의미이고, 반대로 영역을 지웠을 때 클래스 스코어가 낮아지는 경우에는 해당 영역이 중요하다는 의미이다.
이러한 클래스 스코어를 시각화한 것이 바로 Occlusion Visualization 방법이며, 아래의 구현된 결과를 보면 시각화한 것이 큰 의미가 없을만큼 정확하진 않다. (물론 더욱 높은 해상도에서 더 작은 크기의 윈도우로 돌려보면 나름 정확할 수도 있다고 생각한다.)
3-2. Saliency Map
Saliency Maps은 네트워크의 입력이미지를 예측한 클래스 스코어에 대해 미분한 값으로, 이미지의 각 픽셀값이 클래스 스코어의 변화에 어느만큼 영향을 주는지 수치적으로 시각화한 것이다. 마찬가지로 구현결과는 아래와 같으며, 시각화 성분이 강하지 않고 실제 대상이 아닌 경우에도 클래스 스코어에 영향을 주는 픽셀들이 존재함을 확인할 수 있다.
3-3. SmoothGrad
위에 언급한 Saliency Maps 방법은 시각화 성분이 뚜렷하지 않고 노이즈 성분이 존재한다. 이러한 단점을 보완하기 위해 SmoothGrad가 도입되었다.
이 방법은 반복적으로정규분포를 갖는 랜덤노이즈를 입력이미지에 더해서 각 픽셀에 따라 클래스 스코어에 어느정도 영향을 주는지 미분값을 통해 수치화하고, 이것들을 평균하여 기존노이즈를 제거하고 시각화를 더욱 개선하는 방법이다. 입력데이터 값의 10% 범위 내에서 랜덤노이즈를 발생시키고 50번 반복하여 얻은 구현해본 결과는 아래와 같다.
3-4. Generate Specific Classmap
또한, 아래와 같이 간단하게 네트워크 모델의 Backward를 이용해서 특정 클래스 스코어에 상응하는 패턴이미지를 생성할 수도 있다. 아래 구현결과이미지는 ImageNet으로 학습된 VGG19모델에서 생성된 패턴인데 수백만장의 이미지가 학습되었기 때문에 직관적으로 의미파악이 어려운 패턴들이 혼합되어 생성되었다고 생각된다.
3-5. Class Activation Mapping(CAM)
Class Activation Mapping(CAM)은 콘볼루션 뉴럴네트워크의 인식영역을 보기위해 Fully-Connected Layer 앞에 위치한 콘볼루션 레이어에서 특징맵을 추출하고, 입력데이터에 대한 클래스 스코어 사이에서 특징맵이 영향을 미치는 정도를 시각화한 것이다.
CAM은 아래의 그림 한장으로 이해할 수 있으며, 어떤 특정클래스로 분류될 확률을 구할 때 사용되는 가중치들을 앞단의 콘볼루션 레이어에서 추출한 특징맵과 곱하여 네트워크가 어떤 대상을 보고 해당 클래스로 분류했는지 알 수 있게 된다.
아래는 구현결과이며, Fully-Connected Layer가 하나인 Densenet161모델을 사용하여 특징맵을 추출하고 시각화하였다. 이미지 내 어떤 부분을 보고 분류를 했는지 알 수 있다.
4. 출처
- arxiv.org/abs/1311.2901 - Visualizing and Understanding Convolutional Networks
- arxiv.org/abs/1509.06321 - Evaluating the Visualization of What a Deep Neural Network Has Learned
- arxiv.org/abs/1512.04150 - Learning Deep Features for Discriminative Localization
- arxiv.org/abs/1706.03825 - SmoothGrad: removing noise by adding noise
- arxiv.org/abs/1312.6034 - Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
'인공지능 > 컴퓨터비전' 카테고리의 다른 글
Deep Learning Based 2D Human Pose Estimation: A Survey (2) | 2021.04.30 |
---|---|
Content & Style Extraction (4) | 2021.04.26 |
Convolution Neural Networks & Visualization (0) | 2021.04.21 |
Loss functions for Image Transformation (1) | 2021.04.20 |
EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning (0) | 2021.04.19 |