01. Channel이 3개일 때, 1-Layer의 Convolution 연산

- 3 채널 convolution 연산
- 각 채널의 kernel이 존재 ( 즉, 3X3 kernel 존재 )
- 3개의 kernel이 하나의 filter를 구성한다.
- 각각 채널의 image에 kernel을 over-riding한 후 convolution연산을 해준다.
- 여기에 각 채널의 겹치는 부분을 더해준 다음 bias를 더해준다
- 이 연산을 feature Map의 끝까지 해준다
- 이렇게 하면 하나의 feature map이 나온다.
- Filter 하나로 Feature Map 하나를 만들었다.
- Filter갯수 == Feature Map의 개수
- Filter의 갯수가 많아지면 Feature Extractor의 갯수가 많아지게되고 여러개의 feature map을 얻을 수 있다.
- 즉, Filter는 이미지 데이터가 가지고 있는 특징, pattern을 추출해 주는 역할을 한다
- * input의 channel수와 feature map의 channel 수는 다르다*
더보기
✔️보너스✔️
Conv2D layer의 파라미터의 수 = (커널크기 * 입력 채널의 수 * 출력 채널의 수(=필터의 수)) + bias 파라미터 개수 (커널의 개수와 같음)
Dense layer의 파라미터의 수 = (입력 레이어의 노드 개수 * 출력 레이어의 노그 개수) + bias 파라미터 개수(출력 레이어의 노드 개수와 같음)
02. Hyper-Parameter에 대한 고민 (Kernel size, Channel size, Stride)
1. Kernel Size
- Kernel size가 커질수록 연산을 통해 찾아야 하는 파라미터의 수가 증가하게 됩니다.
- Kernel size가 작아질수록 데이터에 존재하는 global feature보다 local feature에 집중하게 됩니다. 쉽게 표현하자면 큼직한 특징보다는 지엽적인 특징에 집중해서 패턴을 찾게 됩니다.
2. Channel size
- Filter의 channel size가 커질수록 convolution 연산을 통해서 더 다양한 패턴을 찾을 수 있습니다.
- 그러나 channel의 사이즈가 커짐에 따라서 연산으로 찾아야 하는 파라미터의 숫자가 증가하게 됩니다.
3. Stride
- Stride 값이 커지면 데이터를 빠르게 훑고 지나가는 연산을 하게 됩니다.
- 따라서 지역적인 특징을 꼼꼼하게 살펴보아야 할 경우에는 stride값을 크게 하는 것이 좋지 않습니다.
최적의 하이퍼 파라미터 값을 찾는것은 매우 어렵다. 그래서 해당 task에서 가장 좋은 성능을 보여주는 모델의 하이퍼 파라미터를 그대로 사용하는 경우가 많다.
03. 1x1 Convolution

feature map의 가로 세로 사이즈는 변화시키지 않고 channel size만 변형하고 싶을 때 1x1 convolution을 사용하여 연산량의 문제를 해결하면서도 channel size를 원하는 대로 변경하는 데에 도움을 준다.
04. Transposed Convolution


1. Transposed Convolution [Up-convolution]

- Transposed Convolution : Low-resolution의 이미지를 다시 high-resolution으로 돌아가는 과정
- 즉, Auto-Encoder 구조에서 입력 정보가 압축된 compressed representation을 다시 원래 입력 사이즈로 반환하는것을 말한다.
- 정보를 축약하는 down - sampling(Encoder) 이라는 표현과 반대로 up- sampling(Decoder)하다고 말한다.
- Latent Space Representation : 보이지 않는 특징을 찾아낸 결과물
- Pixel 별로 할당된 정답값을 맞추는 task인 (semantic) segmentation에서도 활용할 수 있다.
✨ 중요 ✨
커널의 개수 = 입력데이터의 채널 수
필터의 개수 = 출력데이터의 채널 수
'하루 30분 컴퓨터 비전 공부하기' 카테고리의 다른 글
| CV(2) CNN 기초 - Convolution, filter, padding (0) | 2023.10.25 |
|---|---|
| CV(4) CNN 기초 - pooling (0) | 2023.10.25 |
| CV(1) 이미지 데이터 다루기 기초와 MLP (0) | 2023.10.24 |
| 이미지 모델 다루기 (0) | 2023.09.05 |
| [파이썬] itertools count, 조합, 순열 사용방법 (0) | 2023.09.04 |