Inception 모델에 이어 Xception 모델을 알아보겠습니다. 이 모델도 이미지 분류 작업을 위해 설계된 CNN(컨볼루션 신경망) 아키텍처입니다. Keras 딥러닝 라이브러리 창시자인 François Chollet가 2017년에 발표한 "Xception: Deep Learning with Depthwise Separable Convolutions"라는 논문에서 제안한 것입니다.
Inception과 차이점
'엑스셉션(Xception)'이라는 이름은 '극단적인(eXtreme)'과 '인셉션(Inception)'을 합친 것입니다. 이는 널리 사용되는 Inception 아키텍처에 사용되는 블록인 Inception 모듈의 극단적인(extreme) 버전을 나타냅니다.
기존 Inception 모델이 채널(1x1 Conv)과 공간(나머지 Conv) correlation을 분리했다면, Xception 모델은 더 많이 역할 분배했다는 점이 다릅니다. Inception 구조는 4개의 branch(가지)를 갖는 구조라면 Xception은 각각의 채널 수만큼 branch가 분화한 구조입니다.
요약하면, branch를 극단적으로 늘렸다고 해서 'extreme'이란 말을 붙인 것입니다. 또한 기울기 소실을 위한 장치였던 Auxiliary classifier이 사라지고, Residual Network 를 활용했다는 점도 다른 점입니다.
깊이별 분리 가능한 컨볼루션(Depthwise separable convolution)
Xception 모델의 아이디어는 두 가지 였습니다.
- 우선 채널 간의 관계를 찾는 것과 이미지 공간 정보를 찾는 것을 완전히 분리하자.
- 각 채널 수만큼 branch를 극단으로 쪼개서 성능을 개선하자.
채널간의 상관관계를 1x1 Conv를 통해 포착하고, Output 채널에 모두 별개로 3x3 Conv 연산 수행하는 방법입니다. 이를 깊이별 분리 가능한 컨볼루션(Depthwise separable convolution)이라고 합니다.
Xception 모델의 특징
Xception 모델의 주요 혁신은 깊이별 분리 가능한 컨볼루션을 사용하는 것입니다. 이 방법은 모든 채널에 대해 Correlation을 찾는 것이 과연 효과적인가? 에 대한 물음에서 시작됩니다.
출력을 혼합하기 위해 포인트별 컨볼루션이 뒤따르는 일련의 필터로 입력을 컨볼루션하는 전통적인 컨볼루션 작업 대신 Xception은 이 두 단계를 분리합니다. 깊이별 분리 가능 컨볼루션은 깊이별 컨볼루션(Depthwise Convolution)과 포인트별 컨볼루션(Pointwise Convolution)으로 구성됩니다.
1단계(깊이별 컨볼루션)
- 입력의 각 채널에서 독립적으로 작동, 공간 방향의 Conv(합성곱)을 수행
- K개의 채널별로 nxn Conv 진행하여 만들어진 각 피처맵을 합치는 과정
2단계(포인트별 컨볼루션)
- 채널 전체의 정보를 결합, 결과에 1x1 Conv 연산을 함
- Pointwise Conv 연산을 수행하여 채널(피처맵) 수를 조정
이러한 분리는 두가지 측면의 효과가 있습니다. 첫째, 기존 컨볼루션 레이어에 비해 매개변수 수와 계산 비용을 크게 줄입니다. 둘째, Xception은 공간적 상관관계와 채널 간 상관관계를 분리하여 학습하는 효과가 있습니다. 이는 효율성을 유지하면서 이미지의 복잡한 패턴을 포착하는 데는 더 유리합니다.
이유는 이미지상의 패턴이 특정 위치에 묶이지 않는 특성 고려하게 됩니다. 또 공간상의 위치가 높은 상관관계이지만 채널 간에는 매우 독립적이게 만듭니다.
Xception과 깊이별 분리 가능 합성곱의 차이점
Xception과 깊이별 분리 가능 합성곱은 거의 동일한 것 같지면 약간의 차이점이 있습니다.
1. 우선 연산순서가 다르다.
- Xception : pointwise(1x1) → depthwise(3x3)
- 깊이별 분리가능 합성곱 : depthwise(3x3) → pointwise(1x1)
2. ReLU의 유무
- Xception : 첫 연산 후에 ReLU가 위치(1x1 → ReLU → 3x3)
- 깊이별 분리가능 합성곱 : 중간에 ReLU를 적용하지 않음
Xception 모델 구조
Xception 모델 구조는 36개 합성곱 계층으로 구성하여 특징 추출합니다. Residual 연결을 갖는 depthwise separable 합성곱 계층이 선형적으로 쌓인 구조입니다.
1. Entry Flow
- Input : 229 x 229 x 3
- Conv (3x3) → 필터의 갯수(32 → 64) : 2개
- Residual Network 가 합쳐진 Inception Module : 3개
2. Middel Flow
- ReLU → Separable Conv 를 8번 반복
- 반복되는 단순한 모델: 필터의 개수와 width/height 는 바뀌지 않음
3. Exit Flow :
- Filter의 개수를 늘린 다음 → Maxpooling → 2번 Separable Conv → Global Average Pooling → Optional Fully-Connected → Logistic Regression
그림에는 표시되어 있지 않지만, 모든 Convolution과 Seperable Conv 계층들 뒤에는 Batch normalization을 처리했습니다.모든 Seperable Conv 계층은 깊이 승수로 1을 사용해서 깊이 확장은 없습니다.
전반적으로 Xception 모델은 VGG 또는 ResNet과 같은 기존 아키텍처에 비해 더 적은 매개변수와 계산을 필요로 하면서 이미지 분류 작업에서 경쟁력 있는 성능을 달성하는 강력하고 효율적인 CNN 아키텍처를 나타냅니다.
'딥러닝' 카테고리의 다른 글
자연어 처리 과정과 n-gram (0) | 2024.03.14 |
---|---|
자연어 처리(NLP) 역사 및 동향 (1) | 2024.03.12 |
Residual Network(ResNet) 아이디어: skip connect (0) | 2024.03.11 |
인셉션(Inception) 특징: 1x1 Conv, Auxiliary classifier (0) | 2024.03.07 |
GoogleNet의 인셉션(Inception) 블럭을 뜯어보자 (1) | 2024.03.06 |