[22’ CVPR] RePaint: Inpainting using Denoising Diffusion Probabilistic Models
카테고리: Generation
태그: Diffusion
0. Abstract
- Challenge
- 현재 많은 inpainting model은 특정 mask distribution만을 대상으로 학습되어 있어 다른 mask type에 대한 일반화가 제한된다.
- 또한, 많은 모델은 pixel-wise & perceptual loss로 학습하여, semantic consistency를 보장하는 대신 단순히 mask 주변 texture를 이어붙이기만 하는 경향이 있다.
- Solution
- RePaint는 pretrained unconditional DDPM을 generative prior로 사용하였으며, extreme mask에도 적용 가능한 모델이다.
- 이 방법은 original DDPM에 어떠한 변형도 가하지 않아 pretrained DDPM의 모든 장점을 그대로 이어받을 수 있다.
1. Method
1.1. Conditioning on the known Region
Inpainting을 diffusion으로 어떻게 접근할 것인지 이해해보자. 먼저 ground truth image를 $x$라 하고, mask를 $m$이라 하자. 이때 unknown pixels를 $m \odot x$으로, known pixels를 $(1-m) \odot x$로 표현할 수 있다.
Diffusion model을 사용하여 unknown pixels를 예측하기 위하여 아래 그림과 같은 방법을 사용한다.
즉, known pixels $x^{\text{known}}$를 conditioning으로 사용하여 unknown pixels $x^{\text{unknown}}$를 예측하는 과정이라 할 수 있다. 이를 diffusion 방식으로 표현하면, $t-1$ step에서 known pixels은 다음과 같이 forward process를 통해, unknown pixels은 reverse process를 통해 얻어 합쳐 $x_{t-1}$을 예측한다.
\[\begin{aligned} x_ {t-1} ^ {\text{known}} &\sim \mathcal{N} (\sqrt{\bar{\alpha}_ t} x_0, (1 - \bar{\alpha}_ t) \mathbf{I}) \\ x_ {t-1} ^ {\text{unknown}} &\sim \mathcal{N} (\mu_ \theta (x_t, t), \Sigma_ \theta (x_t, t)) \\ x_ {t-1} &= m \odot x_ {t-1} ^ {\text{known}} + (1 - m) \odot x_ {t-1} ^ {\text{unknown}} \\ \end{aligned}\]개인적으로 잠시 $x_ {t-1} ^ {\text{known}}$을 사용하는 것은 known pixels의 정보를 괜히 noisy하게 사용하여 성능이 하락하지 않을까 생각했다. 그러나 그렇게 되면 original DDPM을 사용하기 어려워지기 때문에 이러한 방법을 사용한 것 같다.
1.2. Resampling
위 방법을 사용한 결과 known region과 masked region의 content type은 동일했지만, semantic information은 달랐다고 한다. 예를 들어 아래 그림에서 $n=1$인 경우를 보면 고양이의 털은 잘 재현되었지만, 고양이의 얼굴이라는 의미론적 정보는 잘 전달되지 않았다.
저자들이 이유가 무엇인지 곰곰히 생각해본 결과 generated part를 고려하지 않고 known pixels의 sampling이 진행되었기 때문이라는 결론을 얻었다. 즉 전혀 $x_t$를 고려하지 않고, original image $x$로부터 $x_ {t-1} ^ {\text{known}}$을 sampling하였기 때문에 문제라는 것이다. 따라서 $x_ {t-1} ^ {\text{known}}$과 $x_ {t-1} ^ {\text{unknown}}$를 서로 harmonize할 수 있는 방법론이 필요하다.
저자들은 어떻게 보면 원시적인 방법으로 이를 해결했다. $x_{t-1}$를 얻은 뒤 다시 $x_ t \sim \mathcal{N} (\sqrt{1 - \beta _ t} x_ {t-1}, \beta _ t \mathbf{I})$를 통해 $x_t$를 샘플링하여 다시 과정을 반복하는 것이다. 단순한 방법이지만, 이러한 resampling을 통해 $x_ {t-1} ^ {\text{known}}$와 $x_ {t-1} ^ {\text{unknown}}$를 harmonize할 수 있다는 것은 굉장히 직관적이다. 알고리즘을 보면 $U$번의 resampling을 진행하는 것을 알 수 있다.
그러나 이를 각 step에 대해서만 반복하는 것은 전체 denoising process의 semantic information을 모두 harmonize하기 어렵다. 따라서 저자들은 jump length $j$를 도입한다. 지금까지는 $x_{t-1}$에서 $x_t$로 돌아가서 resampling을 진행했다면, 이제는 $x_{t-j}$에서 $x_t$로 돌아가서 resampling을 진행한다. 이를 통해 더 넓은 범위에서 harmonization이 가능하다. 아래는 resampling $r=10$, jump length $j=10$인 경우 denoising step을 시각화하여 보여준다.
2. Experiments
2.1. Comparision with SOTA
SOTA와의 비교를 위하여 LPIPS와 human vote를 사용하였다. LPIPS는 AlexNet의 feature space에서의 distance metric이며, 두 이미지 사이의 perceptual similarity를 측정한다. 그런데 아래 결과를 보면 LPIPS와 human vote 사이에 괴리가 있다. Vote에서 %는 모두 RePaint를 100%로 두고 계산한 결과이다. Human vote에서는 RePaint가 모든 방법보다 우수한데 LPIPS는 그렇지 않다. 저자들은 이것이 RePaint가 너무 다양하고 유연하게 이미지를 생성하기 때문에, ground truth와 semantic하게 다른 이미지를 생성할 수 있기 때문이라고 설명한다. 따라서 LPIPS는 부정확하다고 주장한다. 조금 찜찜한 면이 있지만 이러한 결과를 보면 RePaint가 다른 방법보다 우수하다는 것은 부정할 수 없다.
Pretrained ImageNet DDPM이 class-conditional generation sampling이 가능하여 이를 실험해보았더니 잘 되었다는 내용도 있다.
2.2. Ablation Study
Comparision to slowing down
단순히 diffusion step $T$를 늘리는 것과 resampling $r$을 늘리는 것을 비교해보았다. 동일한 정도의 computation이 증가하였을 때, resampling이 더 좋은 결과를 보였다. CDM(Cascaded Diffusion Model) 논문에서 resampling으로 sampling step을 늘렸을 때 성능이 개선되었던 것과 유사한 맥락일지도 모르겠다.
Jumps Length
여기서는 resampling $r$과 jump length $j$에 대한 ablation study를 진행했다. $j=1$일 때는 blurry image를 생성하는 측면이 있었고, $j=10$일 때 더 성능이 좋았다고 한다.
Comparison to alternative sampling strategy
SDEdit의 sampling strategy와 비교하여 RePaint가 더 좋은 결과를 보였다. SDEdit에서는 $t=T/2$부터 $t=0$까지의 과정을 계속 반복하여 데이터를 얻고, RePaint에서는 더 국소적인 과정을 반복하여 데이터를 얻는다는 것이 차이이다. 어떻게 보면 SDEdit이 아주 큰 $j=T/2$를 사용한 RePaint라고 볼 수도 있겠다.
2.3. Limitations
이러한 모델에도 여러 문제가 있다. 첫째는 샘플링 속도가 느리다는 점이다. 둘째는 extreme mask에 대해 데이터를 잘 생성하지만, ground truth와 semantic하게 다른 이미지를 생성할 수 있어 LPIPS와 같은 metric으로 이를 측정하기 어렵다는 것이다. 대신 FID를 사용할 수도 있지만, 이를 위해서는 1000개 이상의 이미지를 생성해야 하는데 이는 DDPM의 샘플링 속도로는 정말 오래 걸리기에 대부분의 연구기관에서도 불가능할 것이라고 한다. 그리고 training set bias가 있다. ImageNet은 많은 개(dog) 데이터를 가지고 있어, 뜬금없이 아래와 같이 개를 생성하는 경우가 있다는 것이다.
💡 Summary
- RePaint는 pretrained unconditional DDPM을 generative prior로 사용한 inpainting model이다.
- Resampling 방법을 통해 known pixels과 unknown pixels의 semantic information을 harmonize했다는 것이 가장 큰 contribution이다. 이는 diffusion step을 늘리거나, 다른 sampling strategy(SDEdit)를 사용하는 것보다 더 좋은 결과를 보였다.
- LPIPS metric은 창의적인 이미지 생성에 대해 부정확할 수 있다. 논문에서는 human vote 방식으로 대체하였다.
- Opinion: 논문에서는 extreme mask에 대해 좋은 샘플을 잘 생성한다고 하나 아직 부족해 보인다. 물론 예전 method들과 비교해 볼 땐 훨씬 나은 것 같긴 하지만…
댓글 남기기