[2025] CS231n 5강: Image Classification with CNNs - CS231n 강의 노트

2025. 11. 17. 23:30·[2025] CS231n
반응형

5강 : Image Classification with CNNs

이번 5강에서는 AI와 딥러닝에 있어서 굉장히 중요한 Convoultional Neural Network (CNN)에 대해서 다룰 예정이다.CNN을 활용한 AlexNet이 2012년 등장하고 나서  2020년까지 대부분의 컴퓨터비전의 작업들에서 CNN이 사용되었다. 2021년부터 Transformer가 본격적으로 등장하기 전까지 CNN이 사용되어 왔고 Transformer 역시 CNN의 합성곱층이 포함되어 있다.  

 

이미지 분류의 이해

이전 수업에서의 신경망에서 완전 연결층 [Fully-Connected Layer]와 신경망을 비선형[non-linearity]를 적용할 수 있게 해주는 활성화 함수[Activation Function]을 통해서 복잡한 패턴을 학습할 수 있게 했었다. 이번 시간에는 이미지에서 특징을 추출할 수 있는 방법인 합성곱 층과 이미지의 화질을 낮출 수 있는 방법인 풀링 층에 대해서 알아보도록 할 것이다. 

 

컴퓨터 비전의 가장 핵심적인 과제는 이미지를 분류하는 것이다. 하지만 컴퓨터는 이미지를 그대로 이해하는 것이 아닌 0과 1로된 숫자로 이미지를 이해해야 한다. 이미지의 최소 단위인 픽셀을 통해서 히스토그램에 분포하면 이미지의 특징을 수치화할 수 있다. 

이 이미지의 특징을 추출할 수 있는 기법이 바로 합성곱 연산이다. 

 

합성곱 층[Convolutional Layer]

합성곱 층에서 합성곱 연산을 이용해 이미지의 특징을 추출할 수 있다. 합성곱 연산은 행렬의 겹치는 부분을 곱한 뒤에 전부 더한 값은 출력이 된다. 예를 들어 3x3에 3x3를 곱한다고 해보자 

 

이미지의 픽셀들을 명암을 숫자로 수치화하고 이를 입력으로 넣고나서 커널(kernel)로 불리는 필터의 값들을 곱하고 [예를 들어 맨왼쪽 위는 입력과 필터에서 각각 1,1이므로 1x1 이후 이 값들을 모두 더해주면 된다. 따라서 입력과 필터의 크기 같으면 ((1,1))의 값 하나만 출력으로 반환된다.

 

이번에는 5x5에 3x3 필터를 합성곱 연산을 해보자  

이미지 출처:  https://wikidocs.net/64066

방금 했었던 3x3에서의 계산으로 6이 나왔다.

이미지 출처:  https://wikidocs.net/64066

그 다음으로 필터를 오른쪽으로 한 칸 옮겨서 합성곱을 해주면 된다.

이미지 출처:  https://wikidocs.net/64066

3번 째 역시 한 칸 이동 후 합성곱을 해주었다.

이미지 출처:  https://wikidocs.net/64066

그 다음의 4번 째에서는 아래 쪽으로 한 칸 이동하고 나서 다시 진행하면 된다. 

이렇게 합성곱을 하게되면 결과로는 3x3짜리의 특징이 담겨져 있는 특징 맵[feature map]이 반환된다. 

이제 2차원에서 3차원으로 확장시켜보자. 이는 흑백의 이미지에서 명암을 2차원으로 표현했다면 색상의 이미지는 빨강, 초록, 파랑의 RGB를 통해서 3차원으로 표현할 수 있다. 입력으로 32x32x3의 이미지를 넣고 5x5x3의 필터를 거치게 하면 28x28x1의 특성 맵 또는 활성화 맵이 나온다.

 

 

여기서 필터를 여러 겹을 겹치게 되면 28x28x1이 여러 개 겹쳐진 [예시: 28x28x6]의 활성화 맵이 생성된다. 

하지만 이러한 형태의 합성곱 층은 문제점이 하나 있는데 바로 합성곱을 계속 할수록 점점 크기가 줄어든다는 문제이다. 이를 해결하기 위한 방법으로는 바깥쪽에 0들을 둘러싸서 이를 통해 활성화 맵이 줄어드는 것을 막을 수 있다. 이러한 방법을 패딩[padding]이라 한다. 

 

 

또다른 문제로는 거대한 이미지들의 경우에서 전반적인 특징들을 살피기 위해서 커널을 한 칸씩 움직인다고 하였을 때 너무 오래걸리고 컴퓨팅 비용의 문제가 있을 수 있다. 그럴 때 이미지의 특징을 러프하게 잡을 수 있는 downsampling방법이 존재한다. 매우 간단하게 기존에는 커널을 한 칸 씩 움직였는데 2칸, 3칸.. 이렇게 폭을 늘리게 되면  훨씬 더 빠르게 활성화 맵을 줄일 수 있다. 이렇게 움직이는 칸을 조절하는 것이 바로 stride라고 한다. 다음 사진처럼 stride가 2인 경우 2칸 씩 오른쪽으로 움직이는 모습을 볼 수 있다.

 

 

 

또다른 downsampling 방법으로 특정 픽셀 그룹에서 최소/최대만 골라서 크기를 줄이는 방법으로 각각 min/max pooling이라고 한다. 다음과 같은 4x4에서 max pooling을 적용한다고 해보자. 빨강, 초록, 노랑, 파랑에서 최대를 고르면 

다음과 같이 표현할 수 있다. 

 

 

이번 강의에서 나왔던 합성곱, padding, stride와 pooling을 통해서 이미지의 숫자에서 특징을 추출하기 위한 방법들을 소개하였다. 다음 강의로는 합성곱 층과 pooling층을 여러겹을 쌓아서 만든 CNN의 구조에 대해서 살펴볼 예정이다.

 

 

강의 자료

CS231n 강의 공식사이트 - cs231n.stanford.edu

CS231n Spring 2025 유튜브 강의 - youtube

CS231n 강의 슬라이드 - cs231n.stanford.edu/slides/2025

CS231n 과제 및 자료 - cs231n.stadford.edu.github.io

반응형
저작자표시 비영리 동일조건 (새창열림)

'[2025] CS231n' 카테고리의 다른 글

[2025] CS231n 7강: Recurrent Neural Networks - CS231n 강의 노트  (0) 2025.12.27
[2025] CS231n 6강: Training CNNs and CNN Architectures - CS231n 강의 노트  (0) 2025.11.20
[2025] CS231n 4강: Neural Networks and Backpropagation - CS231n 강의 노트  (0) 2025.11.06
[2025] CS231n 3강: Regularization and Optimization - CS231n 강의 노트  (1) 2025.09.22
[2025] CS231n 2강: Image Classification with Linear Classifiers - CS231n 강의 노트  (1) 2025.09.19
'[2025] CS231n' 카테고리의 다른 글
  • [2025] CS231n 7강: Recurrent Neural Networks - CS231n 강의 노트
  • [2025] CS231n 6강: Training CNNs and CNN Architectures - CS231n 강의 노트
  • [2025] CS231n 4강: Neural Networks and Backpropagation - CS231n 강의 노트
  • [2025] CS231n 3강: Regularization and Optimization - CS231n 강의 노트
코드짜는 오리
코드짜는 오리
AI에 대한 글을 올립니다.
  • 코드짜는 오리
    코드짜는 오리
    코드짜는 오리
  • 전체
    오늘
    어제
    • 전체 글 (41)
      • AI숏츠 (17)
      • 논문 리뷰 (10)
      • [2025] CS231n (10)
      • 컴퓨터비전 (2)
      • LLM (1)
  • 링크

    • GitHub
  • 인기 글

  • 최근 글

  • 반응형
  • 태그

    CV
    딥러닝
    옵티마이저
    SGD
    AI숏츠
    AlexNet
    deeplearning
    ADAM
    인공지능
    pytorch
    GPT
    AI
    트랜스포머
    lstm
    ChatGPT
    cs231n
    경사하강법
    llm
    computer vision
    rnn
    논문리뷰
    머신러닝
    transformer
    쉽게배우는
    Optimizer
    ComputerVision
    attention
    컴퓨터비전
    논문
    CS231n 강의노트
  • hELLO· Designed By정상우.v4.10.5
코드짜는 오리
[2025] CS231n 5강: Image Classification with CNNs - CS231n 강의 노트
상단으로

티스토리툴바