[논문 리뷰] RICAP

JUNE·2021년 5월 18일
0

논문 정리

목록 보기
1/2
post-thumbnail

이번 기계학습 프로젝트의 주제가 "data augmentation"였다. 프로젝트를 진행하기 위해 data augmentation에 대한 여러 논문들을 읽다가 찾은 "RICAP". 처음 이 논문을 읽을때 내가 기존에 생각하지 못했던 '중요하지 않은 정보에 대한 필요성' 에 대해 알게 되었다.

RICAP

랜덤한 사진 4개를 각각 랜덤하게 잘라서 하나의 사진으로 만드는 것. 그리고 Soft Labeling을 통해서 학습을 진행하게 된다.

이때 Soft Labeling은 모델이 overconfidence하게 되는걸 막아주는데, 이는 모델의 overfitting을 규제할 수 있다. 기존의 Hard Labeling은 0 또는 1로 labeling을 한다면, Soft Labeling은 0.1이나 0.9 등으로 라벨링을 한다. soft label은 각 Class의 유사성에 많은 정보를 담고 있고, 가중치 매개 변수가 정확한 분류를 방해하지 않고 특정 값으로 수렴하도록 한다.

RICAP 장점

RICAP은 CNN이 object와 해당 사진의 배경의 깊은 연관성을 학습할 수 있도록한다. 특히 crop된 사진에 배경만 있을 때, CNN은 보통 무시하던 다른 부분을 통해서 학습을 해야하기 때문에, overfitting을 막을 수 있고, 두개의 class가 비슷한 배경을 공유할 때, 배경은 두 클래스를 연관짓고, 다른 class들과 분리한다.

또한 학습할 때 합쳐진 4개의 class label을 각 crop한 사진의 비율로 섞어서 분류를 하게 되어, CNN은 각 픽셀을 약하게 감독하는 방식으로 분류하도록 하고, 이는 CNN이 사소한 특징, 부분적인 특징, 배경 및 보통은 무시되는 사소한 정보까지 사용한다.

RICAP의 데이터 생성 방법

4개의 이미지는 각각 사진의 윗부분의 왼쪽, 윗부분의 오른쪽, 아래부분의 왼쪽, 아래부분의 오른쪽에 배치가 된다. 이때 Ix, Iy 는 각각 이미지의 너비와 높이를 나타낸다. 그리고 (w,h) 는 각각 이미지의 crop될 영역을 나타낸다. wh 는 매 학습 단계마다 설정하며, 구하는 식은 다음과 같다.

w = round(w'Ix), h = round(h'Iy)
w' = Beta(B,B), h' = Beta(B,B)

여기서 beta라는 하이퍼 파라미터가 필요한데, 이 파라미터는 비율을 정한다고 생각하면 된다. 앞의 Beta는 pytorch의 확률분포 함수.

beta는 0에서 무한대의 범위에서 정해지게 되는데, 만약 beta가 너무 크면, value가 0.25와 가깝게 되어 soft labeling의 문제점을 직면하게 된다. 즉, 4개의 class label의 비율이 같게되어 정확한 분류를 하기 힘들어진다. 그리고 beta가 너무 작게되면, 4개의 이미지를 합치는 의미가 없어진다. 아래의 사진은 실제로 구현한 RICAP을 통해 얻은 데이터

w와 h를 통해서 각 이미지의 부분을 crop해야 한다. 아래의 식을 통해 각 사진에서 crop할 사진의 크기를 구한 후, 각 사진에서 어느 부분을 crop할지 랜덤으로 정한다.

w1 = w2 = w, w2 = w4 = Ix-w
h1 = h2 = h, h3 = h4 = Iy-h

RICAP의 Label Mixing

사진의 crop과 mix 과정이 끝났으면, 마지막으로 라벨을 mix 해야 한다. 타겟 라벨 C는 각 사진의 원-핫 코드 class label과 그들의 사진 비율인 W를 곱한 값을 더하여 구해준다.

0개의 댓글