[CV 7] CNN(Convolutional Neural Network) 1 : 기본 원리

방선생·2025년 2월 23일
0

Computer Vision

목록 보기
7/16

CNN(Convolutional Neural Network, 합성곱 신경망)

  • 개념 : 이미지 처리에 사용되는 딥러닝 모델
  • 종류 : LeNet, AlexNet, GoogLeNet , VGG, ResNet, YOLO series


  • 구조와 역할
  • 구성 요소



CNN(Convolutional Neural Network) 구조 1

1-1. 합성곱 계층(convolution Layer)

  • 역할 : 합성곱 연산을 통해 이미지에서 특징을 추출
  • 특징(feature) : 물체들을 구별할 수 있는 성질 예) 윤곽선, 귀의 모양, 얼굴의 형태
  • 필터(filter, mask, kernel) : 3X3 또는 5X5 크기의 행렬(2차원 배열) - 보통 3x3임


1-2. 합성곱 연산(convolution)

  • 개념 : 필터를 일정한 간격으로 이동해 가면서, 입력 데이터와 필터에서 서로 대응되는 원소끼리 서로 곱한 후 그 값들을 모두 더해주는 연산
  • 필터값은 랜덤임 == 가중치
  • 필터를 일정한 간격으로 이동 : strides (간격은 매개변수로 조절 가능)
  • 일반 행렬과 달리 이미지는 넓이(x) 높이(y) 임 (x > y순으로 이동)
  • 계산을 통해 이미지의 특성이 담긴 새로운 배열 생성 (feature map)
  • 똑같이 숫자배열이기 때문에 plt.imshow()를 통해 이미지로 변환 가능


1-3. 합성곱 연산의 결과(1) : 이미지 픽셀 값의 변화 → 특징(윤곽선 등) 검출

필터 시뮬레이터

  • 인공지능 이전부터 사람들이 경험적으로 찾아낸 가중치 값
    • blur : 이미지의 세부 사항을 흐릿하게 만드는 필터
    • bottom sobel : 이미지에서 아래쪽 방향으로의 경계선을 감지하는 필터
    • top sobel : 이미지에서 위쪽 방향으로의 경계선을 감지하는 필터
    • emboss : 이미지에 3D 양각 효과를 추가해, 돌출된 것처럼 보이게 하는 필터
    • identity : 이미지를 변화시키지 않고 원본을 그대로 유지시키는 필터
    • left sobel : 이미지의 왼쪽 방향 경계선을 감지하는 필터
    • right sobel : 이미지의 왼쪽 방향 경계선을 감지하는 필터
    • outline : 이미지의 경계나 윤곽선을 강조하여 외곽을 추출하는 필터
    • sharpen : 이미지의 경계와 디테일을 선명하게 만들어 강조하는 필터


1-4. 합성곱 연산의 결과(2) : 이미지 크기 축소



1-5. 합성곱 연산의 결과(2) : 이미지 크기 축소

  • (조건) strides = S


1-6. 컬러 이미지(3차원 데이터)의 합성곱

  • 각 채널마다 convolution 연산한 후 각 채널을 더해서 출력함 > 똑같이 2차원의 feature map이 생성됨


1-7. 3차원 데이터의 합성곱 : 블록(cube)으로 생각하기

  • 입력 데이터와 필터를 아래의 그림처럼 직육면체의 블록으로 생각하면 쉽다.
  • 3차원 데이터의 모양은 (높이, 너비, 채널) = (Height, Width, Channel) 순으로 표현한다


1-8. 어떤 필터가 최선일까?


CNN(Convolutional Neural Network) 구조 2

2-1. 패딩(padding)

  • 개념 : 합성곱 연산을 수행하기 전에 입력데이터 주변을 특정 값(주로 0)으로 채워 넣는 것
  • 목적 : feature map(특징 맵)의 크기를 입력 데이터의 크기와 동일하게 만드는 것


2-2. 패딩(padding) 후 합성곱 연산의 결과



3. 풀링(Pooling)

  • 개념 : feature map(특징 맵)의 가로, 세로 방향의 크기를 줄이는 연산
  • 종류 : Max Pooling, Average Pooling
  • 효과 : 데이터 압축, 불필요한 노이즈 제거


4. 완전 연결 계층(fc, fully connected layer)

  • 결과 값을 출력하는 위치(출력층)에서 사용
  • 신경 세포(뉴런)의 기능 구현
  • y=w1x1+w2x2+w3x3+...+wnxn+by = w_1x_1 + w_2x_2 + w_3x_3 + ... + w_nx_n + b
  • 입력 값과 출력 값이 100% 연결 된 상태 → 완전 연결 계층(fc, fully connected layer)

  • 입력 : 특성 맵(feature map)
  • 출력 : 분류의 결과
  • 출력의 유형 : 이진 분류(binary classification), 다중 분류(multiclass classification)


5-1. 활성화 함수

  • 개념 : 입력 신호(값)를 출력 신호(값)로 변환하는 함수


5-2. 출력층의 활성화 함수

  • 이진 분류

  • 다중 분류

+ 추가 설명 : 은닉층의 활성화 함수

  • 은닉층(hidden layer)
    • 입력층과 출력층 사이에 위치한 하나 이상의 계층
    • 기능 : 특징 추출
    • 구성 : convolution layer, pooling layer

  • ReLU 함수
    • 입력 값이 음수면 0으로 비활성화하고, 입력 값이 양수면 해당 값을 그대로 출력

RNN 출력층과 비슷해서 더 자세히 알고싶으신 분들은 참고하세요








참고자료

필터 시뮬레이터

profile
AI & Robotics

0개의 댓글