안녕하세요. 지난 포스팅의 [DA] The Effectiveness of Data Augmentation in Image Classification using Deep Learning (arxiv2017)에서는 GAN 기반의 데이터 증강을 이용한 방법에 대해서 설명하였습니다. 오늘은 알고리즘 기반의 데이터 증강인 Random Image Cropping And Patching (RICAP)에 대해서 소개해드리도록 하겠습니다.
Background
지금까지 저희는 MixUp, CutOut, CutMix와 같은 기본적인 데이터 증강 방법에 대해서 알아보았습니다. 이 방법들의 공통점은 두 장의 영상을 이용해서 서로 linear combination을 취하거나 sub-region을 교환하는 방법을 제안합니다. CutOut은 한 장이지만 0으로 채워진 행렬에 대해서 CutMix 알고리즘을 적용한다고 생각하면 될 거 같습니다. 이러한 방법들은 모두 합성곱 신경망의 학습력을 추가로 향상시켰을 뿐만 아니라 정규화 능력도 존재하여 과적합을 방지하는 효과가 있었습니다.
본 논문에서는 위 방법들과 유사한 RICAP을 제안합니다. 실질적으로 CutMix와 같이 여러 장의 영상을 하나의 영상으로 잘라서 붙히는 Cut-and-Paste 기반의 알고리즘입니다.
Proposed Method
1). Random Image Cropping And Patching (RICAP)
그림1은 RICAP의 전체적인 동작 과정을 보여주고 있습니다. 2장의 영상을 사용하는 CutMix와는 다르게 4장의 영상을 이용해서 Mix하게 됩니다. RICAP은 총 3가지의 데이터 조작 과정을 거치게 됩니다.
STEP1. 훈련 데이터셋에서 무작위로 4장의 영상을 선택한다.
STEP2. 4장의 영상이 각각 다른 영역을 선택하고 자른다.
SETP3. 잘린 sub-region을 새로운 영상에 붙여넣기 한다.
좀 더 상세하게 알고리즘을 분석해보도록 하겠습니다. 일단, STEP1에서 선택된 4장의 영상을 $k \in \{1, 2, 3, 4\}$라고 인덱스를 정해놓겠습니다. 여기서 중요한 점은 $k$에 따라 좌측 상단 ($k = 1$), 우측 상단 ($k = 2$), 좌측 하단 ($k = 3$), 우측 하단 ($k = 4$)으로 새로운 영상을 만들 때 붙여넣게 됩니다. 그림2를 보시면 왼쪽부터 $k = 1, 2, 3, 4$로 비행기는 좌측 상단, 펭귄은 우측 상단, 꽃은 좌측 하단, 마지막으로 배는 우측 하단에 위치하고 있습니다.
이제, 영상을 선택했으면 어떤 영역을 잘라야할 지 결정해야합니다 (STEP2). 이를 위해, 먼저 $I_{x}$와 $I_{y}$를 각각 기존 영상의 너비와 높이라고 정의하겠습니다. 그리고 $(w, h)$는 그림2와 같이 4장의 영상의 꼭지점이 모두 만나는 지점이라고 정의하겠습니다. 이를 boundary position이라고 하겠습니다. CutMix에서는 자르는 영역의 크기를 결정하기 위해 베타 분포로부터 샘플링하였습니다. 이번에도 마찬가지로 베타 분포에서 어떤 지점을 boundary position이라고 할 지 결정해야합니다. 이때, 베타 분포가 균등 분포라고 한다면 $[0, 1]$ 사이의 값이 샘플링될테고 이는 전체 영상의 너비 또는 높이의 비율이라고 할 수 있기 때문에 다음과 같이 $(w, h)$를 얻을 수 있습니다.
$$w = \text{round}(w^{'}I_{x}), h = \text{round}(h^{'}I_{y})$$
여기서, $w^{'} \sim \text{Beta}(\beta, beta)$이고 $h^{'} \sim \text{Beta}(\beta, beta)$입니다. 여기서, $\beta \in (0, \infty)$입니다. 위 단계까지 왔으면 어떤 점이 boundary position인지 알게 되었습니다. 이제, 실제로 4장의 영상 ($k = 1, 2, 3, 4$)에 대해 어디를 잘라야할지 결정해야겠죠? 일단, 크기에 대한 정보는 boundary position $(w, h)$에 의해 자동으로 결정됩니다. 왜냐하면 그림2와 같은 상태에서 비행기의 크기는 $(w, h)$가 됩니다. 그리고 펭귄은 $(I_{x} - w, h)$, 꽃은 $(w, I_{y} - h)$, 배는 $(I_{x} - w, I_{y} - h)$가 되죠.
이제는 source image의 자르는 위치를 샘플링하기 위해 각 영상의 잘리는 크기 $w_{k}$와 $h_{k}$를 기반으로 한 번 더 균등분포를 이용해줍니다.
$$x_{k} \sim U(0, I_{x} - w_{k}), y_{k} \sim U(0, I_{y} - h_{k})$$
자르는 위치까지 샘플링했다면 새로운 영상에 자르는 위치를 기준으로 잘리는 크기만큼 붙여주면 RICAP을 통한 데이터 증강이 완성됩니다.
2). Label Mixing of RICAP for Classification
RICAP은 그림3과 같이 4장의 영상을 하나로 붙이기 때문에 최대 4개의 서로 다른 레이블을 가질 수 있습니다. CutMix에서는 2장의 영상에 대한 레이블을 가지는 경우에 정답 레이블을 각 영상의 비율에 따라 mixing하여 사용하였습니다. RICAP 역시 다음과 같이 4장의 영상이 가지는 전체 영상에 대한 비율에 따라 새로운 정답 레이블을 구성하여 분류 모델을 학습하게 됩니다.
$$c = \sum_{k \in \{1, 2, 3, 4\}} W_{k}c_{k} \text{ for } W_{k} = \frac{w_{k}h_{k}}{I_{x}I_{y}}$$
여기서 $w_{k}h_{k}$는 $k$번째 영상의 넓이이고 $I_{x}I_{y}$는 전체 영상의 넓이를 의미합니다. 그리고 $c_{k}$는 $k$번째 영상의 레이블의 one-hot encoding된 레이블로 $k$번째 영상의 비율에 따라 새로운 정답 레이블을 구성하는 것을 볼 수 있습니다.
3). Hyperparameter of RICAP
RICAP의 하이퍼파라미터는 오직 $\beta$입니다. $\beta$가 커질수록 boundary position $(w, h)$는 영상의 중앙에서 샘플링되는 경향이 있습니다. 이로 인해 새로운 영상의 정답 레이블은 각각 0.25로 수렴하게 되죠. 반대로 $\beta$가 작아질수록 boundary position $(w, h)$는 4개의 꼭지점에서 샘플링되는 경향이 있고 특정 클래스에 대해서 강하게 반응하게 됩니다. 아예 $\beta = 0$이라면 RICAP은 데이터 증강을 적용하지 않습니다. 또한, $\beta = 1$이라면 영상의 전체에서 고르게 boundary position $(w, h)$를 샘플링하게 됩니다.
알고리즘 표1은 RICAP의 전체 의사 알고리즘을 보여주고 있습니다. 가장 윗줄에 보시면 $\beta = 0.3$으로 고정하였습니다. 즉, 특정 클래스에 집중하여 새로운 영상을 만들고 싶다는 것을 의미하죠. 아무래도 4개의 영상이 모두 동일한 분포를 가지게 되면 오히려 CNN이 해당 영상을 맞추기 더 어려워하기 때문인 거 같습니다.
Experiment Results
본 논문은 CIFAR10, CIFAR100, ImageNet-1K 데이터셋을 이용해서 WRN-28-10과 WRN-50-2-Bottleneck에 대한 일반화 성능 및 지역화 능력 실험을 진행하였습니다.
1). Classification Results in CIFAR
2). Classification Results in ImageNet