Receptive field (수용 영역)는 딥러닝, 특히 CNN(Convolutional Neural Network)에서 아주 중요한 개념입니다.
CNN의 특정 뉴런(또는 피처)의 출력이 입력 이미지의 어느 영역을 참조하고 있는지를 의미합니다.
예를 들어, 어떤 CNN의 마지막 레이어의 한 뉴런이 입력 이미지의 40×40 영역을 본 결과라면, 그 뉴런의 receptive field는 40×40입니다.
Convolution: 필터의 커널 크기만큼 receptive field가 넓어집니다.
예: kernel size 3 → 기존 RF + 2 (3-1)
Stride > 1 또는 pooling: receptive field의 성장 속도를 가속시킵니다.
딥해질수록 (레이어 많아질수록) RF는 점점 커집니다.
간단한 CNN:
Input -> Conv(k=3, s=1) -> Conv(k=3, s=1) -> Conv(k=3, s=1)
점점 커집니다.
첫 번째 레이어에서 필터 크기는 3x3입니다. 그리고 stride=1이므로 필터가 입력 이미지의 각 픽셀을 한 칸씩만 이동하면서 적용됩니다.
따라서 첫 번째 레이어의 receptive field는 3x3입니다.
RF at Layer 1 = 3
두 번째 레이어에서 또 다른 3x3 필터가 적용됩니다. 이 필터는 이전 레이어의 출력에 적용되므로, 이때의 Receptive Field는 첫 번째 레이어에서의 RF에 새로운 필터 크기 (3x3)가 추가된 크기입니다.
하지만 이때 stride=1이므로, 필터는 한 칸씩만 이동하면서 적용됩니다. 따라서 기존 receptive field (3) + 필터 크기 (3) - 1의 방식으로 계산됩니다.
RF at Layer 2 = 3 (이전 RF) + 2 (커널 크기 - 1) = 5
세 번째 레이어에서도 마찬가지로 3x3 필터가 적용됩니다. 이때도 stride=1이라서 한 칸씩만 이동합니다. 이전 레이어의 RF에 또 다른 필터 크기(3x3)가 추가됩니다.
따라서 두 번째 레이어에서의 RF(5)와 커널 크기(3)를 사용하여 다음과 같이 계산됩니다.
RF at Layer 3 = 5 (이전 RF) + 2 (커널 크기 - 1) = 7
따라서 각 레이어를 지나면서 Receptive Field는 커진다는 사실을 알 수 있습니다. 이 계산에서 중요한 점은 stride가 1이기 때문에 필터가 한 칸씩만 이동하면서 출력 크기가 점차 확장된다는 것입니다.
U-Net은 downsampling(축소)과 upsampling(복원)을 반복하는 구조이기 때문에: