반응형
내 맘대로 Introduction
이 논문은 image to reflectance를 풀고자 한 논문이다. UV domain의 결과값을 내뱉는 기타 논문들과 달리 입력 이미지의 pixel마다 어떤 reflectance property를 갖고 있는지 추정한다. 위 그림의 swapping까지가 논문의 결과물이고 이후 mesh로 만드는 과정은 Deep3D와 같은 image to mesh lifting 알고리즘을 붙여야 한다.
핵심 아이디어는 light 데이터가 스튜디오에서 찍을 수 밖에 없어서 부족하니, 일반 이미지에 녹아있는 prior를 가져오겠다는 컨셉이다. 그래서 입력을 받는 encoder가 multi-modal encoder여서 normal 이미지도 받고 diffuse 이미지도 받고 다 받는다.
그리고 한정된 데이터로 in-the-wild를 최대한 커버하기 위해 VQGAN구조를 차용해서 codebook을 구축하는 것을 목표로 한다. continuous latent space를 다루는 것은 데이터가 많이 필요한 일이니, codebook만 만들고 이를 활용해서 자유도를 낮추는 방식이다.
학습 단계도 세분화해서 학습 데이터를 최대한 활용했다는 점이 눈에 띄는 논문.
메모
|
그림이 조금 복잡한데 자세히 보면 입력이 제각각인 사람 + 제각각 format을 갖고 있는 것을 볼 수 있다. 이게 통째로 한번에들어가는게 아니라 개별적으로 encoder를 각각 통과한다. -> multi modal input encoder인 셈. encoder를 통과하면 code book에 매칭된다. (이 때 code book을 property 별로 5개 만들어두고 매칭) 그다음 texture, diffuse, specular, roughness, normal 총 5개의 codebook과 매칭한 결과를 다 fusion해서 최종 decoder에 넣어주고 원본 입력으로 복원하는 과정으로 학습한다. -> 이 과정에서 RGB 이미지도 나머지 4개의 코드북과 비교하고, 다른 modality 입력도 나머지 4개의 코드북과 비교하게 되는데, 정보 교환이 일어나길 기대하는 것 같다. |
핵심 구조는 VQGAN (discriminator가 따라붙어서 그냥 VQVAE 대비 복원 능력을 끌어 올렸다.) |
딱 봐도 한번에 학습하는건 어려워보인다. 안정성 측면에서. 그래서 단계 별로 학습함. -> 처음은 5개의 codebook을 구성하는게 관건 -> 입력이 들어왔을 때 5개의 codebook과 각각 nearest matching한다. -> VQ GAN의 5배 버전인 셈. |
그리고 loss는 VQGAN과 동일함. |
|
그 다음 encoder-decoder freeze 한 뒤, 1) code book만 한 번 더 업데이트 2) fusion model 추가해서 5개의 codebook을 aggregation! -> 이 때 swin transformer 구조를 썼다고 함. |
|
stage 1,2 가 끝나면 사실 상 입력 이미지에 대해서 5개 property를 추출할 네트워크는 준비된 셈이다. 이 때 그대로 inference용 이미지를 통과시켜도 되겠지만 기존 제한된 이미지로 학습한 encoder-decoder인 만큼 adaptation 개념의 모듈이 하나 추가된다. 입력 이미지를 encoder에 통과시켜 code를 뽑아내는건 기본으로 하고, 별개로 arcface (face recognition feature)를 뽑아낸 다음 decoder에도 입력 이미지에 대한 정보를 전달해줬다. Style 집어넣을 때 쓰던 AdaIn 으로 decoder에 넣어준다. (decoder는 Generator이기 때문에 GAN 구조에서 쓰던 개념을 그대로 쓸 수 있음) encoder-decoder는 고정한 채 swapper만 학습. |
loss는 앞선 수식과 거의 동일한데, encoder-decoder가 freeze되어있기 때문에 swapper만 업데이트되면서 주어진 입력 이미지 정보를 decoder에 adaptation시키는 부분만 학습됨. |
이 부분은 좀 ?다. 이미지가 주어지면 arcface 뽑아두고, quantized feature를 이미지에서 뽑은 것이 아니라 미리 정해진 각도에서 만들어둔 template feature를 넣어줬다는 것 같은데 tempalte feature를 어떻게 만들었다는 건지... template feature도 결국 특정 ID에 영향을 받을텐데 ...잘 모르겠다. 그렇게 template feature + arcface + decoder로 만든 결과를 Deep3D 방식으로 mesh화 하면 최종 결과다. |
|
반응형