오늘은 데이터와 레이어에 대해 고민을 조금하게 되었다. Segmentation 테스크를 수행하는 도중 아래와 같이 작지만 임팩트 있을 것으로 보여지는 흰점들이 있는데이터를 만나게 되었다. 해당 점들은 VR 장비 내에서 나오는 것 같은데, 문제는 흰색에 가까우니 값이 (255,255,255)에 가까울 것이다.

CNN 알고리즘의 Convolutional layer는 아래와같이 커널 사이즈에 해당하는 윈도우(3x3)에 대해 연산을 수행하고, 그 결과를 Weight 와 연산하여 결과를 산출한다.

연산과정은 아래의 블로그에서 가져온 그림을 보면 보다 확실히 알 수 있다.

1. Activation Map
안녕하세요. 이번 글에서는 Class Activation Map (CAM)을 알아보기 전에 Activation Map을 통해 알 수 있는 것들이 무엇인지 알아보도록 하겠습니다. 1. CNN의 기본적인 연산 과정 Activation Map에 대해 설명하기 전에 CNN의 기본구조를 다시 한 번 간단히 살펴보도록 하겠습니다. 아래 그림을 보면 특정 입력에 대해서 convolution filter가 어떻게 연산이 되는지 보여주고 있습니다. 아래 그림에서는 input에 해당하는 데이터가 3×3×3의 형태입니다. 다시 말해, input 데이터…

즉, CNN은 해당 결과들이 진행됨에 따라 다양한 Edge를 찾아낸다.  Edge는 당연히 layer가 깊어질수록 점점 이미지가 축약되므로 거시적인 Edge를 잡는다. 그렇다면 원래 이미지에서 흰색 광은 Edge로 계속 디텍팅 될 것이라 생각된다. 따라서 Segmentation 성능을 높이기 위해서는 아마도 저 점들이 근처 안구와 동일하게 혹은 근방으로 가는게 좋지 않을까 라는 생각이 든다. CNN에서 연산을 Max 대신 Mean 을 수행할 수도 있겠지만, 해당 방법은 레이어가 깊어질수록 엣지를 잘 찾지 못할 것 같다.

Strides

그래서 드는 생각은 Strides였다. CNN 연산에서는 기본으로 Strides를 1로 하여 연산을 한다. Strides는 Windows가 움직이는 거리라 생각하면 편하다. 아래는 Strides가 2인 3x3 커널의 연산과정이다.

예상대로 Strides를 수행하면, 아래와 같은 feature를 확인할 수 있었다.

Dilation

그 다음으로 드는 생각은 Dilation였다. Dilation를 주게 되면 빈공간이 존재하니, 흰색광에 해당하는 이미지를 잘 무시할 수 있을 것이라는 생각이 든다.

아래는 Dilation을 추가한 그림인데 흰색광이 어느정도 뭉게졌지만, 동공에 대한 패턴 또한 무너지는 것을 볼 수 있었다.

아래는 최종적으로 Strides와 dilation을 결합한 결과이다. 해당 조합으로는 원하는 목표 대로 흰색광을 무시된 안구 이미지를 뽑아내는 Feature를 생성할 수 있는 것 같다.

참고될 포스팅

딥러닝에서 사용되는 여러 유형의 Convolution 소개
An Introduction to different Types of Convolutions in Deep Learning을 번역한 글입니다. 개인 공부를 위해 번역해봤으며 이상한 부분은 언제든 알려주세요 :)
1. Activation Map
안녕하세요. 이번 글에서는 Class Activation Map (CAM)을 알아보기 전에 Activation Map을 통해 알 수 있는 것들이 무엇인지 알아보도록 하겠습니다. 1. CNN의 기본적인 연산 과정 Activation Map에 대해 설명하기 전에 CNN의 기본구조를 다시 한 번 간단히 살펴보도록 하겠습니다. 아래 그림을 보면 특정 입력에 대해서 convolution filter가 어떻게 연산이 되는지 보여주고 있습니다. 아래 그림에서는 input에 해당하는 데이터가 3×3×3의 형태입니다. 다시 말해, input 데이터…