Processing math: 100%

인공지능/기타

Deep Image Prior

NickTop 2024. 12. 14. 21:50

CNN의 구조적인 특성에 따라, 이미지 1장으로(학습없이) 노이즈 제거, 해상도 복원, 이미지 인페인팅이 가능하다

 

What is prior

What is prior

사람이 왼쪽 이미지에서 오른쪽 이미지로 복원을 한다고 가정해보자

사람은 귀가 어디에 있는지, 코가 어떻게 생겼는지 등의 정보를 이용해 오른쪽 이미지로 복원한다

이러한 정보를 prior라고 한다

explicit prior and Deep image prior

일반적으로 딥러닝에서 super resolution을 할때 여러 이미지로부터 prior를 학습해 해상도 복원을한다

본 논문에서는 Explicit prior는 필요없으며, CNN 구조 자체가 prior라고 한다

즉, 학습 자체가 필요없다. 네트워크 구조와 손상된 이미지만으로 원 이미지 복원이 가능하다

 

Method

x=argmaxxp(xˆx)=argmaxxp(ˆxx)p(x)=argminxlogp(ˆxx)logp(x)=argminxE(x;ˆx)+R(x)

x : 복원된 이미지

ˆx : 손상된 이미지

x : ground truth

 

E가 최소화되게 학습해야한다

explicit regularizer인 R(x)를 날려주고 neural network에 의한 implicit prior으로만 학습한다

(R(x)날리는건 수학적으로 도출한 결과는 아니고 아니고 그래도 되지 않을까?라는 생각이라고 한다)

θ=argminθE(fθ(z);x0),x=fθ(z).

 

랜덤 이미지 z에 대해 네트워크의 파라미터 θ를 학습시켜준다 (z는 그대로)

적당히 좋은 이미지(fθ(z))가 될때까지 네트워크를 반복 학습한다

 

E함수는 task마다 다르다

Why deep image prior works

Prior가 있으면 오른쪽 그림과 같이 ground truth 가까운 지점을 지나친다

여기서 더 반복하면 ˆx와 가까워진다

 

Denoising

E(x;x0)=xx02.

Denoising task

 

2400 iteration까지는 노이즈가 줄어들지만 50K가 되고 나서는 corrupted image와 비슷해졌다

 

전반적으로 iteration은 수학적으로 구하는건 아니고 임의로 정했다 (코드에서)

 

Super Resolution

E(x;x0)=d(x)x02.

 

d는 downsampling 함수이다

논문 코드에서는 lanczos2를 썼다

 

Inpainting

E(x;x0)=(xx0)m2

이미지의 비어있는 영역을 복원한다

손상된 영역은 마스킹하여 loss에 포함시키지 않는다

m은 사람이 직접 정의해야한다

Inpainting task

 

 

 

 

 

https://arxiv.org/pdf/1711.10925

https://www.youtube.com/watch?v=-g1NsTuP1_I&t=436s