VISAPP이라는 국제 학회에 첫 논문을 냈다. 수업 팀플로 시작한건데, 학회 발표를 끝으로 드디어 이 긴 프로젝트를 마무리한다ㅎㅎ
운좋게 oral presentation을 받아서 학회 발표를 하게되었는데 정말 재밌는 경험이었다. 다들 관심없게 들을 줄 알았는데, 발표랑 qna 끝나고까지 따로 디엠으로 질문을 많이 해주셔서 신기했다. 이런저런 얘기를 하면서, 여러 아이디어와 인사이트를 얻을 수 있어서 좋았다.
이번에 썼던 논문은 Diffusion, Virtual try on 논문이다. 프로젝트 시작할때쯤 DDPM을 읽고 있었는데, 심지어 처음에는 GAN으로 하려고 했던 프로젝트인데, 이걸 논문으로 낼 수 있게 되어서 너무 뿌듯하다.
DDPM 부터 읽기 시작한 우리들은 virtual tryon이 보통 어떤 방법으로 학습을 하고 어떤 limitation이 있는지 실험이 끝나고 그제서야 부랴부랴 다른 virtual tryon 논문들을 읽으면서 깨닫게 되었다.
우리가 만들려는 모델을 학습시키기 위해서는 모델이 A라는 옷을 입고 있는 이미지, 같은 모델이 포즈를 바꿔 B옷을 입고 있는 이미지, 이렇게 paired 데이터셋이 필요했다. 데이터셋을 계속 찾아봤지만 public하게 나와있는 데이터셋이 없었고, 그래서 옷을 마스킹해버리자는 아이디어가 나왔다. 마스킹을 하면 모델이 옷이 마스킹된 상태에서 학습을 하니까 masking된 옷 -> masking되지 않은 옷으로 갈아입힐 수 있게 될거라고 생각을 했다.
정말 노벨한 방법을 찾았다고 생각을 했는데 사실 이 masking 방법은 모든 virtual tryon 논문에서 쓰고 있는 방법이었다. 그리고 우리가 ODPG 논문에서 언급한, 기존 virtual tryon 모델들의 한계점이기도 하다.
옷에 전체적으로 마스킹을 해버리면, 추가적인 모델이 필요할 뿐만 아니라 semantic information도 왜곡되어버린다. 그래서 Masking을 따로 안하고도, end to end로 모델 학습을 시켰다는게 우리의 핵심 contribution이다.
전반적인 파이프라인인데, 우리 모델은 masking 을 안하고, 완전 end to end로 포즈도 바꾸고 옷도 바꾼다. 조금 이상할 수 있을 부분은, 학습할때 Source 이미지의 옷이랑, target image 의 옷이랑 같다. 기존 모델들이 masking을 해준 이유는, targe 옷을 모델이 미리 못보게 하려고 마스킹을 해줬는데, 우리는 마스킹도 안하고 그냥 모델한테 정답을 다 줘버린 셈이다.
대신에, 우리가 제안한, Bias Augmented Query Attention Mechanism(주황색 블록)을 보면 알 수 있겠지만, source image를 쿼리에 bias로만 넘겨준다. 실제 key value 는 garment만 들어가는데, 이렇게 bias augmented query attention mechanism을 통해 컨디션을 넘겨주면 모델을 어디를 어떻게 바꿀지를 효과적으로 배울 수 있다.
정답을 미리 알려준다고 해서 정답을 모방하는게 아니고, 옷이 어느부분이고, 바꿔야하는 부분이 '옷'이다를 배울 수 있게 되는것이다.
그리고 다른 모델들은 보통 옷을 마스킹하고, 그 부분에 warping 하는 방식으로 입혀야하는 옷을 끼워맞추게 된다. 이렇게 했을떄 문제점은, 뒤에 comparison에서도 나오는데, 후드를 입고 있는 사람을 반팔로 입혀야하는 경우를 생각해보자. 그러면 후드를 회색으로 다 masking 하고 반팔을 그 masking 된 부분에 끼워 맞추게 된다. 이렇게 하면 반팔을 입혀도 뒤에 모자부분이 볼록 튀어나와 보일 수 밖에 없다.
그치만 마네킹에 옷을 입히는 과정을 생각해보면, 마네킹의 뼈대에 옷을 입혀주게 된다. 여기서 우리가 생각했던 아이디어는, 뼈대를 미리 만들어놓고 그다음에 옷을 입히는게 맞지 않을까?였다. 그래서 포즈 condition이랑 의류 정보를 downsampling할때 coarse하게 만들어놓고, 그 다음에 upsampling 하는 과정에서 세밀한 appearance정보들을 painting 하는 느낌으로 이미지를 generate하게 된다.
Future works.. 해보고 싶은것들은 많지만 리소스가 너무 많이 드는 virtual tryon은 당분간 안할거같다,,ㅎㅎ