AI: 네트워크 구조 – Depthwise Separable Convolution
ㅁ 네트워크 구조
ㅇ 정의:
합성곱 연산을 채널별로 분리하여 수행한 뒤, 1×1 합성곱(Pointwise Convolution)으로 채널을 결합하는 방식의 경량화 CNN 구조.
ㅇ 특징:
– 표준 합성곱 대비 연산량과 파라미터 수를 크게 줄임
– Depthwise Convolution은 각 채널을 독립적으로 처리
– Pointwise Convolution으로 채널 간 정보 결합
– MobileNet, Xception 등에서 활용
ㅇ 적합한 경우:
– 모바일/임베디드 환경처럼 연산 자원이 제한된 경우
– 실시간 추론이 필요한 애플리케이션
– 경량 모델 설계 시
ㅇ 시험 함정:
– Depthwise와 Pointwise의 순서를 혼동
– Group Convolution과 혼동
– 모든 경우에 정확도가 유지된다고 오해
ㅇ 시험 대비 “패턴 보기” 예시:
– O: Depthwise Separable Convolution은 채널별 합성곱과 채널 결합 단계를 분리하여 연산량을 줄인다.
– X: Depthwise Separable Convolution은 항상 정확도를 향상시킨다.
– X: Depthwise Separable Convolution은 표준 합성곱보다 연산량이 많다.
ㅁ 추가 학습 내용
Depthwise Separable Convolution은 표준 합성곱 대비 연산 복잡도를 크게 줄이는 기법이다.
표준 합성곱의 연산 복잡도는 O(K*K*M*N)이며, 여기서 K는 커널 크기, M은 입력 채널 수, N은 출력 채널 수이다.
Depthwise Separable Convolution은 이를 O(K*K*M + M*N)으로 줄인다.
이는 먼저 채널별로 분리하여 커널을 적용하는 Depthwise Convolution을 수행하고, 그 결과를 채널 방향으로 합성하는 Pointwise Convolution(1×1 합성곱)을 수행하기 때문이다.
Depthwise Convolution과 Group Convolution의 차이점은 다음과 같다.
Depthwise Convolution은 그룹 수가 입력 채널 수와 같아 각 채널마다 독립적으로 합성곱을 수행한다.
Group Convolution은 그룹 수가 입력 채널 수 이하이며, 각 그룹별로 채널을 나누어 합성곱을 수행한다.
MobileNetV1과 Xception에서는 Depthwise Separable Convolution을 활용하여 연산량을 줄이고 경량화를 달성하였다.
MobileNetV1은 Depthwise와 Pointwise 연산 사이에 Batch Normalization과 ReLU를 적용하며, Xception은 Depthwise 연산 후 BatchNorm과 ReLU를 적용하는 구조를 사용한다.
이러한 구조는 연산량 감소에 따른 성능과 정확도의 트레이드오프를 고려해야 한다.
또한 메모리 접근 패턴을 최적화하여 연산 속도를 높이는 기법도 중요하다.
이는 연산량뿐 아니라 실제 하드웨어에서의 처리 효율에도 영향을 미친다.