본문 바로가기
Analysis

딥러닝 : 합성곱 신경망(CNN)의 기본 개념

by Pebble`s 2025. 3. 12.

딥러닝 : 합성곱 신경망(CNN)의 기본 개념

합성곱 신경망(Convolutional Neural Network, CNN)은 주로 이미지 처리와 컴퓨터 비전 분야에서 뛰어난 성능을 보이는 딥러닝 아키텍처입니다. CNN은 인간의 시각 처리 방식에서 영감을 받은 구조로, 다음과 같은 특징이 있습니다:

  1. 지역적 수용 영역(Local Receptive Field): 이미지의 전체가 아닌 일부 영역만 처리합니다. 이는 인간의 시각이 한 번에 전체 시야를 인식하는 것이 아니라 특정 부분에 집중하는 방식과 유사합니다.
  2. 가중치 공유(Shared Weights): 동일한 필터를 이미지 전체에 적용하여 매개변수 수를 줄입니다. 이는 이미지의 어느 위치에서든 동일한 패턴을 인식할 수 있게 해주며, 학습해야 할 파라미터 수를 크게 감소시킵니다.
  3. 풀링(Pooling): 공간적 차원을 축소하여 계산 효율성을 높입니다. 이 과정은 중요한 특징은 유지하면서 이미지 크기를 줄여 계산량을 감소시킵니다.

CNN의 주요 구성 요소

1. 합성곱 층(Convolutional Layer)

  • 입력 데이터에 필터(커널)를 적용하여 특징 맵(feature map)을 생성합니다.
  • 다양한 필터를 사용해 서로 다른 특징(가장자리, 질감, 색상 변화 등)을 추출합니다.
  • 필터는 작은 행렬로, 이미지를 슬라이딩하면서 각 위치마다 입력과 필터 간의 합성곱 연산을 수행합니다.
  • 초기 층에서는 단순한 특징(선, 모서리)을 포착하고, 깊은 층에서는 더 복잡한 특징(물체의 부분, 질감)을 포착합니다.

2. 활성화 함수(Activation Function)

  • 비선형성을 추가하여 네트워크가 복잡한 패턴을 학습할 수 있게 합니다.
  • 주로 ReLU(Rectified Linear Unit)를 사용하며, 이는 음수 입력을 0으로, 양수 입력은 그대로 출력합니다.
  • ReLU는 계산이 간단하고 그래디언트 소실 문제를 완화하는 장점이 있습니다.
  • 다른 활성화 함수로는 Leaky ReLU, ELU, SELU 등이 있습니다.

3. 풀링 층(Pooling Layer)

  • 공간적 차원을 축소하는 다운샘플링 과정입니다.
  • Max Pooling: 지정된 영역에서 가장 큰 값만 선택합니다. 가장 중요한 특징을 보존하는 데 효과적입니다.
  • Average Pooling: 지정된 영역의 평균값을 사용합니다. 전체적인 특징을 부드럽게 표현합니다.
  • 풀링은 위치 불변성(position invariance)을 증가시켜 물체의 위치가 약간 변해도 동일하게 인식할 수 있게 합니다.
  • 또한 과적합을 방지하고 계산 효율성을 높이는 역할을 합니다.

4. 완전 연결 층(Fully Connected Layer)

  • 특징 맵을 1차원 벡터로 평탄화한 후 처리합니다.
  • CNN의 마지막 부분에 위치하여 최종 분류나 회귀 작업을 수행합니다.
  • 이전 층에서 추출된 특징들을 조합하여 최종 예측을 생성합니다.
  • 최근에는 Global Average Pooling 등으로 대체되어 파라미터 수를 줄이는 추세도 있습니다.

고급 CNN 아키텍처

AlexNet (2012)

  • 첫 번째로 주목받은 CNN 아키텍처로, ImageNet 대회에서 획기적인 성능을 보였습니다.
  • 5개의 합성곱 층과 3개의 완전 연결 층으로 구성됩니다.
  • ReLU 활성화 함수, 드롭아웃, 데이터 증강 등의 기법을 도입하여 과적합을 방지했습니다.
  • 두 개의 GPU에서 병렬 처리하도록 설계되어 당시로서는 매우 혁신적이었습니다.

VGGNet (2014)

  • 더 깊은 네트워크(16-19 층)를 통해 성능을 향상시켰습니다.
  • 단순하고 균일한 아키텍처를 갖추고 있으며, 모든 합성곱 층에서 3x3 필터만 사용합니다.
  • 작은 필터를 여러 층 쌓는 것이 큰 필터 하나보다 효과적임을 보여주었습니다.
  • 간단한 구조로 인해 이해하기 쉽고 다른 응용 분야에 쉽게 적용할 수 있습니다.

GoogLeNet/Inception (2014)

  • '인셉션 모듈'이라는 혁신적인 구조를 도입했습니다.
  • 인셉션 모듈은 1x1, 3x3, 5x5 합성곱 등 다양한 크기의 필터를 병렬로 사용하여 여러 스케일의 특징을 동시에 추출합니다.
  • 1x1 합성곱을 통한 차원 축소로 계산 효율성을 높였습니다.
  • 깊은 네트워크(22층)이면서도 AlexNet보다 파라미터 수가 적어 효율적입니다.

ResNet (2015)

  • 매우 깊은 네트워크(최대 152층)를 성공적으로 훈련시켰습니다.
  • 핵심 아이디어는 '잔차 연결(residual connection)' 또는 '스킵 커넥션(skip connection)'입니다.
  • 이 연결은 입력을 여러 층을 건너뛰어 출력에 직접 더하게 합니다.
  • 이를 통해 그래디언트 소실 문제를 해결하고, 더 깊은 네트워크 훈련이 가능해졌습니다.
  • 현재까지도 많은 컴퓨터 비전 모델의 기본 백본으로 사용됩니다.

DenseNet (2017)

  • 모든 층이 이전의 모든 층과 직접 연결되는 구조입니다.
  • 각 층은 이전 모든 층의 특징 맵을 입력으로 받고, 자신의 특징 맵은 이후 모든 층에 전달합니다.
  • 이러한 밀집 연결은 특징 재사용을 극대화하고 그래디언트 흐름을 개선합니다.
  • 파라미터 효율성이 높고 과적합에 강한 특성을 보입니다.

그 외 주요 발전

  • EfficientNet: 너비(채널 수), 깊이(층 수), 해상도를 함께 확장하는 최적의 방법을 제시했습니다.
  • MobileNet: 깊이별 분리 합성곱(depthwise separable convolution)을 사용해 모바일 기기에서도 효율적으로 작동하도록 설계되었습니다.
  • SENet: Squeeze-and-Excitation 블록을 통해 채널 간 관계를 명시적으로 모델링하여 중요한 특징에 가중치를 부여합니다.
  • EfficientDet: 객체 탐지를 위한 효율적인 아키텍처로, 적은 계산 자원으로도 높은 정확도를 달성합니다.

CNN의 응용 분야

  1. 이미지 분류:
    • 이미지가 어떤 클래스에 속하는지 판별합니다.
    • 예: 동물 종 식별, 제품 분류, 얼굴 인식 등
  2. 객체 탐지(Object Detection):
    • 이미지 내 여러 객체의 위치와 클래스를 동시에 식별합니다.
    • 주요 알고리즘: YOLO(You Only Look Once), Faster R-CNN, SSD(Single Shot MultiBox Detector)
    • 응용: 자율 주행, 보안 시스템, 소매업의 재고 관리 등
  3. 세분화(Segmentation):
    • 픽셀 단위로 이미지를 분류하여 객체의 정확한 경계를 찾아냅니다.
    • 의미적 세분화(Semantic Segmentation): 각 픽셀이 어떤 클래스에 속하는지 구분
    • 인스턴스 세분화(Instance Segmentation): 같은 클래스의 서로 다른 객체도 구분
    • 주요 아키텍처: U-Net, SegNet, DeepLab, Mask R-CNN
  4. 얼굴 인식 및 분석:
    • 신원 확인, 감정 인식, 나이 추정, 성별 판별 등
    • 보안 시스템, 마케팅 분석, 사용자 경험 개선 등에 활용
  5. 의료 영상 분석:
    • X-ray, CT, MRI 등의 의료 영상에서 질병이나 이상을 감지
    • 종양 감지, 장기 세분화, 질병 진단 보조 등
    • 특히 U-Net은 의료 영상 세분화에 널리 사용됨
  6. 자율 주행 시스템:
    • 도로, 차량, 보행자, 신호등 등을 실시간으로 인식
    • 주행 환경 인식, 경로 계획, 장애물 회피 등에 활용
  7. 비디오 분석 및 행동 인식:
    • 비디오에서 움직임 패턴과 행동을 인식
    • 보안 감시, 스포츠 분석, 사용자 상호작용 등에 활용
  8. 증강 현실(AR) 및 가상 현실(VR):
    • 실시간 이미지 처리, 객체 인식, 3D 환경 이해 등에 활용
    • 실시간 필터, 가상 객체 배치, 환경 매핑 등

CNN은 컴퓨터 비전 분야를 혁신하며 이미지 처리의 표준이 되었습니다. 최신 연구는 효율성 향상, 적은 데이터로의 학습, 설명 가능성 증가 등에 초점을 맞추고 있으며, 자기지도학습(Self-supervised Learning)과 결합하여 레이블이 없는 데이터에서도 효과적으로 학습하는 방향으로 발전하고 있습니다.