작성
·
279
0
제가 CNN에 대한 개념이 부족하 것 같아서 공부를 해 나가고 있는데,
필터에 대한 이해를 구글링을 해도 잘 이해가 되지 않습니다.
VGG16에 대해 검색을 해보았는데, 첫번째 레이어에서 224X224X3에 필터를 넣으면
112X112X64가 된다고 하는데, 그렇다면 16개의 필터를 사용한 것 같은데,
그렇다면 이 16개의 필터자체가 의미하는 바는 무엇인가요?
16개의 필터가 1번필터: 털이 있는지, 2번필터: 둥근모양인지, 3번필터: 반짝이는지.... 등등
이렇게 구성되어 있는 것인가요? 첫번째 컨벌루션레이어의 16개를 통과시켜서 대분류(featuremap)을 만든다는 뜻인건가요?
3X3의 16개의 필터들이 있다고 하는데, 필터들이 어떤 역할을 하기위해 있는것인지 구체적으로 알고싶습니다.
앞전에 미숙한 질문을 하여 죄송하고 감사합니다.
답변 1
2
안녕하십니까,
필터는 CNN에서 매우 중요한 역할을 합니다. CNN이 학습하는 것은 바로 필터 값입니다.
사실 필터는 CNN 이전부터 원래 비전 분야에서 기본으로 적용되는 것입니다. 잘 아시다시피 원본 이미지에 어떤 필터를 적용하느냐에 따라 이미지가 흐려지기도, 가로 중심/세로 중심으로 이미지가 변환되기도 합니다. 이미지를 보는 특수 안경이라고 생각하셔도 됩니다.
CNN은 이미지에 매우 많은 필터를 적용하면서 이미지를 식별합니다. VGG16의 경우 처음엔 64개-> 128개->256개->512개까지 필터들을 순차적으로 적용하면서 Feature map을 만들어 냅니다.
가령 224x224x3차원 원본 이미지의 첫번째 feature map을 만들기 위해 64개의 필터를 적용합니다. 그리고 개별 필터는 3(가로)x3(세로)x3(깊이, 여기 3은 원본이미지의 차원과 같아야 합니다)를 가지며 이 개별 필터 64개가 Convolution 연산을 해서 그 결과로 224 x 224 x 64 장의 feature map을 만들어 냅니다. 이후 max pooling 으로 사이즈를 112x112x64로 줄입니다. 다음에는 다시 128개의 3x3x64(깊이, 여기 64는 첫번째 feature map 64장과 같아야 합니다)를 가진 필터와 다시 convolution하는 방식으로 차례로 128개의 feature map을 만듭니다.
CNN은 학습 이미지 데이터를 계속 학습해 가면서 이 필터의 값(Weight)를 Update하면서 최적값을 찾습니다. 가령 64개의 안경을 어떤 돗수로/어떤 원근감으로 채워야 할지 값을 계속 update하면서 이미지를 인식할 수 있는 최적값을 찾아내는 것입니다. 따라서 CNN은 결국 이 최적 필터값을 찾는 비선형 방정식을 최적화하는 식으로 비유할 수 있기 때문에 필터는 CNN에서 매우 중요한 요소 입니다.
만약 CNN기반에 대해서 더 학습해야 하시면, 별도로 이 부분을 먼저 학습하시고 이론을 접하시는것도 좋습니다. 아니면 이론은 건너 띄시고 먼저 실습 부터 진행하신 뒤에 좀 막히신다 싶으면 다시 이론 부분을 접하시는 것도 좋습니다.
감사합니다.