2024.07.16~07.22 프로젝트
2024.07.23~07.26 코로나 ㄷㄷ
CNN(Convolutional Neural Network)
- 이미지 처리와 패턴 익식에 탁월한 성능을 보여주는 신경망
- Image(픽셀로 이루어진 격자 형태의 데이터)의 공간적 특징을 추출하여 학습하고 패턴을 인식하는데 CNN을 사용

- 구성(Concolution/ Pooling/ Fully-connected layer=dense layer)
- 합성곱 층(Convolutional layer)
- Convolution(합성곱)은 kernal과 이미지의 각 픽셀을 곱하여 합산하는 과정
- Convolutional layer는 CNN에서 이미지 처리와 패턴 인식을 위해 주로 사용되는 중요한 구성요소
- Convolutional layer는 입력 이미지와 작은 크기의 필터(kernel)간의 합성곱 연산을 통해 새로운 특성의 맵(feature map)을 생성
Convolutional layer 구조 - 이를 통해 이미지의 지역적인(local) 패턴을 감지하고 추출함
- 이미지의 특성을 반영하는 kernal은 출력값이 높고, 특성을 반영하지 않는 커널은 출력값이 낮음
- Convolutional layer의 깊이가 깊어질 수록 복잡한 형태의 local feature도 처리할 수 있음
- 합성곱 층은 보통 활성화 함수(activation function)을 사용하여 비선형을 도입함
- kernal의 크기와 보폭(stride)는 합성곱 층의 출력층의 크기를 조절하는 중요한 요소
- kernal의 크기가 다를 때 feature map의 크기가 달라짐
- 층이 깊어질 수록 feature map의 크기가 크면 detail 한 이미지 특성을 분석할 수 있으나
- 너무 크면 연산이 복잡해짐
- 따라서, 적절한 feature map의 크기를 찾는 것이 중요
- kernal의 보폭(stride)도 연산량에 중요한 영향을 줌
- stride가 1일 경우 한칸씩, 2일 경우 두칸씩 움직이며 연산
- stride가 1일 경우 한칸씩, 2일 경우 두칸씩 움직이며 연산
- kernal의 크기가 다를 때 feature map의 크기가 달라짐
- Padding은 image의 테두리를 확장해서 둘러싸는 것 (e.g. padding = 1, image의 테두리를 1픽셀 씩 둘러싸는 것
- Padding의 이유는 합성곱 연산의 output인 feature map의 크기를 조절하기 위함
- Padding이 없으면 합성곱 층을 통가할 때 마다 feature map의 공간적 차원(높이/너비)가 줄어드는데, padding을 사용하면 이러한 차원을 유지. 깊은 층을 설계할 때도 공간 정보를 잃지않게 됨
- 풀링 층(Pooling layer)
- 합성곱 층에서 추출된 feature map의 크기를 줄여주는 역할
- Pooling 층을 통해 공간적인 크기를 줄이고, 연산량을 줄이면서 중요한 특징을 보존
- 종류
- Max Pooling layer (최대 풀링 층)
- 주어진 pooling 윈도우 내의 최대 값을 리턴
- Average Pooling layer (평균 풀링 층)
- 주어진 pooling 윈도우 내의 평균값을 리턴
- Max Pooling layer (최대 풀링 층)
- 밀집층
- 추출된 feature들을 기반으로 최종 출력을 생성
- fully connected layer 전에 모든 local feature를 1차원으로 만들어주는 flatten 층을 배치
- local feature는 국소적인 부분이기 때문에 최종 확률을 계산하기위해서는 반드시 전체를 고려해야
- 구조
- 합성곱 층(Convolutional layer)

참고: 신박ai
'TIL(2024y) > Deep learning' 카테고리의 다른 글
24.07.31 pre-trained CNN (0) | 2024.07.31 |
---|---|
24.07.30 CNN 3 (0) | 2024.07.30 |
24.07.04-05 RNN (0) | 2024.07.08 |
24.07.08 Auto encoder (0) | 2024.07.08 |
24.07.03 CNN (0) | 2024.07.06 |