쿠다 4기/<네이버 부스트코스> 컴퓨터 비전

4-1. CNN Visualization(1): 동작 원리

coding_my_diary 2023. 10. 10. 21:56

1. CNN 

CNN(Convolution Neural Network)에 대해 간단히 소개하자면, 시신경의 구조를 모방한 계층적 구조를 가지는 모델으로 인공 신경망의 한 유형이다. 시각적 데이터에서 특징을 추출하고 학습하는 데 특화되어 있어 주로 이미지 분류, 객체 탐지 및 이미지 생성과 같은 작업에 사용된다. 

CNN 구조

CNN은 크게 특징 추출 단계(Feature Extraction)와 이미지 분류 단계(Classification)으로 구성되어있다. 특징 추출 단계에서는 Convolution layer와 Pooling layer을 반복하며 지나가며 이미지의 특징을 추출한다. 다음으로 이미지 분류단계에서는 flatten layer에서 데이터 타입을 FC네트워크 형태로 변경(입력 데이터의 shape변경)하고 softmax layer에서 classification을 수행한다. 즉 특징 추출 단계에서 추출한 특징을 입력데이터로 fully-connected신경망에 보내 classification을 수행하는 것이다.

 

2. CNN Visualization

이런 CNN을 시각화 하는 것이 CNN Visualization이다. CNN이 내부적으로 어떤 원리를 거쳐 이런 결과를 만들어낼 수 있는 것인지,  CNN내부의 convolution filter들은 어떤 정보를 학습하는지, 문제가 생겼다면 원인은 무엇인지 등의 질문에 답하기 위해서는 CNN Visualization을 알 필요가 있다. 

convolution의 역연산인 deconvolution을 통해 CNN layer들이 각 위치에 따라 어떤 지식을 배우는지 시각화해보자.

확인해본 결과 높은 계층으로 갈 수록 추상적이고 의미론적인 정보를 담고 있는 필터를 확인할 수 있다. 반면 낮은 계층일 술고 보다 가로/세로 무늬, 동그란 형태 등 방향성에 대한 정보를 담고 있다. 

 

Filter weight visualization

 

간단한 시각화 방법인 filter weight visualization을 통해 모델을 분석해보자. 위 사진을 보면 AlexNet에 filter weight visualization을 적용한 결과를 확인할 수 있다. 첫번째 convolution layer의 filter은 color image로 시각화할 수 있는데, 그 결과 color detector, 각도 디텍터, 블록 디텍터 등 다양한 operation을 학습한 여러 필터를 확인할 수 있다. 이를 activation 취해 시각화 하면, 흑백 이미지로 시각화되는데, 각 필터에 따라 강조하거나 감지하는 특징이 다르기때문에 CNN의 내부 필터가 어떤 정보에 집중하고 있는지 직관적으로 확인할 수 있다. 

왜 filter visualization에서 주로 첫 번째 convolution layer을 집중적으로 다룰까?

뒤쪽의 layer들은 앞쪽 layer들과 합성되어 더 추상적이고 visualization한 결과가 덜 직관적이다. 따라서 단독으로 다루는 것이 큰 의미가 없어 직관적으로 정보를 파악하기 쉬운 첫번째 convolution layer을 다룬다.

이와 같이 블랙박스에 가까운 딥러닝 모델을 분석하고 설명하기 위한 다양한 시각화 방법이 연구되어왔다. 이는 다음 포스팅에서 다루겠다.