직접 만드는 머신러닝

합성곱신경망(CNN) 옷 분류하기(1)

skawlsgus2 2025. 4. 1. 13:22

https://github.com/ackrilll/FashionMNIST/tree/dev

 

GitHub - ackrilll/FashionMNIST

Contribute to ackrilll/FashionMNIST development by creating an account on GitHub.

github.com

 

이번 프로젝트에서는 컨볼루션 레이어를 활용한 대표적인 구조인 합성곱신경망을 만들어 옷을 분류하는 작업을 수행해 보겠다. 아래와 같은 결과를 출력할 수 있도록 모델을 구성하고 훈련시켜 옷을 분류해 보자.

우선 합성곱 신경망이 무엇인지에 대해 알아보자

True는 정답, predicted는 모델이 예측한 결과

 

합성곱 신경망(Convolutional Neural Network, CNN)은 이미지, 비디오와 같은 시각적 데이터를 분석하고 처리하는 데 특화된 딥러닝 알고리즘이다. 인간의 시각 피질에서 영감을 받아 설계되었으며, 이미지 인식, 객체 탐지, 이미지 분류 등 다양한 컴퓨터 비전 분야에서 뛰어난 성능을 보인다. 합성곱 신경망의 구조는 아래와 같다

resnet 구조

  1. 합성곱 계층 (Convolutional Layer): 
    • 합성곱 연산을 통해 이미지의 특징을 추출하는 핵심적인 부분
    • 필터(filter) 또는 커널(kernel)이라는 작은 크기의 행렬을 사용하여 입력 이미지를 슬라이딩하면서 특징 맵(feature map)을 생성
    • 필터는 이미지의 특정 패턴(예: 모서리, 색상 변화)을 감지하도록 학습됨
    • 참고: https://skawlsgus2.tistory.com/15
  2. 활성화 함수 (Activation Function):
    • 합성곱 계층에서 추출된 특징 맵에 비선형성을 추가하여 신경망이 복잡한 패턴을 학습할 수 있도록 함
    • ReLU(Rectified Linear Unit), Sigmoid, Tanh 등이 자주 사용됨
  3. 풀링 계층 (Pooling Layer):
    • 특징 맵의 크기를 줄여 계산량을 감소시키고, 과적합(overfitting)을 방지
    • 최대 풀링(Max Pooling), 평균 풀링(Average Pooling) 등이 사용됨
  4. 완전 연결 계층 (Fully Connected Layer):
    • 풀링 계층을 거친 특징 맵을 1차원 벡터로 변환하여 최종 분류를 수행

크게 4가지로 구성된 CNN 모델을 만들어 MNIST 데이터로 학습 시키고, 정확도를 측정해 보자. 

다음 포스팅에서는 pytorch 를 활용해 레이어를 쌓아 CNN 모델을 만들어보겠다.