이번 글은 'Random Erasing Data Augmentation' 논문을 정리한 글입니다.
Random Erasing Data Augmentation은 중국 Xiamen 대학교 인지과학과에서 발표한 기법으로 주저자는 'Zhun Zhong'입니다.
논문이 제출된 학회에 대한 정보는 나와있지 않고 arXiv 아카이브에 올라가있는 것을 보니 accept되고 발표 예정중인 논문이 아닌가 생각이 듭니다.
사실 이 글은 Machine Learning의 Math 카테고리에 맞는 글은 아니지만, Regularization을 위해 제안된 기법중 하나이기에 Math카테고리에 넣어주었습니다.
Random Erasing기법은 기존에 우리가 알고있던, 대표적인 Data Augmentation(데이터 증대)기법인 flipping(뒤집기)과 cropping(자르기)의 occlusion(폐색)문제에서의 한계를 해결하기 위하여 제안된 기법입니다.
--------------------------------------------------------------------------------------------------------------------
occlusion이라는 단어가 낯선 분들이 계실텐데요, 간단하게 설명하면 다음과 같습니다.
폐색 : 하나의 물체가 다른 물체에 의해 부분적으로 가려져 보이지 않는것
우리가 학습시키는 데이터들은 100% 깔끔하게 학습시키려는 물체의 전체 구조가 표현되어 있을수도 있지만, 현실적으로는 다른 물체들에 의해 일부분이 가려져있거나 하는 경우가 많습니다. 이는 object detection이나 classification등의 task를 수행하기 위한 CNN기반 모델의 학습에 overfit 혹은 increase test error(weaken generalization)등에 핵심적인 영향을 미치는 요소입니다. 따라서 이논문에서는 occlusion문제의 해결을 위해 Random Erasing기법을 제안한 것이죠.
--------------------------------------------------------------------------------------------------------------------
논문의 서론에서는 모델의 Generalization ability에 대한 설명으로 시작합니다. Regularization의 목적에 대해서 'weight decay편'에서 제가 언급을 한적이 있는데, 논문에서 제안하는 방법론과 큰 연관성이 있고, 서론에서 언급이 되어 다시한번 간단하게 설명드리고 넘어가도록 하겠습니다.
딥러닝 기반의 CNN 모델이 있다고 가정하겠습니다. 그런데 이 모델이 학습데이터의 수와 학습데이터를 표현하는 특징에 비해 과하게 복잡하게 설계 되었을경우, overfitting이 발생할 가능성이 크고, generalization ability가 낮을 수 있습니다. 이는 모델의 학습이 완료된 후, 모델이 입력되는 새로운 데이터에 대하여, 랜덤한 에러값을 출력하거나, 데이터의 분포와 연관된 정보를 표현하기 보다 Noise한 정보를 표현하게 되는 결과를 초래할 수 있습니다. 극단적인 관점에서 모델은 학습데이터에 대해서는 좋은 성능을 보이지만, 테스트 데이터들에 대해 철저하게 엉뚱한 결과를 보이는 상황이 발생할 수 있다고 할 수 있겠죠.
이러한 문제를 해결하기 위해서 ai 연구자들은 data augmentation기법과 regularization기법으로 접근하여 CNN의 낮은 generalization ability 문제 해결을 시도해왔습니다. [ data augmentation기법으로는 random cropping(무작위로 사진을 잘라내는 기법), flipping(사진을 상하좌우로 뒤집는 기법)등이 있고 regularization기법으로는 weight decay, dropout, batch normalization기법등이 있습니다. ]
그런데 기존의 data augmentation과 regularization으로 해결이 안되는 문제가 있었는데 그것이 바로 위에서 언급한 occlusion입니다. 사진에서 물체의 일부가 occlude되었을 경우, strong classification model들은 사진 전반을 살펴 물체의 전체 구조를 파악함으로써 인지할 수 있지만, 학습데이터에서 occlusion되어있는 상황은 굉장히 제한적이기 때문에, occlusion문제에 강하게 모델을 학습시켜서 generalization ability가 높은 strong classification model을 얻어내는 것은 쉽지 않은 일입니다. 학습데이터들에 표현된 물체들이 너무 clean하게 visible하면, 부분적으로 occlude된 샘플들을 판별할 능력이 없는 모델이 얻어지는 것이죠.
그럼 기존에는 occlude문제를 어떻게 해결하였는가?
기존에 occlude문제를 제기한 논문이 많이 없었던것 같고(제 기준에서라.. 많을 수도 있습니다..), 수동적으로 학습데이터에 occlude해주는 방법이 있는데, 이 방법은 너무 비용도 많이들고, occlusion의 수준에 제한이 있었죠. 특히나 인간은 아무리 패턴이 없이 랜덤하도록 occlusion하겠다 하더라도 무의식적으로 패턴을 형성하는 동물이기에, 어느 시점부터는 occlusion하는 박스나 크기의 위치가 동일하게 될 경우가 발생할 수도 있습니다.
따라서 이 논문에서는 학습데이터들에 대해서 1. '아무것도 변화시키지 않음' 2. '사진 내의 좌표를 랜덤하게 설정하고, 사진보다 작은 크기의 가로 세로 길이를 랜덤하게 결정하여 해당지점을 occlude 함' 의 두가지 방법중 하나로 처리하는 방법론을 제안하여 occlusion문제에 강한 모델을 얻었다고 주장합니다.
Random Erasing 처리가 된 데이터 예시
다음은 논문에서 Random Erasing을 기존의 data augmentation, regularization기법과 비교한 내용을 표로 정리한 것입니다.
Random Flipping vs Random Cropping vs Random Erasing
Dropout vs Random Erasing
Fast-RCNN vs Random Erasing
위의 서론을 총망라하여 논문에서 소개하는 Random Erasing의 장점은 다음의 4가지로 정리됩니다.
1. parameter의 학습이나, memory의 소모가 필요하지 않으면서도, 다양한 CNN 모델에 학습전략을 변경하지 않고 적용이 가능한 가벼운 기법
2. Data augmentation기법과 Regularization 접근이 모두 존재하는 통합적인 방법
3. 이미지 분류, 객체 인식등의 task에서 state-of-art한 성능을 보이는 기법
4. 부분적으로 occluded한 데이터들을 생성함을 통해 CNN의 robustness를 개선하는 기법
서론이 좀 길었는데요, Random Erasing의 알고리즘을 설명하고, 논문에서 수행한 실험과 그 결과를 말씀드리고 글을 마치도록 하겠습니다.
논문에서 Random Erasing하는 과정은 다음의 알고리즘으로 소개되고 있습니다.
1. 타겟 이미지,
Erasing probability라고 해서 Random Erase를 수행할지, 원본을 유지할지 결정하기 위한 값인 p,
이미지에서 erasing할 직사각형 범위(넓이 및 영역)의 최소(Sl) 최대(Sh) 값,
직사각형 범위의 길이를 결정하게 될 비율 값의 최소(r1) 최대(r2) 값을
함수에 입력합니다.
(S는 이미지가 입력되면 가로, 세로 값을 알 수 있기 때문에 굳이 함께 넣어줄 필요는 없습니다. )
2. Rand함수로부터 0부터 1사이의 값 p1을 입력받아서, p1이 p보다 크다면 원본을 유지하는 것으로써 함수를 빠져나오고, p1보다 p가 크다면 Random Erase를
수행하기 위해 else문으로 들어갑니다.
3. Random Erase를 수행하기 위해 직사각형 범위(넓이 및 영역)의 초기값을 Sl과 Sh사이의 random한 값 Se를 얻어 설정합니다.
Random Erase의 직사각형의 가로 세로길이를 결정하기 위해 r1과 r2사이의 random한 값 re를 얻어 설정합니다.
4. 현재 이미지, Se, re를 우리가 알기 때문에, Random Erase할 직사각형의 가로 세로 길이를 계산합니다.
가로(We)는 Se/re에 제곱근을 씌운 값으로 취하며,
세로(He)는 Se x re에 제곱근을 씌운 값으로 취합니다.
We와 He의 식이 저러한 이유는 여러분도 감이 어느정도 잡혔을것 같은데, We와 He를 곱해보면 re값은 날라가고, Se제곱에 제곱근이 씌워진 상태로 Se만 남게 된다는 것을 알 수 있습니다.
5. 이제 Random Erase할 직사각형의 가로 세로 값이 얻어졌으니, 이미지에서 어느 부분을 erasing할지 선택해야합니다.
이과정은 먼저, Xe 값을 0부터 이미지의 가로 길이(W) 사이의 값중 random한 값을 입력받아 설정합니다.
Ye 값은 Xe와 마찬가지로 0부터 이미지의 세로 길이(H) 사이의 값중 random한 값을 입력받아 설정하겠죠.
6. 5에서 입력받은 Xe와 Ye값을 직사각형의 왼쪽 하단점으로 가정하고, 4를 통해 얻은 We를 Xe에 더하고 He를 Ye에 더하여 이 값이 이미지의 크기를 벗어나지
않으면 해당 영역의 값을 0부터 255사이중 random한 값으로 채워넣습니다.
이미지의 크기를 벗어난다면 다시 5로 돌아가서 벗어나지 않을 때 까지 Xe와 Ye값을 설정하는 것을 반복합니다.
사진에 Random erasing을 가하는 방법은 다양합니다. 논문에서는 3가지를 소개하는데요, 위의 사진이 3가지 방법을 설명하고 있습니다.
Image-aware는 이미지 전체에 초점을 맞추어 random erasing을 수행한 것이고,
object-aware는 이미지 내의 객체에 초점을 맞춘 것입니다.
image and object-aware는 위 두가지 방법을 짬봉한 것이라고 생각하면 될것 같습니다.
그리고 Random Erasing만 하는 것 뿐 아니라 Random Erasing을 Cropping과 함께 적용하여 Data Augmentation하는 기법도 소개하고 있습니다.
논문에서는 Random Erasing실험을 CIFAR-10, CIFAR-100, Fashion-MNIST 데이터 셋을 가지고 수행했고, 입력해야할 초기값들을 다음과 같이 설정했다고 하네요. [p = 0.5, Sl = 0.02, Sh = 0.4, r1 = 1/r2 = 0.3]
모델은 CNN기반의 모델인 ResNet, pre-activation ResNet, ResNeXt, Wide Residual Networks 총 4가지 모델을 사용했다고 합니다.
Random Erasing을 하지 않은 데이터를 활용한 모델과 Random Erasing을 수행한 데이터를 활용한 모델의 실험 결과 비교
Random Flipping기법, Random Cropping기법, Random Erasing기법을 각각 수행하고 얻은 결과 비교
Random Erasing과 Dropout기법을 각각 수행하고 얻은 결과 비교
논문에서 얻은 결과들로 보아서는 Random Erasing기법이 확실히 다른 Data Augmentation기법을 활용한 모델들이나, Dropout기법을 활용한 모델들에 비하여Test error가 좋아 보이는데, 이는 언제까지나 논문 저자들의 실험 결과일 뿐이니, 각자의 실험에 효과를 보일 수 있는 기법인지는 역시 실험을 직접 해봐야 하지 않을까 하는 생각이 드네요. 글은 이것으로 마치겠습니다.
혹시 잘못된 부분이 있다면 피드백 부탁드리겠습니다. 감사합니다.
논문 링크 >> https://arxiv.org/pdf/1708.04896.pdf
'Machine Learning > Math' 카테고리의 다른 글
Regularization (Weight Decay) (15) | 2018.04.07 |
---|---|
Linear Regression (0) | 2018.04.05 |