Image inpainting(6)

Ulost·2022년 5월 20일
0

"Learning Pyramid-Context Encoder Network for High-Quality Image Inpainting" 논문을 리뷰해보는 시간을 갖겠습니다.

Abstract & Introduction

High quality image inpainting은 missing area를 plausible(그럴듯한, 원본 이미지와 최대한 비슷하다는 의미의) content로 채워넣어야함.

이는 visual coherence, semantic coherence 모두 만족시킬 수 있어야 함.

현재 존재하는 inpainting technique들은 두 종류로 나눌 수 있음.

  1. 단순하게 image patches를 복사해서 집어넣는 경우 semantic coherence content 생성에 있어서 실패할 가능성이 높음

  2. 앞 선 문제를 해결하기 위해 semantic context를 encode해서 얻은 latent feature를 이용해 patch를 generate할 경우 visually realistic한 결과물을 얻기 어려움. --> encoding 과정(stacked convolution, pooling)에서 image의 detail이 smoothing 되기 때문.

    논문에서 제시하는 Pyramid-context Encoder Network(PEN-Net)은 U-Net 구조 기반의 deep generative model임.

주목할만한 특징으로는

  1. U-Net을 기반으로 함으로써 pixel-level context, high-level semantic feature를 모두 사용할 수 있음.

  2. image로부터 latent feature를 얻게 되면 이를 pyramid 구조 통해서 high-level 부터 low-level까지 단계적으로 채워 넣어감.

    또한 ATN(Attentaion transfer network)를 이용해 missing region의 안쪽과 바깥쪽 사이 region affinity를 학습 후 transfer.

  3. multi-scale decoder를 통해 ATN으로부터 생성된 feature를 이용, decode.

PEN-Net은 pyramid-L1 loss와 adversarial loss를 이용.

이를 통해 visual, semantic coherence 두 부분 모두 만족시킬 수 있음.

Pyramid-context Encoder Network

사진은 PEN-Net의 구조

PEN-Net은 크게 세 가지 부분으로 나눌 수 있음.

  1. Pyramid context encoder : U-Net 구조로 생성된 compact latent feature에 semantics of context가 저장되어 있으므로, compact latent feature를 이용해 missing region을 채워넣을 수 있음.

    채워넣을 때, Attention Transfer Network(ATN)을 여러번 이용하는데, ATN은 high-level semantic feature로부터 missing region의 inside/outside 사이의 region affinity를 학습하고 다른 feature map으로 transfer함.

    multi-scale information은 ATN에서 다양한 수준의 convolution을 통해 수집되어 후에 missing region을 채워넣은 것을 다듬는 작업에 사용됨.

  2. multi-scale decoder : ATN으로부터 재생성된 Feature map을 skip connection을 통해 받고, latent feature 이렇게 총 두 가지를 받아서 decode에 이용.

    이때 loss로 adversarial loss와 pyramid loss(multi-scale loss)를 이용해 prediction(inpainting results)를 다듬음.

  3. discriminator : adversarial loss를 사용하기 위함.

Pyramid-context encoder

Pyramid-context encoder

encoding의 효율성을 향상시키기 위해, pyramid context encoder는 decoding 과정 이전에 missing region을 채워넣음.

compact latent feature가 학습되면, missing region을 high-level semantic feature부터 차근차근 low-level feature까지 ATN 사용을 반복하며 채워넣는 형식.

Pyramid-context encoder가 LL개의 layer로 이루어져있으면, 가장 깊은 feature map부터 얕은 feature map을 ϕL\phi^{L}, ϕL1\phi^{L-1}, ... , ϕ1\phi^{1}로 정의할 수 있음.

그리고 이 feature map과 ATN을 이용해 재생성한 feature는 다음과 같이 정의 가능.

ψL1\psi^{L-1} = f(ϕL1,ϕL)f(\phi^{L-1}, \phi^{L})
ψL2\psi^{L-2} = f(ϕL2,ψL1)f(\phi^{L-2}, \psi^{L-1})
.
.
.
ψ1\psi^{1} = f(ϕ1,ψ2)f(\phi^{1}, \psi^{2}) = f(ϕ1,f(ϕ2,...f(ϕL1,ϕL)))f(\phi^{1}, f(\phi^{2}, ...f(\phi^{L-1}, \phi^{L})))

여기서 ATN은 ff로 나타냈음.

이런 cross-layer attention transfer(ATN)과 pyramid filling mechanism을 통해 visual and semantic coherence를 모두 해결할 수 있음.

Attention Transfer Network(ATN)

attention은 missing region의 inside/outside patch(3 x 3 size)간의 region affinity를 통해 얻을 수 있음.

이런 연산을 통해 missing region의 outside에 존재하는 relevant feature가 inside로 전해질 수 있음.

ATN은 ψl\psi^l로부터 region affinity를 얻음.

ψl\psi^l로부터 patches를 추출, missing region의 inside와 outside간 cosine 유사도를 측정.

si,jls^l_{i,j} = (pilpil2p^l_i\over{||p^l_i||_2},pjlpjl2p^l_j\over{||p^l_j||_2})

pilp^l_iψl\psi^l의 outside mask 중 i번째 patch, pjlp^l_jψl\psi^l의 mask의 inside 중 j번째 patch

그 후, 위에서 구한 cosine 유사도에 softmax를 적용해 각 patch들에 대한 attention score를 계산

αj,i\alpha_{j, i} = exp(si,jl)i=1Nexp(si,jl)exp(s^l_{i,j})\over\sum_{i=1}^N exp(s^l_{i,j})

이렇게 얻은 attention score를 통해 missing region을 다음 식을 이용해 missing region을 채워넣을 수 있음.

pjl1p^{l-1}_j = i=1N(αj,ilpil1)\sum_{i=1}^N (\alpha^l_{j,i} * p^{l-1}_i)

이때 pil1p^{l-1}_iϕl1\phi^{l-1}에서 추출한 outside masked regions의 i번째 patch, $p^{l-1}_j는 missing region을 채워넣을 j번째 patch.

모든 patch들에 대해 연산, 채워넣기가 완료되면 ψl1\psi^{l-1}을 얻을 수 있음.

Multi-scale decoder

Multi-scale decoder

multi-scale decoder는 ATN을 이용해 재생성한 feature와 latent feature map 두 가지를 input으로 받아 decode 연산을 수행하여 multi-scale feature map을 생성함.

깊은 feature map부터 차례대로
φL1\varphi^{L-1} = g(ψL1g(ϕL))g(\psi^{L-1} \oplus g(\phi^L))
φL2\varphi^{L-2} = g(ψL2φL1)g(\psi^{L-2} \oplus \varphi^{L-1})
.
.
.
φ1\varphi^{1} = g(ψ1φ2)g(\psi^{1} \oplus \varphi^{2})

여기서 gg는 transposed convolution 연산, \oplus는 feature concatenation, ψl\psi^l은 encoder의 l번째 layer에 있는 ATN으로 부터 재생성된 feature 의미.

ATN으로부터 재생성된 feature는 low-level information이 풍부해서 decoder가 visually realistic한 결과를 내는 것에 도움이 됨.

또 latent feature의 경우 missing region을 synthesize하는 것에 도움이 됨.

이 두 가지 이점을 decoder가 활용해 visual, semantic coherence를 충족시킬 수 있음.

Pyramid L1 losses

decoder를 통해 생성한 결과와 groud truth(물론 생성한 결과에 맞춰 여러 size로 scaling한 이미지를 말함)의 L1 distance를 구함.

Lpd=l=1L1xlh(φl)1L_{pd} = \sum_{l=1}^{L-1}||x^l - h(\varphi^l)||_1

후술할 Adversarial loss 까지 합친게 전체 objective function

Adversarial training loss

xx = ground truth
zz = prediction(inpainting results)

LGL_G = Ezpz[D(z)]-E_{z \sim p_z}[D(z)]
LDL_D = Expdata[max(0,1D(x))]+Ez pz[max(0,1+D(z)]E_{x \sim p_data}[max(0, 1 - D(x))] + E_{z~p_z}[max(0, 1+D(z)]

로 Adversarial Loss를 정의할 수 있음.

Experiments & Conclusion


위 사진은 places2 dataset에 대해 inpainting 수행 결과에 대한 수치적 평가를 비교한 것.

제안한 모델 PEN-net은 L1 loss를 제외한 MS-SSIM, IS, FID에서 가장 좋은 결과를 보여줬음.

위 사진은 위에서부터 Facade dataset, places2 dataset, celeba-hq dataset에 대해 inpainting 한 결과에 대해 질적인 비교를 나타냄.

결과적으로 pyramid L1 loss와 ATN(Attention transfer network)를 사용한 PEN-net이 가장 좋은 결과를 보여줬음.

0개의 댓글