CNN 구조의 혁신

특수 컨볼루션과 드롭아웃 기법

by 송동훈 Hoon Song

딥러닝 강의에서 배운 특수한 형태의 컨볼루션과 CNN에서의 드롭아웃 적용 방법에 대한 인사이트를 정리해보았다. 특히 적은 계산량으로 높은 성능을 달성하는 구조적 패턴이 흥미로웠다.


1. Dilated Convolution이 공간 정보와 넓은 시야의 균형을 맞춘다.

Screenshot 2025-05-01 at 5.35.47 PM.png

일반 컨볼루션은 레이어가 깊어질수록 receptive field가 커지지만 공간 정보가 손실된다. 이미지 세그멘테이션과 같은 작업에서는 이 균형이 중요하다. Dilated convolution은 픽셀 사이에 간격을 두어 필터를 적용함으로써, 레이어 수나 커널 크기를 늘리지 않고도 receptive field를 효과적으로 확장한다. 예를 들어, dilation rate가 2인 3x3 필터는 실제로 5x5 영역을, rate가 4이면 15x15 영역을 커버할 수 있다.


2. Translation invariance와 위치 정확성의 trade-off. CNN의 강점인 translation invariance(물체의 위치가 바뀌어도 인식 가능)는 classification에서는 장점이지만, segmentation에서는 오히려 단점이 될 수 있다. 여러 컨볼루션과 풀링 레이어를 거치면 물체의 정확한 위치 정보가 손실되기 때문이다. Dilated convolution은 깊은 네트워크의 인식 능력을 유지하면서도 위치 정확성을 높일 수 있는 방법으로, semantic segmentation에 특히 유용하다.


3. Depthwise Separable Convolution의 파라미터 효율성.

Screenshot 2025-05-01 at 5.38.08 PM.png

표준 컨볼루션을 두 단계로 분리하는 이 방법은 놀라운 계산 효율성을 보여준다:

Depthwise Convolution: 각 입력 채널에 대해 독립적으로 공간 필터링 수행

Pointwise Convolution: 1x1 컨볼루션으로 채널 간 정보 결합

이 방식은 파라미터 수를 표준 컨볼루션 대비 약 1/k² + 1/C 배로 줄인다(k는 커널 크기, C는 채널 수). 예를 들어 3x3 필터와 50개 채널에서는 약 (1/9 + 1/50) ≈ 1/8 수준으로 감소한다. 계산량도 비슷한 비율로 줄어든다.


4. 온디바이스 AI를 위한 경량 설계. 스마트폰이나 IoT 기기 같은 제한된 리소스 환경에서는 모델 경량화가 필수적이다. Depthwise separable convolution은 MobileNet과 같은 경량 네트워크의 핵심 구성 요소로, 정확도를 크게 희생하지 않으면서도 계산 요구사항을 대폭 줄인다. 이는 배터리 효율성과 실시간 처리 능력 향상으로 이어진다.


5. CNN에서 드롭아웃의 진화

Screenshot 2025-05-01 at 5.38.50 PM.png

기존 MLP에 적용하던 표준 드롭아웃은 CNN에 효과적이지 않다. 개별 픽셀을 제거하는 것은 주변 픽셀과의 높은 상관관계 때문에 정보 손실이 미미하기 때문이다. CNN에 적합한 드롭아웃 기법들이 개발되었다:

Spatial Dropout: 전체 feature map을 랜덤하게 제거하는 방식. 각 채널이 특정 feature를 나타내므로, 채널 간 의존성을 줄이는 데 효과적이다.

Cutout: 이미지의 사각형 영역을 랜덤하게 마스킹하는 방식. 특정 부분에 과도하게 의존하는 것을 방지한다.

MaxPooling Dropout: 맥스풀링 연산 시 일부 값을 제외하여 항상 최댓값만 선택되는 것을 방지한다.


6. Feature 의존성 관리의 중요성. CNN에서 over-fitting은 네트워크가 특정 feature에 과도하게 의존하는 형태로 나타날 수 있다. 예를 들어, 강아지 이미지 분류에서 항상 귀 모양만 보고 판단하면, 테스트 시 귀가 가려진 이미지에서 실패할 수 있다. 적절한 드롭아웃은 네트워크가 다양한 feature에 고르게 의존하도록 만들어 견고성을 향상시킨다.


CNN 구조 설계는 문제의 특성, 계산 자원, 성능 요구사항 사이의 균형을 찾는 과정이다. Dilated convolution은 위치 정확성과 넓은 시야를 동시에 제공하고, depthwise separable convolution은 계산 효율성을 크게 향상시킨다. 또한 적절한 드롭아웃 기법은 모델의 일반화 능력을 강화한다. 이러한 구조적 혁신들은 CNN을 다양한 환경과 문제에 더 잘 적용할 수 있게 해준다.


+ 25.06.08 내용 추가


딥러닝을 공부하면서 느낀 업샘플링의 핵심


최근 몇 달간 CNN의 업샘플링 기법에 대해 깊게 공부하게 되었다. 처음에는 단순히 '이미지를 키우는 기술' 정도로만 이해했는데, 실제로 파고들어보니 생각보다 훨씬 흥미롭고 실용적인 개념이었다. 특히 U-Net을 공부하면서 "아, 이래서 이 구조가 혁신적이었구나"하는 깨달음이 있었다.


왜 업샘플링이 필요한가?

Screenshot 2025-06-08 at 7.48.48 PM.png

CNN에서는 보통 컨볼루션과 맥스풀링을 반복하면서 이미지 크기를 점점 줄여나간다. 이를 다운샘플링이라고 하는데, 문제는 이렇게 작아진 이미지로는 정확한 위치 정보를 알기 어렵다는 점이다.


예를 들어, 의료영상에서 종양의 정확한 위치를 찾거나, 자율주행에서 도로의 세밀한 경계를 구분해야 할 때는 원본과 비슷한 해상도가 필요하다. 그래서 작아진 특성맵을 다시 키우는 업샘플링이 중요해진다.


기존 방법들의 한계


전통적으로는 수학적 공식을 이용한 인터폴레이션을 사용했다. 가장 가까운 값을 복사하는 Nearest Neighbor, 선형보간을 사용하는 Bilinear, 3차 곡선을 이용하는 Bicubic 등이 있다.


하지만 이런 방법들은 한계가 명확하다. 2-3배 확대는 괜찮지만, 매우 작은 크기에서 큰 크기로 확대하면 흐릿하고 부자연스러운 결과가 나온다. 특히 딥러닝에서처럼 28×28 같은 작은 특성맵을 300×300으로 확대해야 할 때는 전혀 쓸모가 없다.


Transposed Convolution: 수학적 우아함의 결정체


첫 번째 학습 가능한 업샘플링 방법이 Transposed Convolution이다. 이름부터 어려워 보이지만, 핵심 아이디어는 의외로 직관적이다.

Screenshot 2025-06-08 at 7.48.57 PM.png

일반적인 컨볼루션은 Many-to-One 관계다. 예를 들어 3×3 필터를 사용하면 9개의 입력 픽셀이 1개의 출력 픽셀을 만든다. Transposed Convolution은 이것을 정반대로 뒤집어서 One-to-Many 관계로 만든다.

Screenshot 2025-06-08 at 8.16.25 PM.png

구체적으로 설명해보자. 4×4 입력이 3×3 컨볼루션을 거쳐 2×2 출력이 나온다고 하자. 이 과정을 매트릭스로 표현하면, 16개 원소를 가진 입력 벡터가 4×16 크기의 컨볼루션 매트릭스와 곱해져서 4개 원소를 가진 출력 벡터가 된다.


Transposed Convolution은 이 매트릭스를 전치(transpose)한다. 즉, 16×4 크기의 매트릭스를 사용해서 4개 원소의 입력을 16개 원소의 출력으로 변환한다. 하지만 여기서 중요한 점은 원래 컨볼루션의 가중치를 그대로 쓰는 게 아니라, 새로운 가중치를 학습한다는 것이다.


매트릭스 형태는 가져오되, 실제 값들은 학습을 통해 최적화한다. 이렇게 하면 단순히 수학적 역연산이 아닌, 데이터에 맞는 최적의 업샘플링을 학습할 수 있다.


Fractionally Strided Convolution: 직관적 명쾌함

Screenshot 2025-06-08 at 8.16.32 PM.png

두 번째 방법인 Fractionally Strided Convolution은 훨씬 직관적이다. 이름이 복잡해 보이지만, 실제로는 "픽셀 사이에 0을 끼워 넣고 일반적인 컨볼루션을 하자"는 단순한 아이디어다.


예를 들어 3×3 입력을 5×5로 만들고 싶다고 하자. 각 픽셀 사이와 가장자리에 0을 채워서 크기를 늘린 다음, 일반적인 3×3 컨볼루션을 적용한다.


구체적인 과정은 다음과 같다:

원본 3×3 이미지의 각 픽셀 사이에 1칸씩 0을 삽입

가장자리에도 적절히 0 패딩 추가

확장된 이미지에 일반적인 컨볼루션 적용


이렇게 하면 stride가 분수가 된다. 예를 들어 원본 이미지 기준으로는 1/2 stride로 움직이는 것처럼 보인다. 그래서 'Fractionally Strided'라는 이름이 붙었다.


U-Net: 업샘플링의 진정한 혁신

Screenshot 2025-06-08 at 8.16.38 PM.png

이론적으로 업샘플링 방법들을 이해했다고 해서 끝이 아니다. 실제로 어떻게 활용할지가 더 중요한데, 여기서 U-Net이 정말 영리한 해결책을 제시한다.


U-Net은 이름 그대로 U자 모양의 네트워크다. 왼쪽은 일반적인 CNN처럼 다운샘플링하고, 오른쪽은 업샘플링으로 원본 크기를 복원한다. 하지만 단순히 대칭적인 구조가 아니라, 핵심적인 혁신이 숨어있다.


Contracting Path: 맥락을 파악하는 과정


U-Net의 왼쪽 부분을 Contracting Path라고 부른다. 이 부분은 일반적인 CNN과 비슷하다.


예를 들어 572×572 크기의 입력 이미지가 있다고 하자. 3×3 컨볼루션을 두 번 적용하면 568×568이 되고, 2×2 맥스풀링으로 284×284가 된다. 이 과정에서 채널 수는 64개로 늘어난다.


이런 식으로 계속 진행하면:

284×284, 128채널

140×140, 256채널

68×68, 512채널

28×28, 1024채널


가로세로 크기는 점점 줄어들지만, 채널 수는 점점 늘어난다. 이렇게 해서 이미지의 전체적인 맥락(context)을 파악하게 된다.


Expanding Path: 위치 정보를 복원하는 과정


오른쪽 부분은 Expanding Path다. 여기서 진짜 혁신이 시작된다.


28×28, 1024채널에서 시작해서 2×2 업샘플링을 적용하면 56×56이 된다. 동시에 채널 수를 512개로 절반으로 줄인다. 여기까지는 일반적인 업샘플링과 같다.


하지만 U-Net의 핵심은 여기서 나타난다. 단순히 업샘플링만 하는 게 아니라, Contracting Path에서 비슷한 크기를 가졌던 특성맵을 가져와서 합친다.


구체적으로, 56×56으로 업샘플링된 특성맵에 Contracting Path의 64×64 특성맵을 잘라내서(crop) 붙인다(concatenate). 크기를 맞추기 위해 64×64에서 가장자리를 잘라내서 56×56으로 만든 다음 채널 방향으로 합친다.


그 결과 56×56, 1024채널(512 + 512)의 특성맵이 만들어진다.


Skip Connection의 진정한 의미


이렇게 이전 단계의 특성맵을 가져와서 합치는 것을 Skip Connection 또는 Copy and Crop이라고 한다. 단순해 보이지만, 이게 U-Net을 혁신적으로 만든 핵심 아이디어다.


왜 이게 중요할까? Contracting Path에서 얻은 고해상도 특성맵은 세밀한 위치 정보를 담고 있다. 반면 업샘플링된 특성맵은 전체적인 맥락 정보를 담고 있다. 이 둘을 합치면 "전체적인 맥락은 이해하면서도 세밀한 위치까지 정확히 아는" 특성맵이 만들어진다.


실제로 각 단계별로 이런 과정이 반복된다:

56×56에서 104×104로 업샘플링 + 136×136에서 크롭해서 합치기

104×104에서 200×200으로 업샘플링 + 280×280에서 크롭해서 합치기

200×200에서 392×392로 업샘플링 + 568×568에서 크롭해서 합치기


최종 출력과 손실 함수


마지막에는 1×1 컨볼루션을 사용해서 클래스 수만큼의 채널로 만든다. 예를 들어 배경과 객체를 구분하는 문제라면 2채널로 만든다.


최종 출력은 388×388×2가 되는데, 이는 각 픽셀마다 "배경일 확률"과 "객체일 확률"을 나타낸다. 이를 정답 세그멘테이션 마스크와 픽셀별로 비교해서 손실을 계산하고 학습한다.


실무에서 느낀 U-Net의 장점


U-Net을 실제로 구현해보면서 느낀 점들이 있다.


첫째, 정말 효과적이다. 의료영상, 위성영상, 자율주행 등 다양한 세그멘테이션 문제에서 일관되게 좋은 성능을 보인다.


둘째, 직관적이다. "맥락은 이해하되 세부사항도 놓치지 않겠다"는 아이디어가 너무나 자연스럽다.


셋째, 확장성이 좋다. 기본 구조는 유지하면서 다양한 변형이 가능하다. Attention U-Net, Nested U-Net 등 수많은 변형들이 나온 이유다.


한계와 개선 방향


물론 완벽한 건 아니다. 메모리 사용량이 상당하고, 입력 크기가 제한적이며, 가끔 경계 부분에서 아티팩트가 생기기도 한다.


하지만 이런 한계들조차 후속 연구들로 많이 해결되고 있다. 결국 U-Net이 제시한 "Skip Connection을 통한 multi-scale 정보 융합"이라는 핵심 아이디어는 지금도 많은 모델들의 기반이 되고 있다.


컴퓨터 비전을 공부하면서 이런 "간단하지만 강력한" 아이디어들을 만날 때마다 느끼는 건, 결국 중요한 건 복잡한 수학이 아니라 문제의 본질을 꿰뚫는 통찰력이라는 것이다. U-Net이 바로 그런 사례가 아닐까 싶다.

keyword
일요일 연재
이전 24화딥러닝 아키텍처의 진화