→ ‘Inception 모듈의 개념을 극대화하여 채널과 공간을 완전히 분리해서 학습해보자’
일반 CNN: 채널, 공간을 분리 없이 한 번에 학습
Inception: 채널, 공간을 ‘부분적으로’ 분리
Xception: 채널, 공간을 ‘완전히’ 분리
Figure로 Main idea 확인
기존 Inception V3를 단순화하면 다음과 같이 그릴 수 있다.
이 1X1 Conv들을 한번에 묶어서 다시 그리면 다음과 같다.
이제 채널 수만큼 3X3을 통과하면 각각의 채널 내에서만 공간을 섞기 때문에 ‘완전한 분리’가 된다.
(단, 실제 Xception은 순서가 다르고 차이점이 있긴 하다. 단지 Inception을 극대화한 것의 표현임)
Depthwise Separable Conv
: Depthwise(kXk) → Pointwise(1X1) 하는 것.일반 (kXk) → $k^2C_{in}C_{out}$
Depthwise separable → $k^2C_{in} + C_{in}C_{out}$
Example)
$k=3,\ C_{in}=32, \ C_{out}=64$
일반: 18432개, Depthwise separable: 2336개
FLOPs도 거의 같은 비율로 감소한다.
Depthwise가 공간 패턴을 채널별로 먼저 뽑고, Pointwise가 그 결과를 채널 간 선형 결합으로 재조합하여 공간과 채널의 의미가 명확히 나뉘게 된다.
⇒ 성격이 다른 두 정보가 섞이지 않는다는 것이 모델의 판단 기준이 더 선명해진다?