Xception: Deep Learning with Depthwise Separable Convolutions

classification
convolutional
imagenet
google

#1

#google 에서 Inception Model에 Depthwise Separable Convolution을 적용한 것에 대한 논문입니다.

Google의 Inception 모델을 기반으로 설명하므로 Inception-v1 논문 리뷰 를 읽으시면 도움이 됩니다.Resnet 논문 리뷰 의 Skip-Connection 역시 사용되고 있습니다.

또, 이후에 Google에서 Depthwise Separable Convolution을 이용하여 빠른 속도의 네트워크를 제안한 Mobilenet 과 같이 보시면 좋습니다.

가설

image

요런 형태의 Inception Module이 있다고 칩시다. 이 모듈의 각각에 붙어있는 1x1 Conv. 들을 Concat하면

image

이런 모습이 될 것이고, 이는 변경하기 전과 완벽히 같은 모델입니다.

이 논문에서의 질문은,

image

이렇게 만들면 어떻게 되냐는 것입니다.

풀어서 다시 설명하면, 1x1 Conv로 Channel Reduction을 수행하는 것이 Inception Module에 포함되어 있는데, 이들에 대해서 각각 Channel 별로 분리된 상태에서 3x3 Conv와 같은 오퍼레이션을 수행하도록 네트워크를 디자인하면 어떻겠냐는 이야기입니다.

즉, Cross-Channel Correlation이 완벽히 분리될 수 있을까? 입니다.

Depthwise Separable Convolution

그리고 이렇게 강력한 가정을 한 모델에 약간의 modification을 취한 Depthwise Separable Convolution을 소개합니다. 차이점은

  • 1x1 -> 3x3 에서 3x3 -> 1x1 순서로 만듦. 즉 Channel-wise Spatial Conv. —> 1x1 Conv.
  • Channel-wise Spatial Conv. 이후에 Activation Function을 취하지 않음.

의 2가지 입니다. 첫번째는 성능에 큰 영향이 없을 수 있다고 밝히고, 두번째는 실험 결과 영향을 많이 미쳤다고 합니다.

그리고, 실제로 Depthwise Separable Convolution을 이용해 2013년 구글 브레인에서 한 인턴이 Alexnet에서 더 좋은 성능과 Convergence speed를 보이면서 모델 사이즈를 줄인 결과를 얻은 적도 있다고 합니다.

Exception Architecture

짧게 설명하면 Depthwise Separable Convolution을 Residual Connection과 함께 반복적으로 Stacking한 구조라고 밝히고 있습니다.

Experiments

image

image

  • 비슷한 파라미터를 갖는 Inception-v3에 비해 약간 성능 개선됨
  • Convergence 빠름
  • Residual Connection을 추가하자 성능 더욱 개선됨
  • Activation Function을 중간에 넣으면 성능 떨어짐

결론

Depthwise Separable Convolution이 기존의 Convolution에 비해 좀 더 효과적인 방식일 수 있다는 주장입니다. 비슷한 파라미터에서 더 좋은 성능을 내므로, 아무래도 더 잘 학습이 된다고 이해할 수도 있겠습니다. 또 논문에서는 Depthwise Separable Convolution이 아닌 더욱 최적의 방식이 존재할 수 있지 않을까하는 질문을 남겼습니다.


ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
Pelee: A Real-Time Object Detection System on Mobile Devices