선생님, 질문이 있습니다.
350
작성한 질문수 72
선생님, 이번에 Kernel과 Filter 차이를 설명하셨는데,
제 이해가 맞는지 검토를 부탁드려도 될까요?
우리가 보통 color image는 R,G,B 총 3개의 (28,28,1) 이미지가 결합이 된 형태이니까 이를 묶어서 (28,28,3) 이렇게 표현을 하고
흑백 이미지의 경우에는 그냥 (28,28,1) 이렇게 표현하잖아요?
그렇게 되면 각각 Channel의 개수는 3,1이 되는 것이구요.
만일 11:54의 Conv2D 조건에서 Input이 RGB 이미지로 주어진다면,
0) 일단 공통적으로 Input (28,28,3)에 대한 Batch 크기는 논외로 여거두고,
1) kernel 정방행렬 한 개를 나눠서 생각해보면 크기는( 3,3,1) 이 되는데, channel 수에 맞추기 위해(RGB) 결국 (3,3,3)이 되는 것이고,
2) filter의 개수가 4개이기 때문에 이 (3,3,3) 크기를 갖는 kernel이 총 4개가 존재한다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
반면 흑백 사진 (28,28,1) 의 경우
0) 공통적으로 Input (28,28,1)에 대한 Batch 크기는 논외로 여겨두고,
1) kernel 정방행렬의 크기는 일단 (3,3)으로 주어지는데 Channel 수에 맞춰야 해서 (3,3,1)이 되는 것이고,
2) filter의 수가 4개이기 때문에 (3,3,1)의 크기를 갖는 kernel이 총 4개가 존재한다
이렇게 흐름으로 나눠서 생각이 되는데 어디부터 잘못이고 어디까지 이해가 잘 되었는지 짚어주시면 감사합니다ㅜㅜ!!
답변 1
2
안녕하십니까,
filter의 채널depth와 filter의 갯수를 헷갈리신것 같습니다.
일반적으로 컬러 이미지에 적용하는 하나의 filter는 3차원입니다. 즉 filter의 채널수(depth)가 3개 입니다.
1개의 filter는 2차원 커널 여러개로 구성될 수 있는데 컬러 이미지에 적용시에는 3개의 커널(즉 채널수가 3개), 흑백 이미지에 적용될 때는 1개의 커널(채널수가 1개 입니다)
이러한 3차원(또는 흑백 이미지의 경우 2차원) filter는 여러개를 적용할 수가 있습니다. 일반적으로 feature map을 만들때는 여러개의 filter 들을 적용합니다. 만약 24x24x3인 1개의 컬러 이미지에 3차원 filter를 12개를 적용하면 (크기가 변하지 않는다고 가정하고) 24x24x12의 차원을 가지는 feature map이 1개가 만들어 집니다.
강의에서도 강조 드리지만, 입력되는 이미지(또는 feature map)에 적용하는 filter의 갯수에 따라서 출력되는 feature map의 채널수(depth)가 결정 됩니다.
정리하면 흑백 이미지에 적용하는 filter는 주로 2차원, 컬러 이미지에 적용하는 filter는 3차원 입니다. 이때 filter 채널수(또는 depth)는 3입니다. kernel은 주로 2차원을 의미하며, 여러개의 kernel을 이뤄서 하나의 filter를 만듭니다.
이렇게 만들어진 3차원(컬러 이미지의 경우) filter는 여러개를 convolution연산에 적용할 수 있습니다. 이 여러개의 filter가 바로 filter의 갯수입니다.
0
답변 감사합니다, 선생님.
어제도 계속 듣고 혼자 강의 멈추고 예제 내 주신 것을 토대로 이해를 완료하였습니다.
만일 (28 * 28 * 3) Input 입력 filters = 32, kernel_size = 3,strides=1. padding = 'valid' 이렇게 된다면
filter shape는 (3,3,3)이고, 이 filter의 개수가 총 32개,
padding = 'valid'이기 때문에 28-3/ 1 + 1 = 26이므로 ouput feature map의 크기는 (26,26,32)가 되는 것으로 이해하는 것으로 정리할 수 있겠죠?
감사합니다.
resize 질문
0
50
1
20251212 Kaggle 런타임에 scikit-learn 설치 실패 트러블 슈팅
0
75
1
Loss와 매트릭 관계
0
61
2
Boston 코랩 실습
0
162
2
배치 정규화의 이해와 적용 2 강의 질문
0
134
2
Augmentation원본에 적용해서 데이터 갯수 자체를 늘리는 행위는 의미가있나요?
0
144
2
Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.
0
203
2
소프트맥스 관련 질문입니다
0
208
1
강의 관련 질문입니다
0
151
2
residual block과 identity block의 차이
0
186
2
옵티마이저와 경사하강법의 차이가 궁금합니다.
1
238
1
실습 환경
0
165
2
입력 이미지 크기
0
243
2
데이터 증강
0
195
2
albumentations ShiftScaleRotate
0
205
1
Model Input Size 관련
0
279
1
마지막에 bird -> frog 말고도 deer -> frog 도 잘못된것 아닌가요??
0
204
1
일반적인 질문 (kaggle notebook사용)
0
272
2
실무에서 Augmentation 적용 시
0
338
2
안녕하세요 교수님
0
231
1
가중치 초기화(Weight Initialization) 질문입니다.
0
327
1
테스트 데이터셋 predict의 'NoneType' object has no attribute 'shape' 오류
0
407
1
학습이 이상하게 됩니다.
2
1036
2
boston import가 안됩니다
0
228
1





