기존 방식의 한계 (FCN의 한계)
1. 픽셀 수가 많을 경우 너무 많은 신경망이 필요함. 예를들어 픽셀 수가 100만개일 경우 입력이 100만개임.
2. 이미지 안의 특정 대상의 위치가 바뀔 경우 정확도 떨어짐. 예를들어 사람 얼굴이 좌측 상단에 있는 사진으로 학습된 데이터는, 우측 하단에 사람 얼굴이 있는 사진에서는 사람 얼굴을 검출하지 못함.
CNN의 아이디어
CNN은 필터를 이용해 이미지로 부터 특징을 추출하는 방법입니다. 예를들어 사진에 사람 얼굴이 있는지 알고 싶다고 합시다. 사진 보다 작은 필터를 만듭니다. 이 필터는 사람 얼굴을 검출하는 필터입니다. 필터로 사진 위를 슬라이딩 하며 합성곱을 수행합니다. 결과로 얻어진 특징 맵의 값을 다 더해주면 특징맵의 값이 계산됩니다. 이 값은 특정 특징에 대한 값이 됩니다.
CNN 자세히보기
위에서는 간단히만 설명했는데 실제로는 조금 더 복잡합니다. 필터로 컨볼루션을 하고 얻어진 특징맵이 있다고 합시다. 이 특징맵의 값을 다 더해서 하나의 값을 얻을 수도 있지만, 특징맵의 차원을 줄이는 pooling 을 주로 합니다. 예를들어 특징맵이 64x64 이라면, 네칸을 기준으로 나누고 최댓값이나 평균값을 취해 32x32 이미지를 만드는 것입니다. 그리고 다시 이 이미지에 컨볼루션을 수행합니다. 주로 (컨볼루션->ReLU->컨볼루션->ReLU0->풀링) 형태로 수행합니다. 마지막 풀링은 하나의 값이어도 되고, 4x4 과같은 형태여도 됩니다. 4x4라면 길이가 16인 벡터로 펼친 뒤에 FCN(fully connected network) 에 넣어줍니다. 필터를 여러 종류를 사용할 수도 있습니다. 만약 필터를 10종류 사용했다면, FCN에 들어가는 차원은 16x10=160 차원이 됩니다.
커널과 필터의 차이
RGB데이터는 3차원데이터입니다. 3차원 데이터에 CNN을 적용할 때는 편의상 커널과 필터를 구분할 필요가 있습니다. 마스크 한장을 커널이라고 부르고, 커널을 묶은 것을 필터라고 부릅니다. RGB데이터에 적용하며 무슨 말인지 이해해봅시다. RGB 데이터는 채널이 셋입니다. 채널이란 층을 말합니다. R층, G층, B층으로 되어 있고 마치 세장의 이미지를 겹쳐놓은 것과 같습니다. 합성곱을 하기 위한 마스크를 3장 사용합니다. 1장으로 다 쓰는게 아니라 각 층마다 다른 마스크를 사용합니다. 총 세장의 마스크를 사용하여 합성곱을 한 뒤, 결과를 더해서 하나의 특징맵을 얻습니다. 이때 각각의 마스크를 커널이라고 부릅니다. 총 세개의 커널이 사용됐는데, 세 커널 모두 하나의 데이터에 적용한 것이므로 세 커널을 묶어서 필터라고 부릅니다.
학습해야 하는 파라미터
4x4 필터에는 16개의 파라미터가 있습니다. 필터의 각 값이 파라미터입니다. 필터의 차원을 모든 필터에 대해 더해주면 필터의 전체 파라미터가 됩니다. FCN 에서도 weight와 bias 가 파라미터입니다.
'딥러닝 모델 글로만 이해하기' 카테고리의 다른 글
CycleGAN 설명 (자세히 글로 쓴) (0) | 2023.12.19 |
---|---|
GAN 쉬운 설명 (글로만 이해하기) (1) | 2023.11.04 |
VAE (variational auto encoder) 쉬운 설명 (글로만 이해하기) (0) | 2023.11.01 |
댓글