Paper/Generation

ToonCrafter: Generative Cartoon Interpolation

침닦는수건 2024. 6. 5. 19:35
반응형

내 맘대로 Introduction

 

frame interpolation을 diffusion model로 푼 논문. 결국 이미지 생성이기 때문에 Stable diffusion tuning 영역을 크게 벗어나지 않은 논문이긴 한데 도메인을 굉장히 잘 잡았다. 만화 도메인이기 때문에 결과 사진이 사람들의 이목을 끄는데 충분했고, 실제 만화를 그리는 만화가들이 매 프레임을 그려내는 것은 힘들어 하고 있다는 문제점을 쉽게 연상할 수 있기 때문에 이 연구가 타당하다는 것을 암묵적으로 알게 만들었다. 

 

핵심 아이디어는 tuning 과정에서 다른 논문들과 달리 SD decoder까지 튜닝 영역에 넣었다는 것이다. 이유는 latent image로 encoding하면서 발생하는 lossy compression 을 완화하고자 했다. SD encoder의 feature를 skipp connection으로 이어받아 decoding할 수 있도록 했다. 

 

메모

구조는 특이점이 하나도 없음. control net이 붙고 IP adapter 같은 Image Context Projector가 붙었을 뿐이다.

ICP의 경우 아래 base model로 선정한 DynamiCrafter가 원래 갖고 있던 것.
base model을 대량의 카툰 비디오를 먹은 DynamiCraft 모델을 사용함. 

1) DynamiCraft의 temporal motion prior를 해치치 않는 선에서 소규모 데이터로 fine tuning하는 방법

2) SD decoder까지 튜닝하는 방법

3) Sketch image를 controlnet으로 !


만화마다 그림체가 너무 다르기 때문에 도메인 갭이 엄청나게 큰 도메인이다. 따라서 튜닝용 데이터도 도메인을 다 함축할 정도는 돼야 해서 추가 데이터셋도 같이 만듦.


DynamiCraft가 워낙 큰 데이터를 먹은 base model이다 보니 추가 데이터셋을 충분히 모았다 한들 base model용 데이터에 비하면 턱없이 부족함. 따라서 학습 방법에서도 이러한 데이터 불균형을 반영해서 학습을 해야 함.


그 방법은 DynamiCraft를 구성하는 모듈 중 가장 대규모 데이터 영향을 크게 받는 모듈을 찾아, 해당 모듈은 freeze하고 나머지만 튜닝하는 방법

-> temporal layer 들은 모션에 대한 정보를 대규모 데이터로부터 배운 모듈이기 때문에 안 건드는게 좋다는 걸 발견함.
-> 나머지 layer들만 튜닝함.

이번엔 Latent 해상도로 인한 detail 손실 문제를 짚음.

만화처럼 경계도 뚜렷하고 detail이 많은 그림들은 smoothing된 결과로 decoding되면 시각적으로 불완전해보임.

-> VAE Decoder가 1/8 압축된 latent를 갖고도 high frequency detail들을 복원해낼 수 있도록 추가 정보를 주입

- VAE Encoder(freeze)에서 뽑은 level 별 feature를 skip connection으로 주입해주는 방법!



단 low frequency 정보를 갖고 있는 영역, 즉 많이 압축된 영역은 선별력을 부여하기 위해 cross attention으로 skip connection해줬고 

high frequency 영역은 그대로 가져왔다. 

마지막으로 interpolated frame이 그냥 나오는 것도 좋지만, 원하는 대로 컨트롤이 가능하면 더 좋다.

-> 실제로 만화가들의 사용성이 증가할 수 있는 부분. 

따라서 sketch 이미지를 condition으로 사용하는 controlnet을 붙여주었다. 

interpolation하는 모든 frame에 각각 다 cross attention이 걸리도록 했으며

1) sketch가 있으면 sketch image가 통과한 controlnet을.

2) sketch가 없으면 empty image가 통과한 controlnet을 cross attention 걸어준다.

꼭 모든 frame sketch가 있어야 하는 것 아님. 
controlnet을 SD V2.1이용해서 만들었다.

반응형