직접 만드는 머신러닝
합성곱신경망(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
이번 프로젝트에서는 컨볼루션 레이어를 활용한 대표적인 구조인 합성곱신경망을 만들어 옷을 분류하는 작업을 수행해 보겠다. 아래와 같은 결과를 출력할 수 있도록 모델을 구성하고 훈련시켜 옷을 분류해 보자.
우선 합성곱 신경망이 무엇인지에 대해 알아보자


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

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