항상 학부 때 교수님들이 CNN을 가르치시면서 해주시는 얘기가 있었다. CNN의 kernel이 Image의 edge같은 걸 잘 추출해 낸다는 말이다. 그래서 나는 자연스럽게 아 CNN은 edge를 잘 따주는 녀석이고, object의 shape를 잘 보겠구나라고 생각해왔다. 하지만 이 논문을 읽어보면 그 생각이 달라질 것이다.
https://arxiv.org/abs/1811.12231
ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness
Convolutional Neural Networks (CNNs) are commonly thought to recognise objects by learning increasingly complex representations of object shapes. Some recent studies suggest a more important role of image textures. We here put these conflicting hypotheses
arxiv.org
인공지능 연구자들도 이 논문이 나오기 전까지는 CNN은 object의 shape를 잘 인코딩해준다고 믿고 있었다. 하지만 이 논문에서의 실험이 그 믿음을 깨버렸는데, 그 실험을 같이 봐보도록 하자.

위의 그림을 보면 Image-Net에서 train된 CNN이 고양이 shape에 코끼리 texture를 입힌 object를 보고 코끼리라고 하는 걸 알 수 있다. 이와 같은 데이터를 다양하게 모아서 실험해 본 결과 Image-Net trained CNN이 shape보다 texture-biased되어있다는 것을 발견하게 된다.
보통 노이즈가 있는 이미지나 가상환경에서 만든 이미지 데이터들을 보면 object의 shape는 실제와 비슷한데, texture가 다른 경우가 많다. 이 말은 Image-Net trained CNN이 노이즈가 있는 이미지나 가상환경에서 만든 이미지 데이터들에는 좋은 prediction을 만들어내기가 힘들다는 말이 되고, 굉장히 robust하지 않다는 말이 된다.
따라서 robust한 모델을 만들기 위해서는 CNN 모델이 강제로라도 shape에 biased되게 만들어야 한다. 그래서 등장한 개념이 random stylization이라는 technic인데, 원래 데이터셋에 고양이 10장의 사진이 있었다면, GAN을 이용해서 random style을 고양이에 입혀 texture가 의미가 없어진 고양이 사진 10장을 만들어서 강제로 훈련 시에 CNN이 shape biased되게 하는 개념이 등장한 것이다.
결론을 정리하면, 앞으로 robust한 CNN모델을 만들고 싶다면, 어떤 technic을 이용하든, 모델의 texture-biased 특징을 어느정도는 shape-biased하게 바꾸는 노력이 필요할 것이다.