1. CAM 소개
오늘은 CAM: Class Activation Map이라는 기법에 대하여 알아볼 것이다.
해당 기법은 모델이 이미지의 어떤 위치를 보고 각각의 class를 예측하는지를 시각화하는 기법이라고 생각하면 간단하다.
기존 이미지 분류 모델들은 좌측 이미지처럼 각 layer을 거쳐 feature map을 뽑아서 해당 feature map을 flatten 시켜 Fully connected layer을 거쳐 각각의 클래스에 대한 확률을 얻게 된다. 그러나 이러한 flatten을 함으로써 이미지의 spatial한 정보를 잃게 된다.
CAM은 `fully connected layer` 대신에 `Global Average Pooling`을 이용하여 spatial 정보를 잃지 않고 확률값을 얻게 하였다.
2. CAM 원리
Global Average Pooling layer은 각 layer을 통해 얻어지는 feature map에다가 Global average pooling을 적용한다.이 말은 각 feature map에 포함된 모든 원소값을 평균한다는 의미이다. 그럼 feature map의 채널 수와 동일한 길이의 벡터를 얻게 된다. (하나의 feature map이 길이 1의 벡터가 되므로)
다음으로 해당 벡터를 Fully connected layer을 통과시켜서 확률값을 얻게되는데, 이때 학습을 통해 얻어진 Fully connected layer의 가중치(이 가중치는 특정 클래스로 분류하게 되는 가중치)에 이전에 벡터로 변환하기 전 채널 수만큼의 feature map에 해당 가중치를 곱하여 heat map 형식으로 출력한 것이 CAM이 된다.
아래 그림을 보면 더 쉽게 이해할 수 있을 것이다.
마지막으로 heatmap 결과를 원본 이미지에 덮어 씌워 해당 이미지의 어떤 특징에 가중치가 높은지를 확인할 수 있다.
위의 전체적인 과정을 요약하면 다음 이미지와 같다.
3. CAM 단점
그러나 Gloabal average pooling layer을 거친 다음 여전히 Fc layer을 거쳐야 하며, 사용하고자 하는 모델에 gap가 없다면 해당 모델을 불러와 fc layer이전에 gap을 추가하고 해당 Fc layer의 weight을 구하기 위하여 반드시 재학습을 시행해야 한다. 또한 마지막 convolution layer을 통과해 나온 feature map에 대해서만 CAM을 적용할 수 있다는 단점이 존재하였다.
이를 다음 년도에 Grad-CAM이 등장하여 이러한 단점을 메꿨다.
'ML & DL > 개념정리' 카테고리의 다른 글
PCA-주성분 분석 (0) | 2024.02.27 |
---|---|
Grad-CAM: Gradient Class Activation Map (0) | 2024.01.31 |
Activation Function: 활성화 함수 (0) | 2024.01.31 |
Feature engineering (0) | 2024.01.11 |
연속형, 범주형 변수 처리 (0) | 2024.01.11 |