합성곱층의 필요성
- 이미지나 영상을 처리하는 데 유용함
- 이미지 분석 방법
위 그림의 왼쪽에는 3 x 3의 배열을 오른쪽과 같이 1 x 9로 펼쳐서(flattening) 분석하게 되면 데이터의 공간적 구조(spatial structure)를 무시하게 된다. 이것의 문제점을 해결하기 위해 합성곱층이 등장했다.
합성곱 신경망 구조
- 음성 인식이나 이미지/영상 인식에서 주로 사용되는 신경망임
- 다차원 배열 데이터를 처리하도록 구성되어 컬러 이미지 같은 다차원 배열 처리에 특화되어 있으며, 계층 5개로 구성됨
- 입력층 (Input Layer)
- 합성곱층 (Convolution Layer)
- 풀링층 (Pooling Layer)
- 완전 연결층 (Fully connected Layer) = FC Layer
- 출력층 (Output Layer)
< 전반적인 합성곱 신경망 흐름 >
합성곱층 + 풀링층을 거치면서 입력 이미지의 주요 특성 벡터(feature vector)를 추출함
그 후, 추출된 주요 특성 벡터들은 완전 연결층을 거치면서 1차원 벡터로 변환되고,
마지막 출력층에서 활성화 함수인 소프트맥스(softmax) 함수를 사용하여 최종 결과가 출력됨
자세하게 5개 Layer 과정을 알아보면,,,
1) 입력층 (Input Layer)
- 입력 이미지가 최초로 거치게 되는 계층
- 단순 1차원의 데이터가 아님 -> 높이(Height), 너비(Width), 채널(Channel)의 값을 갖는 3차원 데이터
- 채널은 이미지가
- Grayscale이면 1
- 컬러(RGB)이면 3
- 채널은 이미지가
위의 그림과 같이 채널 이미지가 컬러이면 (4, 4, 3) 이렇게 표현할 수 있다.
2) 합성곱층 (Convolutional Layer)
- 입력 데이터에서 특성을 추출하는 역할을 수행함
- 특성 추출 어떻게 진행?
- 입력 이미지가 들어옴
- 이미지에 대한 특성 감지하기 위해 Kernel이나 Filter 사용
- Kernel / Filter - 이미지의 영역을 훑으면서 특성을 추출하게 됨 => 추출된 결과: 특성 맵(Feature Map)
- Kernel은 일반적으로 3 x 3, 5 x 5 크기로 적용되는 것이 일반적임
- 스트라이드(stride)라는 지정된 간격에 따라 순차적으로 이동함
< stride = 1일때 이동하는 과정 >
1. 입력 이미지에 3 x 3 필터 적용
2. 필터가 1만큼 이동
3. 필터가 1만큼 두 번째 이동
4. 필터가 1만큼 세 번째 이동
5. 필터가 1만큼 네 번째 이동
6. 필터가 1만큼 마지막으로 이동
< 예시 >
- Grayscale일때
입력층 (6, 6, 1) ---> 합성곱층; 커널/필터; stride=1 (4, 4, 1)
- 컬러일때
입력층 (3, 3, 3) ---> 합성곱층; 커널/필터; stride=1 (2, 2, 3)
*채널 수 동일 => (3, 3, 3) --> (2, 2, 3)
< 요약 >
- 입력 데이터: W1 * H1 * D1 (W1: 가로, H1: 세로, D1: 채널 또는 깊이
- 하이퍼파라미터
- 필터 개수: K
- 필터 크기: F
- 스트라이드: S
- 패딩: P
- 출력 데이터
- W2 = (W1 - F + 2P) / S + 1
- H2 = (H1 - F + 2P) / S + 1
- D2 = K
합성곱층은 CNN에서 가장 중요한 구성요소이며, 완전 계층과는 달리 입력 데이터의 형상을 유지할 수 있고, 3차원의 이미지 그대로 입력층에 받아서 출력도 3차원 데이터로 출력하여 다음 layer로 전달하기 때문에 CNN에서 이미지 데이터처럼 형상을 가지는 데이터를 제대로 학습할 가능성이 높음
3) 풀링층 (Pooling Layer)
- 합성곱층과 유사하게 특성맵의 차원을 다운 샘플링(sub-sampling)*하여 연산량 감소시킴
- 주요한 특성 벡터를 추출하여 학습을 효과적으로 할 수 있게함
*다운 샘플링(sub-sampling): 이미지를 축소하는 것
- 풀링 연산의 종류
- 최대 풀링 (Max Pooling) - 대상 영역에서 최댓값을 추출
- 평균 풀링 (Average Pooling) - 대상 영역에서 평균을 반환
*대부분의 합성곱 신경망에서는 최대 풀링이 사용됨
평균 풀링은 각 커널 값을 평균화시켜 중요한 가중치를 갖는 값의 특성이 희미해질 수 있기 때문
< 연산 과정 >
1. 최대 풀링 과정
2. 평균 풀링 과정
3. 최대 풀링과 평균 풀링 비교
< 요약 >
- 입력 데이터: W1 * H1 * D1 (W1: 가로, H1: 세로, D1: 채널 또는 깊이
- 하이퍼파라미터
- 필터 크기: F
- 스트라이드: S
- 출력 데이터
- W2 = (W1 - F + 2P) / S + 1
- H2 = (H1 - F + 2P) / S + 1
- D2 = D1
4) 완전연결층 (Fully Connected Layer)
- 축소된 특성맵이 최종적으로 완전 연결층으로 전달됨
- 축소된 특성맵
- 합성곱층 + 풀링층 (3차원 벡터) -----> 완전연결층 + 출력층 (1차원 벡터)
- 축소된 특성맵
5) 출력층 (Output Layer)
- softmax 활성화 함수 사용
- 입력 받은 값을 0 ~ 1 사이의 값으로 출력
- 최종적으로 이미지가 각 레이어에 속할 확률값이 출력됨
- 가장 높은 확률 값을 가지는 레이블이 최종 값으로 선정됨
출처
[1] https://thebook.io/080289/
딥러닝 파이토치 교과서
더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
thebook.io
https://www.gilbut.co.kr/book/view?bookcode=BN003345
딥러닝 파이토치 교과서
기초부터 CNN, RNN, 시계열 분석, 성능 최적화, 자연어 처리, 강화 학습, 생성 모델까지!
www.gilbut.co.kr
합성곱 신경망(ConvNet, Convolutional Neural Network)
Intro현재 ConvNet 기반의 모델은 단순 이미지 인식을 넘어 Object Detection, Semantic Segmentation 까지 딥러닝 알고리즘 중 가장 활발히 연구되고 성과를 내고 있는 분야이다. 우선 각 분야별 적용되고 있는
velog.io
[3] https://velog.io/@peterpictor/%EB%94%A5%EB%9F%AC%EB%8B%9D-CNN-%ED%8A%B9%EC%84%B1
[딥러닝] CNN 특성
물체가 이동하면 이동 정보가 특징맵에 그대로 반영병렬분산 구조보폭이 커질수록 출력되는 특징맵 크기가 작아짐다운샘플링을 통해 연산해야할 양이 적어짐3차원 영상을 2차원의 특징맵으로
velog.io
[4] https://amber-chaeeunk.tistory.com/25
딥러닝) CNN 풀링 계층
이전 포스팅에서 CNN구조와 합성곱 계층에 대해 다루었다. Fully connnected 신경망과 달리 CNN은 합성곱 계층과 풀링 계층이 등장한다고 하였다. 오늘은 풀링 계층에 대해 살펴볼 것이다. 1. 풀링 계층
amber-chaeeunk.tistory.com
[5] https://excelsior-cjh.tistory.com/180
06. 합성곱 신경망 - Convolutional Neural Networks
이번 포스팅은 핸즈온 머신러닝 교재, cs231n 강의를 가지고 공부한 것을 정리한 포스팅입니다. CNN에 대해 좀 더 간략하게 알고 싶으신 분들은 아래의 링크를 참고하면 됩니다.간략한 설명 : 합성
excelsior-cjh.tistory.com
'Concepts > ML & DL' 카테고리의 다른 글
[ML] Mini Batch / Batch Size / Iteration / Epoch (1) | 2024.01.12 |
---|---|
Object Detection: R-CNN, Fast R-CNN, Faster R-CNN 요약 (1) | 2024.01.11 |
Few-Shot Learning (1) | 2023.12.10 |