본문 바로가기

논문 리뷰/etc.

Generative Image Inpainting with Contextual Attention

Contextual attention으로 image inpainting 개선

 

[arXiv]

[Github]

 

Abstract

먼 위치에서 정보를 빌리거나 복사하는 데 있어서 convolution의 비효율성 때문에 inpainting 작업에서 종종 왜곡된 구조나 흐릿한 질감이 생성된다. 본 논문에서는 주변 feature를 명시적으로 참조할 수 있는 생성 모델 기반 접근 방식을 제안한다.

 

 

Introduction

CNN 기반 방법은 boundary artifact, distorted structure, blurry texture를 생성하는 경우가 많음. 이는 먼 거리의 픽셀 간의 모델링을 하는 데에 있어서 CNN의 비효율성에 기인함.

 

일단 재구성 손실로 학습된 CNN으로 처리한 뒤 contextual attention을 사용하는 방법으로 해결함.

Contextual attention의 핵심 아이디어는 알려진 패치의 feature를 필터로 사용하는 것.

 

 

 

Improved Generative Inpainting Network

Coarse-to-fine network architecture

모델 구조는 이전 연구와 유사하지만 재구성 손실로 학습되는 1단계 네트워크와 재구성+적대적 손실로 학습되는 2단계 네트워크로 분리하였다.

효율성을 위해 가벼운 네트워크로 구성되어 이전 연구보다 피라미터는 더 적다고 한다.

 

Global and local Wasserstein GANs

DCGAN 대신에 WGAN-GP 사용.

요즘엔 학습이 힘든 GAN은 안 쓰는 추세이므로 설명 생략. 궁금하면 (GAN 모델의 발전 과정)

 

Spatially discounted reconstruction loss

직관적으로 비어있는 마스크의 경계 근처 픽셀은 중심 픽셀보다 모호성이 훨씬 적다. 

따라서 가중치 마스크를 활용하여 discounted reconstruction loss 도입.

 

 

 

Image Inpainting with Contextual Attention

Contextual Attention

Contextual attention layer는 누락된 패치를 생성하기 위해 알려진 background patch에서 feature를 빌리거나 복사할 위치를 학습.

 

Match and attend

먼저 배경(background)에서 패치(3x3)를 추출하고 누락된 패치(foreground)와의 코사인 유사도, softmax를 이용하여 각 픽셀에 대한 attention score 얻음.

추출된 패치들과 가중치를 통해 foreground 재구성. (설명이 구체적으로 안 되어있는데 아마 가중합을 구하는 듯?)

 

Attention propagation

현재 패치와 바로 옆 픽셀을 중심으로 하는 패치는 비슷한 값을 갖고 있을 확률이 높다.

따라서 일관성을 위해 일정한 커널 크기만큼 좌-우, 위-아래 전파 사용. (이것도 설명이 없는데 그냥 채널에 갖다 붙일 듯?)

 

Memory efficiency

계산 비용을 줄이기 위한 방법

  • Stride를 사용하여 패치 수 줄이기
  • 저해상도에서 계산 후 attention map 확대

Unified Inpainting Network

2단계 네트워크에서 병렬 인코더 사용.

콘텐츠 환각(생성)을 위한 인코더와 contextual attention을 위한 인코더를 따로 둠.

(color coding 설명 : e.g. 분홍색이면 해당 픽셀이 왼쪽 하단의 패치에 높은 attention을 두고 있다는 뜻.)