Gaegul's devlog

[논문 리뷰] Free-Form Image Inpainting with Gated Convolution_ICCV 2019 본문

Artificial Intelligence/Research Paper 리뷰 📖

[논문 리뷰] Free-Form Image Inpainting with Gated Convolution_ICCV 2019

부지런깨꾹이 2021. 10. 31. 15:17
728x90
반응형

이번 논문 리뷰는 Image inpainting 논문 중에 Gated Convolution을 통해 마스크 부분을 제너레이팅 하는 대표적인inpainting 논문이다. Gated Convolution의 개념이 조금은 생소할 수 있지만, 본 논문의 key idea 이기에 한번 공부해보려한다. 

 

기존 Convolution 연산의 한계

공간적으로 공유된 convolution 필터가 모든 input pixel 또는 feature을 동일한 유효한 것으로 취급하기 때문에 이미지 구멍 채우기에 자연스럽게 적합하지 않다. 마스크 부분을 채우는 경우, 각 레이어에 대한 입력은 구멍 외부의 유효한 pixel / feature과 마스크된 영역의 유효하지 않은 픽셀로 구성된다.  convolution 연산은 모든 유효, 무효 및 혼합(예: 구멍 경계에 있는 필터) pixel / feature에 동일한 필터를 적용하므로 자유형 마스크에서 테스트할 때 색상 불일치, 흐릿함 및 엣지의 주변 구멍과 같은 시각적 아티팩트가 발생한다.

 

Partial Convolution 의 한계

이러한 한계를 해결하기 위해 최근에는 convolution이 마스킹되고 유효한 픽셀에서만 조건화하도록 정규화되는 partial convolution이 제안되었다. 이는 rule-based mask update 단계를 수행하여 다음 계층의 유효한 위치를 업데이트한다. 이다시 말해 partial convolution은 모든 입력 위치를 유효하지 않거나 유효한 것으로 분류하고 0 또는 1 마스크를 모든 레이어의 입력에 곱한다. 마스크는 학습할 수 없는 단일 feature gating 채널로 볼 수도 있다. 그러나 이 가정에는 몇 가지 한계가 있다. (뒤에서 자세히 이야기 할 예정)

기존의 partial convolution의 한계점은 뒤에서 더 자세히 설명하겠다.

그래서 본 논문에서는 free-form image inpainting을 위한 gated convolution을 제안한다. 그것은 각각의 channel과 spatial location을 위한 다이나믹한 feature gating mechanism을 배운다. Gated convolution은 구현이 쉽고 마스크가 임의의 모양을 가지고 있고 입력이 더 이상 마스크가 있는 RGB 채널이 아니라 sparse sketch 같은 조건부 입력이 있을 때 훨씬 더 나은 성능을 발휘한다. 네트워크 아키텍처의 경우 gated convolution을 쌓아서 encoder-decoder 네트워크를 형성한다. 또한 인페인팅 네트워크는 상황별 어텐션 모듈을 동일한 refine network(stage 2) 내에 통합하여 long-dependency를 더 잘 포착한다. 

다음 표는 PatchMatch(PM), Global & Local(GL), Context Attention(CA), Partial Convolution(PC) 그리고 본 논문의 방법(Ours)을 비교한 표이다.

4개의 측면에 기반한 Image Inpainting 비교 

 

[ Main Contribution ]

1. 모든 layer에 걸쳐 각 공간 위치에서 각 채널에 대한 동적 특징 선택 메커니즘을 학습하기 위해 gated convolution을 도입하여 자유형 마스크와 입력의 색상 일관성과 인페인팅 품질을 크게 개선한다.

2. Free-Form image inpainting을 위해 더 실용적인 patch-based GAN discriminator, SN-PatchGAN 을 제시한다.

3. inpainting model을 interactive한 것으로 확장한다. 그리고 더 user-desired inpainting 결과를 얻기 위한 guidance 로써 user-sketech 를 가능하게 한다.

4. 제안하는 inpainting system은 이전 벤치마크 데이터셋(Place2, Celeb)에서의 SOTA보다 higher quality를 달성했다.

 

[ Methodology ]

 

Partial Convolution 한계

Partial convolution은 불규칙 마스크의 인페인팅 품질을 개선하지만 여전히 문제가 남아 있다. 만약, 사용자가 마스크 내부에 희박한 스케치(?)를 제공하는 user-guided 이미지 인페인팅으로 확장하면 이러한 픽셀 위 Partial Convolution을 위해 "유효하지 않은" 픽셀은 계층별로 점진적으로 사라지고 rule-based mask는 딥 레이어에서 모두 하나가 된다. 그러나 구멍에서 픽셀을 합성하기 위해서는 현재 위치가 구멍의 내부인지 외부인지에 대한 정보가 필요할 수 있다. 하지만, 올원 마스크가 있는 partial convolution은 그러한 정보를 제공할 수 없다. 네트워크가 마스크를 자동으로 학습하도록 허용하면 입력 영상, 심지어 deep 레이어에서도 현재 위치가 마스킹 되는지 여부에 따라 마스크의 값이 달라질 수 있음을 보여 줄 것이다.

1) 모든 spatial location을 경험 기반으로 valid하거나 invalid한지 분류.

다음 레이어의 마스크는 이전 레이어의 필터 범위로 적용되는 픽셀 수에 관계 없이 설정된다. (예: 현재 마스크를 업데이트하기 위해 유효 픽셀 1개와 유효 픽셀 9개가 동일하게 처리됨). 이 부분은 잘 이해가 되지 않아 다른 블로그를 참고하였다.

밑의 예시를 보면, Mask가 1로 업데이트된 두 개의 feature를 보면 하나는 filter가 1개의 valid pixel만을 생성되고 또 다른 하나는 filter가 9개의 valid pixels를 cover하여 생성되었다고 할 때, 두 feature(pixel)에 해당하는 mask가 동일하게 업데이트된다는 점은 불균형 하다. 마스크가 업데이트되면서 마스크(invalid) 부분이 확 줄게 된다. (m'을 보면 0이 2개만 남음)

 

2) User guided image inpainting 불가

다시 말해서, 추가 user input과 호환되지 않는다.  우리는 사용자가 조건 채널로 마스크 내부에 희소 스케치를 선택적으로 제공할 수 있는 사용자 안내 이미지 인페인팅 시스템을 목표로 한다. 

3) layer를 점점 지날 때마다 invalid pixels(features)가 점점 줄어들고, 결국 모든 mask 값들은 1로 변환됨.

이러한 문제를 해결하기 위해 본 논문에 제시하는 gated convolution이 최적의 마스크를 자동으로 학습하도록 허용하면 네트워크가 깊은 층에서도 모든 공간 위치에 소프트 마스크 값을 할당한다는 것을 보여준다.

4) 각 layer의 모든 channels는 같은 mask를 공유한다.

그렇기 때문에 유연성이 제한되고, 학습할 수 없는 단일 채널 하드 게이트라고 볼 수 있다. 

 

 

Gated Convolution

그래서 gated convolution이 제안되었고 그것은 데이터로 부터 자동으로 마스크를 학습한다. 그것이 soft mask 이다. 아래의 수식은 gated convolution의 수식이다. 공간 위치 (y,x)의 gating을 구하기 위한 로짓과 feature를 구하기 위한 로짓을 각각 시그모이드와 activation function을 거쳐 내적곱(element-wise)를 하면 (y,x)의 output 값이 나오게 된다. 여기서 Wg 와 Wf 는 각각 다른 컨볼루션 필터이다.

(왼) partial convolution과 gated convolution의 비교 그림 (오) Gated Convolution Formulation

 

 

SN-PatchGAN

Free-Form mask를 위해 본 논문에서는 SN-PatchGAN 네트워크를 제안한다. CNN으로 이루어진 discriminator는 RGB Channels (Image), Mask Channels (Binary mask)와 Sketch Channels (guidance channel)을 입력으로 받아 3D-feature of shape를 출력한다. 아래 그림에서 보듯 6개의 strided convolutions (kernel size 5, stride 2)를 쌓아 Markovian patches의 feature statistics를 캡처한다.

그리고 GAN의 학습을 안정화하기 위해 최근에 제안된 spectral normalization을 채택했다. (spectral normalization은 SN-GAN에서 소개 된 default fast approximation 알고리즘이다. )

본 논문의 inpainting network 의 최종 loss는 pixel-wise L1 loss, SN-PatchGAN loss 를 사용했다.

 

Inpainting Network Architecture

전체적인 아키텍쳐는 다음과 같다. coarse network(stage 1)와 refinement network(stage 2)는 partial conv에서 사용한 Unet 대신에 간단한 Encoder Decoder 네트워크를 사용했다. 

본 논문에서 Unet의 skip-connection이 아닌 encoder-decoder network를 사용한 이유는 디테일한 칼라나 텍스쳐 정보를 propagate 못하는 Unet과 다르게 Hole 경계면의 경우 원활한 결과를 생성한다. 그래서 모든 vanila convolution을 gated convolution으로 대체했다.

 

그렇다면, 제너레이터 부분의 각 채널에서 어떻게 보일것인가가 가장 중요한 포인트이다. 다음 그림은 supplementary에 있는 figure이다. partial convolution은 각 layer를 지날 때 마다 바이너리 마스크가 업데이트 된다. 

 

 

[ Experiment ]

 본 논문에서는 두가지 실험을 진행하였는데, 하나는 Free-Form mask 생성 알고리즘을 만든 실험이고, 하나는 user sketch 실험이다. 

 

Free-Form Mask Generation

 

User-guided image inpainting

[ Result ]

다음은 Inpainting 결과이다. Inpainting은 Place 데이터셋과 Celeb-HQ 데이터셋 2가지로 실험하였다. GatedConv의 결과가 Partial Conv 결과보다 마스크 부분이 더 이질감 없이 제너레이팅 된것을 확인할 수 있다.

 

Ref : https://arxiv.org/pdf/1806.03589.pdf 

 

728x90
반응형
Comments