참고 사이트 :
https://mz-moonzoo.tistory.com/63
https://deep-flame.tistory.com/18
CNN(Convolutional neural network)
은 이미지나 영상 데이터를 처리하는 데 가장 효과적인 딥러닝 모델 중 하나입니다.CNN의 구조는 크게 컨볼루션 층(Convolutional Layer), 풀링 층(Pooling Layer), 그리고 완전 연결 층(Fully Connected Layer) 로 나뉩니다.
Feature extraction
과Classification
과정
[ 이미지출처: https://deep-flame.tistory.com/18 ]
컨볼루션은 이미지의 작은 부분을 필터(커널)
로 스캔하며 특징을 추출하는 과정입니다.
필터(Filter)
: 컨볼루션 연산을 수행하는 작은 크기의 가중치 행렬로, 이미지의 패턴이나 특징을 추출합니다.
출력: 필터가 이미지에 적용되면, 그 결과로 특징 맵(Feature Map) 이 생성됩니다. 이는 필터가 감지한 중요한 이미지의 패턴을 포함합니다.
필터의 역할: 경계, 질감, 패턴 등과 같은 로우 레벨 특징을 추출합니다. 여러 필터를 사용하여 이미지를 다양한 방식으로 분석할 수 있습니다.
Stride
: 이때 필터가 한 번에 얼마나 이동하는지(= stride)가 출력 특징 맵의 크기를 결정합니다.
Stride의 효과:
패딩(Padding)
:풀링(Pooling)
은 특징 맵의 크기를 줄여 연산량을 줄이고, 중요한 정보를 추출하는 과정입니다.Max Pooling
: 가장 많이 사용되는 풀링 방법으로, 작은 영역에서 최대값을 선택합니다.Average Pooling
: 영역의 평균값을 선택하는 방식입니다.요약: 컨볼루션 연산으로부터 얻은 feature map (= activation map) 을 대상으로 크기를 줄이는 작업
CNN의 마지막 부분에서는, 컨볼루션과 풀링을 통해 추출된 2D 특징 맵을 1D 벡터로 변환(Flatten)
한 후 완전 연결층에 전달합니다.
Fully Connected Layer
는 신경망의 마지막 층으로, 이미지 분류 등 최종 예측을 담당합니다.
CNN(Convolutional Neural Network)
은 이미지나 영상 데이터를 처리하는 데 가장 효과적인 딥러닝 모델입니다.
- CNN의 구조는 크게 특징 추출(Feature Extraction)과 분류(Classification)로 나뉩니다.
- 특징 추출 단계에서는 컨볼루션 연산과 풀링이 사용됩니다.
컨볼루션 연산(Convolution)
: 입력 이미지에서 필터를 사용하여특징 맵(feature map)
을 추출합니다.
필터
는 이미지 위를 스캔하며, 로우 레벨 특징(경계, 패턴 등)을 감지하고, 점점 더 복잡한 고수준 특징을 학습하게 됩니다.
이때스트라이드(stride)
는 필터가 얼마나 이동할지를 결정하며,패딩(padding)
은 출력 크기를 조절하고, 이미지 가장자리 정보가 손실되는 것을 방지합니다.풀링(Pooling)
: 이렇게 추출된 특징 맵의 크기를 줄이고 중요한 정보를 추출하기 위해 풀링이 사용됩니다.
풀링 층에서는Max Pooling
이나Average Pooling
을 통해 출력 크기를 줄이면서도 중요한 특징을 보존할 수 있습니다.
이를 통해 연산량을 줄이고, 이미지의 위치 변화에 대한 불변성을 확보합니다.Flatten
: 풀링 과정을 거친 특징 맵은 Flatten 과정을 통해 1차원 벡터로 변환됩니다. 이는 완전 연결층에 입력될 수 있도록 데이터를 변형하는 과정입니다.완전 연결층(Fully Connected Layer)
: Flatten된 데이터를 받아 은닉층을 통해 학습이 진행됩니다.
최종적으로는 Softmax와 같은 활성화 함수를 통해 클래스 확률을 출력하고, 분류 문제에서 예측 결과를 제공합니다.
- CNN의 학습 과정은
역전파(backpropagation)
를 통해 가중치와 필터 값을 업데이트하며, 이를 통해 모델이 점점 더 정확하게 데이터를 분류할 수 있도록 학습합니다.