Make Convolutional Networks Shift-Inavariant Again

Inc Lomin's avatar
May 07, 2021
Make Convolutional Networks Shift-Inavariant Again
 

Introduction

일찍이 neural network는 1990년 LeCun의 논문에서 blurred-downsample의 일종인 average-pooling을 사용했습니다. 그 후로는 max-pooling이 더 좋은 성능을 보여준다는 많은 경험적 근거에 입각하여, 현재는 네트워크에서 max-pooling을 사용하는 것이 대세가 되었습니다.
하지만, max-pooling을 사용할 경우에는 입력에서의 작은 shift가 결과의 큰 차이로 나타날 수 있다는 문제가 최근 들어 대두되기 시작했습니다. 아래 그림은 입력 shift에 따른 예측 결과의 stability를 보여주는 예시입니다. 각 그래프에서, x축은 이미지의 translational shift를 나타내고, y축은 각 shift에서의 정답 클래스 confidence를 나타냅니다. 검정 선으로 나타낸 baseline의 경우에는 이미지의 shift에 따라서 연속적인 값을 나타내지 않고 들쭉날쭉한 결과를 보이는데, 특히 VGG는 특정 위치에서 score가 아예 0이 되는 경우도 있습니다.
notion image
이런 현상이 발생하는 이유는 max-pooling 연산이 shift-invariant하지 않기 때문입니다. 일반적으로 downsampling을 할 때는 low-pass filter를 통해 anti-aliasing을 해주는 것이 신호처리의 기본이지만, max-pooling에서는 이를 무시하고 downsample을 하기 때문에 상기한 문제가 발생한다고 볼 수 있습니다.
Anti-aliasing이란 높은 해상도의 신호를 낮은 해상도에 나타낼 때 생기는 패턴을 최소화하는 방법입니다. 아래 그림에서 왼쪽 a는 해상도를 낮춘 것, 오른쪽 a는 anti-aliasing을 적용한 것 입니다. 해상도를 낮추면 왼쪽의 a와 같이 계단으로 깨지는 패턴이 발생하는데, anti-aliasing은 blur처리를 하여 이러한 부분이 덜 두드러지도록 해줍니다.
notion image
이 논문에서는 이미지의 해상도를 downsample할 때 anti-aliasing을 고려하여, max-pooling의 단점을 극복할 수 있는 방법을 제안합니다.
 

Proposed Method

Preliminaries

먼저 몇 가지 정의를 하고 넘어가겠습니다.
  • Shift-equivariance and invariance
Input image X에 대해, L-layer CNN은 다음과 같이 나타내며 feature extractor라고 칭합니다.
notion image
각 feature map은 다음의 연산을 통해 원래의 해상도로 upsample될 수 있습니다. (식을 자세히 보면 좌변은 input image X가 주어졌을 때, feature extraction 후 layer의 갯수는 유지하면서 해상도만 upsample한 결과입니다.)
notion image
위의 함수 F\tilde는 input의 shift가 동일하게 output에도 shift를 발생시킬 때, 즉, shifting과 feature extraction이 교환가능(commutable)하면 shift-equivariant 합니다. 다시 말하자면, 원본 이미지에서 얻은 feature map을 upsample한 뒤, shift를 적용한 것과, shift를 원본 이미지에 적용한 뒤 feature map을 얻어서 upsample한 결과가 동일한 경우에 해당 feature extractor는 shift-equivariant 합니다.
notion image
또한, F\tilde는 input에 shift를 발생시켜도 그 결과가 동일할 때 shift-invariant하다고 할 수 있습니다.
notion image
  • Periodic-N shift-equivariance/invariance
어떤 경우에는 shift가 N의 배수인 경우에만 shift-equivariance와 invariance가 성립하기도 합니다. 이러한 경우를 periodic-N shift-equivariance/invariance라고 부르겠습니다.
  • Circular convolution and shifting
CIFAR10으로 실험할 때, shift 전후의 이미지 정보량을 보존하기 위해 shift되어 캔버스 밖으로 빌려나간 부분들을 반대편 빈 부분에 채우는 방법을 택했습니다. Convolution 연산 시에도 마찬가지로 edge 부분에 걸친 지점에서는 패딩을 포함하여 연산을 하는 것이 아니라 반대편으로 넘어간 부분을 포함하였습니다. 이렇게 할 경우 shift 전후 결과에 차이가 있다면 이는 shift로 인해 이미지 정보가 바뀌었기 때문에 발생하는 차이가 아니라, 순수하기 feature extractor의 특성인 것으로 생각할 수 있습니다. ImageNet 실험들에서는 해상도가 더 큰 이미지를 사용하기 때문에 shifted crop을 하였습니다.

Anti-Aliasing

흔히 생각할 수 있는 downsampling 방법들인 max-pooling, strided convolution, average-pooling에 대하여 anti-aliasing을 적용해 봅시다. 각 downsampling에서의 anti-aliasing은 위와 같이 이루어집니다.
notion image
입력 신호가 [0, 0, 1, 1, 0, 0, 1, 1]로 간단하게 주어졌을 때, kernel=2, stride=2의 max-pooling을 적용하면 결과는 [0, 1, 0, 1]가 됩니다. 한편 입력신호를 x축으로 -1만큼 이동시키면 max-pooling 결과는 [1, 1, 1, 1]로 판이하게 달라집니다.
이는 max-pooling이 아래와 같이 두 개의 연산으로 이루어져 있기 때문입니다. 전체 입력 공간에서 dense하게 s=1로 max를 취하는 연산을 한 뒤에 subsampling을 하게 되는데, 이 중에서 shift-equivariance에 영향을 주는 연산은 subsampling 연산입니다.
notion image
이를 해결하기 위해 m*m 크기의 anti-aliasing kernel을 두 연산 사이에 삽입하고, 이를 Blur라고 표기하겠습니다. Blur와 Subsampling을 합쳐서 BlurPool로 정의하면, 전체 pooling 과정은 다음과 같이 나타낼 수 있습니다.
notion image
notion image
다시 저 위의 1d 예제로 돌아가서, BlurPool을 적용해봅시다. shift 전후의 값은 각각 [0.5, 1, 0.5, 1]과 [0.75, 0.75, 0.75, 0.75]가 되어 이전의 단순 MaxPool을 적용했을 때보다 훨씬 비슷합니다.
notion image
Strided-convolution의 경우에도 max-pooling과 같은 문제를 안고 있는데, 동일한 방법으로 이를 개선할 수 있습니다. 즉 BlurPool은 어떠한 레이어에도 적용될 수 있기 때문에, 기존 레이어들을 변경하지 않으면서 이를 사용하는 것이 가능합니다.
notion image
마지막으로 average-pooling은 BlurPool에서 사각형 필터를 사용한 것과 동일하지만, 더 강한 blur 필터를 사용하면 더 좋은 shift-equivariance를 얻을 수 있습니다.
notion image
Anti-aliasing에서는 사용한 blur 필터들의 종류는 다음과 같습니다. 아래 각 필터 이름 뒤의 벡터를 outer product한 후의 normalize한 matrix가 필터 값에 해당합니다.
  • Rectangle-2 [1,1]: average-pooling과 동일
  • Traiangle-3 [1,2,1]: bilinear downsampling과 동일
  • Binomial-5 [1,4,6,4,1]

Experiment

Metrics

다양한 태스크들에서 입력 영상의 translational shift에 따른 결과 차이를 확인하기 위해서 다음과 같은 metric을 정의합니다:
  • Internal feature distance는 shift되어 입력된 이미지의 feature map을 upsample한 것과, feature map을 upsample한 뒤 shift한 것 사이의 cosine distance를 나타냅니다.
notion image
  • 동일한 이미지를 shift하여 입력했을 때, classification 결과가 동일한지를 판별하는 지표로 다음의 classification consistency를 사용했습니다.
    • Image translation task에서 입력 영상의 horizontal shift에 대해 생성된 이미지 또한 동일한 shift를 갖는지 여부를 판별하는 지표로 다음과 같은 generation shift를 사용하였습니다.
    notion image
     

    Internal Shift-Equivariance

    다음 그림은 CIFAR10 + VGG13-bn에서 shift 전후 이미지가 feature extractor를 통과하면서 각 레이어에서의 internal feature distance를 시각화한 것입니다. Maxpooling을 사용한 baseline과 Max + BlurPool(Bin-5 filter)을 사용한 anti-aliased 결과를 비교하였습니다. 파란 색은 차이가 없는 상태이며, 붉은 색일수로 internal feature distance가 멀게 나타납니다. 특히 maxpool layer의 효과를 잘 확인하기 위해서 max와 pool을 분리하여 max만 취한 후의 결과도 확인하였습니다.
    첫번째 maxpool의 pool 직전 layer인 max1 layer의 결과까지는 완전히 shift-invariant 합니다. 하지만 첫번째 pooling 이후로 점점 internal feature distance가 커지기 시작하며, periodic-N shift-equivariance만이 보존되는 상태로 전파됩니다.
    Baseline결과인 위의 그림과 anti-aliased 결과인 아래 그림을 비교해보면, 아래 그림에서는 downsampling후의 distance 차이가 훨씬 덜한 것을 확인할 수 있습니다. 최종 softmax 값의 차이 또한 baseline에 비해 훨씬 작아서 더 안정적인 분류 결과를 주는 것으로 해석할 수 있습니다.
    notion image
     

    Large-Scale ImageNet Classification

    다양한 basline들을 이용한 ImageNet에서의 실험 결과입니다. 각 baseline에서 2*2 blur filter를 적용한 결과는 긴 직사각형, 3*3는 삼각형, 5*5는 오각형으로 나타냈습니다. x축 결과는 분류 정확도이며, y축 결과가 translational shift에 따른 classification consistency입니다. 모든 baseline에서 일관되게 BlurPool을 적용할 경우 consistency가 상당히 높아졌으며, 특히 R50에서 layer를 두배로 깊게 한 R101 baseline보다, 2*2 blur kernel을 적용한 BlurPool 모델의 consistency가 더 좋은 것으로 나타났습니다. R50 기준 각 필터별로 +0.8%, +1.7%, +2.1%의 consistency 향상이 있었습니다. 또한 흥미롭게도, BlurPool에서는 consistency뿐 아니라 분류 정확도도 향상(R50 기준 +0.7~+0.9%)되는 것을 확인할 수 있었습니다.
    notion image
     

    Conditional Image Generation (Label→Facades)

    GAN을 활용한 image generation task에도 BlurPool을 적용해 보았습니다. 앞서 실험한 결과를 생각해보면 discriminator에 anti-aliasing이 필요하다는 것은 자명합니다. 여기에 더해 generator에서 BlurPool의 효용성을 실험해 보았는데, 특히 downsample과 upsample을 각각 8번씩 거치는 U-Net 구조의 generator에서 downsample과 upsample 모두에 BlurPool을 적용해 보았습니다.
    아래 그림은 BlurPool 적용 전후의 generation 결과를 보여줍니다. Input 이미지를 보면 거의 동일하게 생긴 창문이 반복되어 나타나는 패턴인데, baseline에서는 위치에 따라 샷시 모양이 달라지기도 하고 창문의 위치가 변하기도 합니다. 반면 BlurPool 모델에서는 위치에 관계없이 동일한 패턴의 창문이 생성되며, 생성된 이미지의 위치 shift도 거의 없습니다.
    notion image
    생성된 이미지의 generation stability를 확인해보면, BlurPool이 적용된 경우, 특히 필터가 더 강하게 적용된 경우에 더 높은 값을 갖는 것을 확인할 수 있습니다. 다만 low pass filter를 적용함으로써 high-frequency 부분을 표현하는 능력이 경감되어, 생성된 이미지의 TV norm이 낮아지는 점은 단점이라고 볼 수 있겠습니다.
    notion image
    정성적으로도, 생성된 이미지의 퀄리티는 Tri-3 필터까지 유지된 뒤, 더 강한 필터들에서는 오히려 저하되는 것을 확인할 수 있었습니다. 이렇게 high-frequency 표현력이 필요한 태스크들에서는 trade-off를 잘 고려하여 적당한 필터의 크기를 찾는 것이 중요할 것 같습니다.
    notion image
     
    Share article