[17′ CVPR] Active Convolution: Learning the Shape of Convolution for Image Classification

This entry is part 13 of 22 in the series Vision Model

내용 요약

Active Convolution 이전 방식의 문제점에 대해 살펴봅니다. 이어서 Active Convolution의 제안 방법을 하나씩 자세히 살펴봅니다. 마지막으로 실험 결과를 통해 제안 방법의 효과를 확인합니다.

1. 들어가며

이번 글에서는 2017년 CVPR에 발표된 Active Convolution: Learning the Shape of Convolution for Image Classification 논문을 리뷰합니다. 이 논문은 Active Convolution 이라고 불리며, 이번 글에서도 Active Convolution 이라고 지칭하겠습니다.

2. 기존 방식의 문제점

CNN의 Convolution 연산은 아래 그림과 같이 고정된 필터 사이즈를 갖고 있습니다.

1.기존 convolution의 고정된 receptive field 사이즈
그림1. 기존 Convolution의 고정된 Receptive Field Size

이 말은 CNN이 볼 수 있는 시야 폭인 Receptive Field Size가 고정되어 있다는 말입니다. 이는 하이퍼파라미터로 사람이 직접 설정해줘야 하는 값이고, 이 값에 따라 동일한 네트워크의 성능이 크게 달라집니다.

이 상황은 이렇게 비유해서 생각해볼 수 있습니다. 사진을 한 장씩 보면서 이게 어떤 동물인지를 맞추는 문제를 풀 겁니다. 그런데 돋보기를 하나 골라서 쓰고 문제를 풀어야 합니다. 이 돋보기는 100배 확대 ~ 100배 축소까지 다양하게 선택할 수 있습니다. 너무 확대되는 돋보기를 선택하면 코끼리의 다리만 보일 것이고, 너무 축소되는 돋보기를 선택하면 코끼리가 점으로 보일 겁니다. 결국 하나씩 돋보기를 들고 문제를 풀어본 뒤에 가장 적당한 돋보기를 선택할 수밖에 없는 거죠.

돋보기를 고르기 어렵다는 문제 (=Convolution Filter 사이즈를 선택하기 어렵다) 외에도 문제가 하나 더 있습니다. 문제에 코끼리만 나오는 게 아니고 다람쥐, 거북이 등 아주 작은 동물도 있을 텐데요, 코끼리를 보기에 적당한 돋보기를 가지고 다람쥐, 거북이를 보면 잘 보일까요?

2.동일한 돋보기로 코끼리와 거북이를 보았을때
그림2. 동일한 돋보기로 코끼리와 거북이를 보았을때

3. 제안 방법

이러한 문제를 해결하기 위한 저자들의 제안 방법을 살펴보겠습니다.

3-1. 입력에 따라 사이즈가 변하는 Convolution 연산을 만들자

저자들은 위의 문제 상황에서 이런 생각을 한 것 같습니다. ‘문제가 코끼리일 때는 축소되는 돋보기를 사용하고, 문제가 거북이일 때는 확대되는 돋보기를 사용하자.’ 이를 Convolution 연산에 적용해보면 ‘입력에 따라 사이즈가 달라지는 Convolution 필터를 적용하자’라고 할 수 있습니다. 저자들은 이를 Active Convolution이라고 부릅니다. Convolution 연산과 필터의 측면에서 비교해보면 다음과 같습니다.

3.일반적인 convolution과 active convolution의 비교
그림3. 일반적인 Convolution과 Active Convolution의 비교

일반적인 Convolution 연산에서는 입력(검은색)과 고정된 사이즈의 Convolution 필터(파란색)를 연산하는 모습을 볼 수 있습니다. 반면 아래의 Active Convolution 연산에서는 Convolution Filter가 제 각각 다른 방향으로 흩어진 뒤(진한 파란색) 입력과 연산하는 모습을 볼 수 있습니다. 용어 혼란을 방지하기 위해 앞으로는 각각 움직이는 한 칸의 필터는 작은 필터라고 부르겠습니다. 이렇게 입력에 따라 작은 필터들이 제각각으로 움직이게 하기 위해서는 작은 필터마다 움직임에 대한 변수가 있어야겠고, 이 변수는 입력에 따라 변하는 값이어야겠네요. 그림으로 보면 다음과 같습니다.

4.필터마다 적용되는 (𝝙x,𝝙y)
그림4. 필터마다 적용되는 (𝝙x,𝝙y)

작은 필터마다 x방향과 y방향의 움직임 양을 의미하는 변수 (𝝙x,𝝙y)를 볼 수 있습니다. 그리고 이러한 움직임의 정도는 각각의 필터마다 달라야 할 겁니다. (위 그림의 오른쪽 파란색, 초록색, 빨간색 필터에 해당) 따라서 각각의 필터마다 (파란색, 초록색, 빨간색마다) 9쌍의 (𝝙x,𝝙y)가 있을 겁니다.

3-2. Active Convolution 연산에 픽셀 값이 대응하는 방법

그런데 막상 이렇게 Convolution 연산을 해보려고 하면 이런 의문이 듭니다. ‘(𝝙x,𝝙y)가 실수 값이면 이미지 값의 중간 어딘가에서 점이 찍힐 텐데, 이때의 픽셀 값을 어떻게 알까요?’ 그림으로 생각해보면 다음과 같은 상황입니다.

5.애매해진 픽셀값
그림5. 애매해진 픽셀값

왼쪽의 검은색은 Input Feature Map을 의미합니다. 이때 각각의 사각형은 하나의 픽셀 ‘값’을 의미합니다. 기존에는 Input Feature Map의 사각형과 Convolution Filter의 사각형이 딱 맞게 그려져서 바로 연산이 가능했는데, 지금은 Convolution Filter가 Input Feature Map의 사각형들의 중간 즈음에 걸쳐져 있는 모습입니다.

저자들은 이때의 픽셀 값을 주변 네 개 픽셀 값의 Interpolation을 사용하여 계산합니다. Interpolation을 모르신다면, 네 개 픽셀 값에 대한 상대 거리를 기준으로 픽셀들의 가중평균을 구했다고 생각하고 넘어가셔도 좋습니다.

3-3. Active Convolution이 학습된다는 의미는?

이제 전체 Loss에 영향을 줄 수 있는 가중치가 기존의 Convolution 가중치 w 외에도 각 필터마다의 (𝝙x,𝝙y)가 추가되었습니다. 전체 Loss는 Convolution 가중치 w, 필터마다의 (𝝙x,𝝙y)들과 모두 더하기 곱하기로 연결되었으므로 Backpropagation으로 학습이 가능합니다. 이때 Gradient의 입장에서 기존의 Convolution과 Active Convolution의 차이는 이렇게 표현할 수 있습니다.

  • 기존 Convolution : 지금 이미지가 강아지로 보이도록 강아지랑 관련된 필터 값들을 조절
  • Active Convolution : 지금 이미지가 강아지로 보이도록 강아지랑 관련된 필터 값들과 돋보기 사이즈를 조절

4. 효과

다음은 이렇게 제안한 방법의 효과에 대해 알아보겠습니다.

4-1. CIFAR 성능

CIFAR10, CIFAR100 데이터셋에 대해 ResNet 모델과 Active Convolution을 적용한 ResNet 모델의 성능을 비교해보겠습니다.

6.CIFAR 성능
그림6. CIFAR 실험 결과

위의 결과를 보면 Active Convolution을 적용했을 때 모든 데이터셋에 대한 모든 모델에서 성능이 증가한 모습을 볼 수 있습니다.

4-2. Places365 성능

이번엔 큰 데이터셋인 Places365 에서의 실험 결과를 살펴보겠습니다.

그림7. Places365 실험 결과
그림7. Places365 실험 결과

위 표는 AlexNet과 ResNet26을 Baseline으로 하고 ACU를 적용했을때의 성능을 비교한 결과입니다. 결과를 보면 CIFAR10 결과와 마찬가지로 ACU를 적용했을때 모두 성능이 향상되는 모습을 볼 수 있습니다.

Series Navigation<< [17′ CVPR] Deep Pyramidal Residual Networks (PyramidNet)[17′ CVPR] Residual Attention Network for Image Classification >>
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top