[Basic Generative Model] Zero-Shot Application

이한결·2024년 12월 10일
0

CS492(D)

목록 보기
7/14

출처[LECTURE08]
강의 영상 및 자료:
https://mhsung.github.io/kaist-cs492d-fall-2024/
해당 강의를 기반으로 추가적인 설명을 정리했습니다.

Zero-shot Application

이전 강의에서 살표본 Controlnet이나 LoRA 같은 경우 적은 데이터로 학습을 할 수 있는 Fine-Tuning 방식이긴 하지만, 학습을 완전히 하지 않는 Zero-Shot의 경우는 아닙니다. 이번 강의에서는 Zero-Shot에 대해서 살펴보려고 합니다.

Zero-shot은 위에 보이는 것처럼, 이미지를 편집하거나 inpaint(마스크를 입력으로 주고, 해당 부분을 편집) 분야에서 주로 사용됩니다.

SDEdit

처음 살펴볼 모델은 SDEdit입니다. 해당 모델은 입력값으로 사용자가 간단한 스케치나 낙서를 넣으면, 입력 이미지를 기반으로 이미지를 생성하는 과정입니다.

처음에 약간의 forward process를 거친 후, 해당 값을 기반으로 reverse process를 진행해서 최종적인 Output을 얻게 됩니다.

초반에 진행하는 forward process를 많이 진행할수록 최종 결과는 더 현실적으로 잘 나오지만, 입력값(스케치, 낙서)로부터는 조금 다른 결과가 다른 결과가 나옵니다. 당연히 그럴 것 같은게, forward process를 많이 진행할수록 가우시안 노이즈로 변하고, 가우시안 노이즈로 변할수록 일반적인 diffusion 모델과의 차이가 별로 없게 되기 때문입니다.

RePaint

pretrained된 diffusion 모델을 이용해서 마스크 부분에 적절한 이미지를 생성하는 inpaint 관련 논문입니다.

위의 그림에서 보이는 것처럼 매 iteration마다 Foreground(마스크로 지정한 부분) 이미지에 대해서는 denoise과정을, Background(나머지 부분) 이미지에 대해서는 noise과정을 진행합니다.

우리는 Foreground 부분에 대해서만 복원이 필요하기 때문에, 해당 부분에 대해서는 denoise과정을, 나머지 부분은 그대로 둬야하기 때문에 노이즈를 추가해 고정된 상태를 유지합니다. 서로다른 noise&denoise 과정을 진행하기 때문에 배경은 고정된채로 마스크 부분만의 변형이 가능하게됩니다.

그러면 어떻게 2개의 이미지가 스무스하게 이어질 수 있을까? 사실 교수님께서 말씀하시기로는 스무스하게 이어지지 않은 결과가 많이 일어날 수 있다고 합니다. 실제로 코드를 돌려봤을 때 잘된 경우도 있지만, 인위적으로 연결되는 경우가 발생한다고 합니다.

profile
열정으로 가득할 페이지

0개의 댓글

관련 채용 정보