논문 읽기/Classification

[논문 읽기] FixEfficientNet(2020), Fixing the train-test resolution discrepancy

AI 꿈나무 2021. 3. 28. 11:06
반응형

 안녕하세요! 이번에 읽어볼 논문은 2020년에 Noisy Student의 성능을 뛰어넘고 SOTA를 달성한 FixEfficientNet, Fixing the train-test resolution 입니다.

 

출처 : https://ropiens.tistory.com/42

 

 train data 수를 늘리기 위해서 random crop augmentation을 적용합니다. crop을 한 뒤에 resize로 크기를 조정하여 CNN 입력으로 넣어주는 것이 random crop 입니다. 하지만 test dataset에는 random crop을 적용하지 않고, 그냥 center crop만 적용하여 입력으로 넣어줍니다. 이때문에 train dataset의 분포와 test dataset의 분포에 차이가 생깁니다. 그리고 이 차이는 모델의 성능 하락으로 이어집니다. 이 문제를 해결하기 위해 제안된 학습 방법이 FixEfficientNet 입니다.

 

train-test object size mismatch

 일반적으로 train과 test에 적용하는 augmentation은 train-test object size mismatch 문제를 발생시킵니다. 

 

 train data에 random crop을 적용하고, 224 크기로 resize 한것을 보여주는 그림입니다.

 

 test data에 center crop을 적용한 그림입니다. train data와 test data에서 코끼리의 크기가 다르네요!! 직관적으로도 학습에 악영향을 준다는 것을 확인할 수 있습니다. 논문에서는 이것을 train-test object size mismatch라고 표현합니다.

 

 코끼리 크기를 동일하게 매칭하려면 어떻게 해야 할까요? train image 해상도를 줄이거나, test image 해상도를 키워야 합니다. 그러면 코끼리 크기가 같아지게 됩니다. 그리고 train dataset 분포와 test dataset 분포의 차이도 compensate됩니다.

 

 

 train 입력 이미지가 224일때, test 이미지 크기에 따른 성능 변화입니다.

 test 이미지의 크기가 288일때 성능이 제일 좋네요. train 입력 이미지와 test 입력 이미지가 같을 때보다 test 입력 이미지크기가 더 클때, 성능이 더 좋아진다는 것을 확인할 수 있습니다.

 

Fine-tunning

 train dataset과 test dataset의 분포를 맞춰주기 위해서 fine-tunning을 제안합니다. global average pooling layer 이전에 BatchNorm layer와 마지막 fc layer를 fine-tunning 하여 성능이 개선됬다고 합니다. 이 부분은 어떻게 fine-tunning을 해주었는지 자세히 안나와있어서 이해를 못했습니다.

 

Performance

 

출처

[1] arxiv.org/abs/1906.06423

[2] https://ropiens.tistory.com/42

반응형