Deep Leaning CNN - CNN의 채널과 filter그리고 kernel
CNN의 channel, filter그리고 kernel
CNN에 용어가 channel, filter, kernel이 중요한 개념인데 때로는 혼란스러워 정리를 해봤다.
(참고 : https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/)
참고에 나와 있는 내용을 잘 읽어 보면 알 수 있지만 익숙해지기 전까지는 시간일 걸린다.
channel: color사진에서 각 색 혹은 명도를 나타내는 data. RGB를 가장 많이 이야기 하는데 색을 3가지 다른 값으로 저장한것( R-붉은색, G-초록색, B- 파란색). RGB에외도 channel이 더 있다. 흑백은 1개의 channel.
filter : CNN에서 convolution을 수행하기 위한 template같은 것이다. 보통 흑백으로 설명하는데 color인 경우는 channel과 같은 수의 template가 있다. 이 template를 kernel이라고 한다. 흑백이라면 filter=kernel이 된다.
kernel : CNN에서 convolution을 수행하는 template.
note : channel이 여러개 인경우(color)는 1개의 filter는 channel개수만큼의 kernel을 가지고 있다는 것이다. 그리고 convolution을 수행한 후 이 값을 더해서 1개의 값을 얻게 된다. 그러므로 convolution수행한 후에는 filter개수만큼의 그림이 생성된다.
의문점 : color의 channel을 굳이 convolution 수행후에 더해서 1개의 data로 만드는 이유는 무언지. 그림의 정보를 더 많이 남기기 위해서는 각 channel별로 따로 convolution을 수행하는 것도 가능하리라 생각되는데....
위 그림에서 가중치의 개수는 다음과 같이 계산한다. (그림에서 아래가 이미지 중간이 필터, 위가 출력)
2 x 2 커널을 가진 필터가 2개입니다. 채널마다 커널이 할당되어 총 가중치는 3 x 2 x 2 x 2로 24개 입니다.
출력 이미지는 사이즈가 3 x 3 이고 채널이 2개입니다. channel마다 따로 kernel을 적용한 경우이며 같은 kernel을 사용하는 경우도 있는것 같음.
그림은 https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/
컨볼루션 신경망 레이어 이야기
이번 강좌에서는 컨볼루션 신경망 모델에서 주로 사용되는 컨볼루션(Convolution) 레이어, 맥스풀링(Max Pooling) 레이어, 플래튼(Flatten) 레이어에 대해서 알아보겠습니다. 각 레이어별로 레이어 구성
tykimos.github.io
에서 가져왔습니다. CNN에 대한 자세한 설명이 필요하면 링크를 따라가서 보기 바람.