수달이네 기술 블로그

9. CNN(Convolutional Neural Network) 본문

AI공부/딥러닝

9. CNN(Convolutional Neural Network)

슬픈 수달이 2026. 2. 5. 22:10

CNN

CNN은 이미지나 비정형 데이터의 패턴을 학습하고 분석하는데 사용되는 딥러닝 모델

이전 선형 모델에 비해 CNN은 합성곱 계층 (convolutional layer)를 사용한다.

계층

  • 합성곱 계층(convolutional layer): 커널을 통해 입력 데이터에서 중요한 특징(에지, 모양)을 추출한다.
  • 풀링 계층(pooling layer): 차원을 축소하고, 계산 효율을 높인다.
  • 완전 연결 계층(fully connected layer): 특정 클래스, 값을 예측한다.

특징

  • 이미지 분류, 객체 탐지, 영상 처리등 다양한 분야에서 높은 성능을 발휘한다.
  • 이미지의 공간적 관계를 보존하며 학습할 수 있는 강점을 가진다.
  • 지금도 쓰일 정도

영상처리에서 CNN을 사용하는 이유는?

이미지를 분석하는데 적합한 구조

  • 작은 필터로 이미지의 중요 특징(선, 모양등) 을 추출하고 이를 반복해 학습 양을 줄인다.
  • 이미지가 조금 이동되거나 변형되어도 특징을 잘 인식할 수 있다.
  • 간단한 요소 ~ 복잡한 패턴까지 단계적으로 분석할 수 있어 DNN(Deep Neural Network)보다 적합하다.
    • DNN은 모든 픽셀을 개별적으로 학습하여 계산이 복잡하고 공간적 구조를 반영하지 못한다.

CNN 과정

1. 이미지를 숫자로 표현

이미지를 픽셀 값(흑백일 경우 밝기 0~255, 컬러는 RGB채널값)을 가진 행렬로 변환

ex) 6464 컬러 이미지 = 64*64*3 크기의 행렬(각 값은 0~255)

2. 합성곱 계층

CNN의 핵심 구성 요소로, 이미지에서 중요한 특징을 추출하는 역할.

  • 작은 크기의 커널(필터)를 이용해 입력데이터(이미지)의 일부분과 합성곱 연산을 수행한다.
  • 이 연산으로 특정 패턴(가장자리, 텍스처 등)을 감지한다.
  • 이 결과로 각 위치에서 특징 맵(feature map)을 생성한다.
    • 특징맵: 이미지의 중요 정보를 강조한 데이터 표현

결과적으로 이미지의 공간적 구조를 보전하면서 특징을 효율적으로 추출하여, 다음 계층으로 전달해 더 복잡한 패턴을 학습할 수 있다.

※합성곱 연산이란?

왼쪽 5*5 공간 = 이미지 / 중앙 3*3 공간 = 필터 / 오른쪽 5*5공간 = 출력결과

필터(커널)를 이미지 위에서 일정 크기만큼 이동하여, 필터와 해당 영역의 픽셀 값을 곱한 후(행렬곱) 합산하여 하나의 값을 만든다. 해당 값들이 모여 새로운 특징맵이 된다.

  • 필터는 학습과정에서 업데이트 된다.(가장자리, 선, 질감등을 감지하도록 조정)
    • 커널 = 선형 모델에서의 기울기(가중치)라고 보면된다.
  • 이미지의 공간적 관계를 보존하면서 중요한 정보를 강조하고, 불필요한 정보를 줄이는데 효과적이다.
  • ex) 첫번째 칸 연산

$$ (0×-1)+(0×-2)+(75×-1)+(0×0)+(75×0)+(80×0)+(0×1)+(75×2)+(80×1) = 155 $$

※스트라이드(Stride)

합성곱 연산에서 필터가 이미지 위를 이동하는 간격을 의미한다.

  • ex) 스트라이드 값 = 1 > 1픽셀식 옆으로 이동하며 모든 위치의 연산을 수행(위 이미지도 1)
  • 만약 스트라이드 값이 2 이상이면 출력 크기와 연산량이 줄어든다.
    • 이로 계산의 효율성이 높일 수 있다.
    • 하지만, 세부 정보가 손실될 수 있다.

※패딩(Padding)

합성곱 연산 상에서 이미지의 가장자리에 값을 추가해 출력 크기를 조정하고, 경계 부분의 정보손실을 방지한다.(일반적으로 0을 추가하는 ‘Zero Padding’을 사용)

  • 위 이미지를 보면 이미지 * 필터 = 출력 연산 시 원래 55의 이미지가 결과로 33이 되어 크기가 줄어들었다.
    • 패딩을 사용해 입력 데이터의 크기를 줄이지 않을 수 있다.(’Same Padding’ ↔ 사용안함 = ‘valid padding’)
  • 또한, 위 합성곱 이미지를 보면 가장자리 부분은 conv연산이 중앙에 비해 적게 연산되는 것을 알 수 있다. (모서리는 1번, 중앙은 9번 연산 > 패딩을 추가하면 모서리 4번, 중앙 9번)
    • 패딩을 사용해 경계 부분의 정보를 더 많이 학습할 수 있게 한다.

※풀링(Pooling)

특징맵의 크기를 줄이고, 중요한 정보를 요약해 계산 효율성을 높이는 과정(이미지 압축)

최대 풀링(Max Pooling): 작은 영역에서 가장 큰 값을 선택해 주요 특징을 강조

평균 풀링(Average Pooling): 영역의 평균 값을 계산하여 전체 정보를 요약

  • 데이터의 크기를 줄이면서 중요 특징을 유지
  • 모델의 공간적 위치변화에 덜 민감해지도록 만들어 일반화 성능을 높인다.
  • 연산량을 줄이고, 과적합또한 방지한다.

DNN과 CNN의 차이

DNN(Deep Neural Network)의 weight와 bias

DNN은 완전 연결 계층(Fully Connected Layer)로 구성되어있으며, 각 입력 노드가 모든 출력 노드와 연결된다.

  • 입력 노드의 수와 출력 노드의 수가 비례하여 많은 가중치가 필요하다.
  • 각 연결마다 고유한 가중치를 학습하여 같은 값이라도 위치가 다르면 별도의 가중치를 사용한다.
  • 모든 노드에 대해 별도로 편향(bias)가 존재하며, 가중치와 함께 학습된다.

CNN(Convolutional Neural Network)의 weight와 bias

CNN의 합성곱 계층은 작은 크기의 필터를 사용하여 입력 데이터의 특정 영역만 처리한다.

  • 필터는 여러 위치에서 동일하게 적용되며, 이를 ‘가중치 공유’라고 한다.(위에서 말했듯 필터 = 가중치)
  • 필터에 사용되는 가중치는 입력 데이터의 모든 영역에서 반복적으로 사용되어, 학습해야할 가중치 수가 줄어든다.

  • 각 필터마다 하나의 편향(bias)가 있으며, 필터가 어디에 적용되든 동일하게 사용된다.
  • 합성곱 신경망에도 bias를 추가할 수 있다. 만약 bias를 사용한다면 커널을 적용한 뒤에 더해진다.
    • 편향은 하나의 값만 존재하며 커널이 적용된 결과의 모든 원소에 더해진다.

다수의 채널 합성곱 연산

그러면 CNN은 컬러(3채널)와 흑백(1채널)간의 연산이 다른가?

다수의 채널을 가진 경우 채널마다 개별적으로 계산을 진행하고 합산된다.

  • 필터의 각 채널과 입력 이미지의 대응 채널에 대해 합성곱 연산을 수행한다.
    1. 필터의 R채널과 이미지의 R채널끼리 합성곱, 나머지도 마찬가지
    2. 이후 합성곱 결과를 더해 최종값 하나를 만든다.
    3. 설정된 스트라이드에 따라 이미지 위를 이동하며 반복한다.
    4. 최종적으로 하나의 출력 채널을 형성한다.

CNN레이어 구성

  • 입력 레이어
    • 이미지를 숫자 행렬(ex. 32×32×3, RGB 채널)로 네트워크에 전달.
  • 합성곱 레이어(Convolution Layer)
    • 작은 필터(ex. 3×3)를 사용해 이미지의 중요한 특징(ex. 선, 모양 등)을 찾아냄.
    • 필터를 여러 개 사용해 여러 가지 특징을 추출합니다.
  • 활성화 함수(ReLU)
    • 음수 값을 0으로 바꿔 비선형성을 추가하고, 모델이 복잡한 패턴을 학습할 수 있도록 도움.
  • 풀링 레이어(Pooling Layer)
    • 이미지 크기를 줄이고 중요한 정보만 요약한다.
    • ex) 2×2풀링은 4개의 값 중 가장 큰 값을 선택(Max Pooling).
  • 완전 연결 계층(Fully Connected Layer)
    • 이미지의 모든 특징을 하나의 벡터로 평평하게 펼쳐 최종 클래스를 예측.
    • ex) 10개의 클래스(고양이, 개 등)에 대해 확률을 계산합니다.
  • 출력 레이어(Output Layer)
    • 소프트맥스(Softmax) 같은 함수를 사용해 각 클래스에 대한 확률을 출력.

참조(CNN 구조 확인 사이트): https://adamharley.com/nn_vis/cnn/2d.html