인공지능 개론 (11) : Convolutional neural network (CNN) 이란?

STUDY_J·2024년 9월 10일
0

인공지능개론

목록 보기
12/13

참고 사이트 :
https://mz-moonzoo.tistory.com/63
https://deep-flame.tistory.com/18

1. CNN이란 무엇인가?

  • CNN(Convolutional neural network)은 이미지나 영상 데이터를 처리하는 데 가장 효과적인 딥러닝 모델 중 하나입니다.
  • 기존 신경망과의 차이점: 기존의 인공 신경망(MLP)은 입력 데이터를 1차원으로 변환한 후 처리하지만, CNN은 2D 구조를 유지하여 이미지의 공간적 정보를 효과적으로 학습할 수 있습니다.
  • 적용 사례: 이미지 분류, 객체 탐지, 얼굴 인식, 자율주행 등의 분야

2. CNN의 기본 구조

CNN의 구조는 크게 컨볼루션 층(Convolutional Layer), 풀링 층(Pooling Layer), 그리고 완전 연결 층(Fully Connected Layer) 로 나뉩니다.

Feature extractionClassification 과정


[ 이미지출처: https://deep-flame.tistory.com/18 ]

2-1. 컨볼루션 연산(Convolution Operation)

  • 컨볼루션은 이미지의 작은 부분을 필터(커널)로 스캔하며 특징을 추출하는 과정입니다.

  • 필터(Filter): 컨볼루션 연산을 수행하는 작은 크기의 가중치 행렬로, 이미지의 패턴이나 특징을 추출합니다.

    • 출력: 필터가 이미지에 적용되면, 그 결과로 특징 맵(Feature Map) 이 생성됩니다. 이는 필터가 감지한 중요한 이미지의 패턴을 포함합니다.

    • 필터의 역할: 경계, 질감, 패턴 등과 같은 로우 레벨 특징을 추출합니다. 여러 필터를 사용하여 이미지를 다양한 방식으로 분석할 수 있습니다.

  • Stride : 이때 필터가 한 번에 얼마나 이동하는지(= stride)가 출력 특징 맵의 크기를 결정합니다.

    • Stride = 1: 필터가 매번 1픽셀씩 이동하면서 모든 위치에서 연산을 수행합니다. 이때 특징 맵의 크기는 거의 줄어들지 않습니다.
      Stride > 1: 필터가 더 많이 건너뛰면서 이동하므로, 출력되는 특징 맵의 크기가 더 작아집니다.
  • Stride의 효과:

    • Stride = 1: 필터가 1픽셀씩 이동하면, 입력 이미지에 있는 더 많은 세부 정보를 고려할 수 있으며, 더 큰 특징 맵이 생성됩니다.
      Stride > 1: 필터가 더 크게 이동하면, 연산 속도는 빨라지지만, 특징 맵의 크기는 작아집니다. 이로 인해 정보가 손실될 수 있지만, 연산량이 줄고 계산이 더 효율적입니다.



  • 패딩(Padding) :
    패딩은 컨볼루션 연산을 할 때 출력 크기를 조절 하거나 경계 부분의 정보 손실을 막기 위해 사용됩니다.
    패딩이 없는 경우(Valid Padding), 컨볼루션을 통해 출력 이미지의 크기가 점점 작아집니다. 이 문제를 해결하기 위해 이미지의 가장자리에 0을 채워넣는 방식으로 패딩을 적용할 수 있습니다. 이를 통해 출력 크기를 유지할 수 있습니다.
    Same Padding은 입력 크기와 동일한 크기의 출력이 나오도록 패딩을 적용하는 방식입니다.

2-2. 풀링 (Pooling)

  • 풀링(Pooling)은 특징 맵의 크기를 줄여 연산량을 줄이고, 중요한 정보를 추출하는 과정입니다.
    1. 크기 축소: 풀링은 입력 이미지의 공간적 크기(가로, 세로)를 줄여서 연산을 효율적으로 합니다.
    2. 특징 보존: 특징 맵의 크기를 줄이면서도 중요한 특징(엣지, 패턴 등)을 유지하는 역할을 합니다.
    3. 불변성 증가: 풀링은 위치 변화에 대한 불변성을 제공합니다. 즉, 이미지 내에서 객체의 위치가 조금씩 변해도 동일한 특징을 추출할 수 있습니다.
  • Max Pooling: 가장 많이 사용되는 풀링 방법으로, 작은 영역에서 최대값을 선택합니다.
  • Average Pooling: 영역의 평균값을 선택하는 방식입니다.

요약: 컨볼루션 연산으로부터 얻은 feature map (= activation map) 을 대상으로 크기를 줄이는 작업

2-3. 완전 연결층 (Fully Connected Layer)

  • CNN의 마지막 부분에서는, 컨볼루션과 풀링을 통해 추출된 2D 특징 맵을 1D 벡터로 변환(Flatten)한 후 완전 연결층에 전달합니다.

  • Fully Connected Layer는 신경망의 마지막 층으로, 이미지 분류 등 최종 예측을 담당합니다.

Summary

CNN(Convolutional Neural Network)은 이미지나 영상 데이터를 처리하는 데 가장 효과적인 딥러닝 모델입니다.

  • CNN의 구조는 크게 특징 추출(Feature Extraction)분류(Classification)로 나뉩니다.
  • 특징 추출 단계에서는 컨볼루션 연산과 풀링이 사용됩니다.
  1. 컨볼루션 연산(Convolution): 입력 이미지에서 필터를 사용하여 특징 맵(feature map)을 추출합니다.
    필터는 이미지 위를 스캔하며, 로우 레벨 특징(경계, 패턴 등)을 감지하고, 점점 더 복잡한 고수준 특징을 학습하게 됩니다.
    이때 스트라이드(stride)는 필터가 얼마나 이동할지를 결정하며, 패딩(padding)은 출력 크기를 조절하고, 이미지 가장자리 정보가 손실되는 것을 방지합니다.
  2. 풀링(Pooling): 이렇게 추출된 특징 맵의 크기를 줄이고 중요한 정보를 추출하기 위해 풀링이 사용됩니다.
    풀링 층에서는 Max Pooling이나 Average Pooling을 통해 출력 크기를 줄이면서도 중요한 특징을 보존할 수 있습니다.
    이를 통해 연산량을 줄이고, 이미지의 위치 변화에 대한 불변성을 확보합니다.
  3. Flatten: 풀링 과정을 거친 특징 맵은 Flatten 과정을 통해 1차원 벡터로 변환됩니다. 이는 완전 연결층에 입력될 수 있도록 데이터를 변형하는 과정입니다.
  4. 완전 연결층(Fully Connected Layer): Flatten된 데이터를 받아 은닉층을 통해 학습이 진행됩니다.
    최종적으로는 Softmax와 같은 활성화 함수를 통해 클래스 확률을 출력하고, 분류 문제에서 예측 결과를 제공합니다.
  • CNN의 학습 과정은 역전파(backpropagation)를 통해 가중치와 필터 값을 업데이트하며, 이를 통해 모델이 점점 더 정확하게 데이터를 분류할 수 있도록 학습합니다.

0개의 댓글