본문 바로가기

Data-science/논문 읽기

[논문 이해] Image Based Virtual Try-on Network from Unpaired Data 설명 - 1

728x90

openaccess.thecvf.com/content_CVPR_2020/papers/Neuberger_Image_Based_Virtual_Try-On_Network_From_Unpaired_Data_CVPR_2020_paper.pdf

특징

- The training phase requires only single images, eliminating the need for manually creating image pairs, where one image shows a person wearing a particular garment and the other shows the same catalog garment alone. 

- Secondly, it can synthesize images of multiple garments composed into a single, coherent outfit; 

: 여러 개의 옷을 하나로 모을 수 있음

특정 옷 입은 사람 + 그냥 옷 특정 부위들 --> 사람에게 옷 입히기

- 특정 옷 입은 사람 : 몸의 형태와 포즈

- 그냥 옷 특정 부위들 : 하나로 합친 복장

Image Based Virtual Try-On Network From Unpaired Data O-VITON algorithm

- 이 논문의 우수성

1) 데이터 수집과 학습 과정이 훨씬 쉽다. 3D 데이터나 학습 이미지 쌍들을 여러 스케일에 걸쳐 수집하는 것보다.
2) 여러 의류를 하나의 복장(cohesive outfit이라 한다)으로 통합해서 보다 향상된 가상 피팅 경험을 제공
, 그리고 사용자가 마지막에 어떤 복장을 입을지 컨트롤도 가능하다고 함.
3) 실시간 최적화 능력을 소개. 마지막 복장의 질감이나 로고 등의 미세한 특징을 정확하게 합성하는.

- 기존 관련 연구

GAN

Conditioanl GANs (cGAN)

- 클라스 라벨 형식, 텍스트 형식, 포즈, 특성 (입을 열려있거나 닫혀있음, 수염 유무, 안경 유무, 성별 등) 을 조건으로 주어서 이미지를 생성하려 함

Image-to-image translation network (pix2pix)

- 하나의 도메인에 있는 이미지를 다른 도메인으로 변형 (스케치에서 사진으로, 세그멘테이션에서 사진으로). 크로스 도메인 기법

pix2pixHD

- 단일 세그멘테이션 맵으로 부터 다중 고해상도 결과를 생성함. 이는  autoencoder 도입에서 온다. 얘는 GAN에 제약을 가하는데 그게 어떤 거냐? 국지적으로 더 잘 조정할 수 있게하는 피쳐맵들을 배우는 것이다.

최근에는?

- 최근엔 spatially-adaptive nprmalization layer가 등장. 이건 이미지내 local한 질감보단 이미지 단위의 질감을 인코딩한다. 이미지들의 구성?composition이 화자가 됐다. 배경이 아닌 이미지로 부터 어떤 콘텐츠가 배경 이미지에 전달 된다. 이때 기하학적 변형을 통해 자연스러운 이미지를 생성한다.

가상 피팅

VITON, CP-VITON

- convolutional geometric matcher를 이용, 기하학적 warping function을 결정함

WUTON

- adversarial loss를 이용해서 이미지 합성을 더 섬세하고 자연스럽게 만듦

PIVTONS

- pose에 따라 옷을 다르게 입힐 수 있게함

MG-VTON

- 멀티 pose 가상 피팅

한계점

- 위 방법들은 모델이 원하는 옷을 입은 사진, 원하는 옷을 입지 않은 사진 두 개가 쌍으로 필요했다. 이건 매우 제한적이고 노동이 많이 듦. 

- 테스트할때 옷의 분류 정보만 전달 될 수 있었다.

기타 등등,,, SwapNet

- query된 사람을 감싸는 segmentation을 생성하고 최종 질감에 곂치게 하는 방법. paired한 학습 이미지가 필요 없어졌다. 하지만 의상 레벨에서 동작하기 보단, 최종 복장 레벨에서 동작해서, 구성 능력이 떨어졌다.

Outfit Virtual Try-on (O-VITON)

특정 옷 입은 사람 + 그냥 옷 특정 부위들 --> 사람에게 옷 입히기

- pix2pixHD, image-to-image translation task의 성공에 영감을 받음

- Generator는 두 가지에 의해 조건화(conditioned)됨. segmentation map과 appearance map (Encoder E에 의해 생성)

- autoencoder는 segmentation map의 각 영역을 저 차원의 피쳐벡터로 mapping 시킨다. 각 피쳐 벡터는 해당 영역의 apperance(외관? 겉보기)를 표현하는 벡터임. 이런 apperance에 기반한 특징들은 결과 이미지의 외관을 조절할 수 있게한다. 이를 넘어 이런 특징 벡터들을 사용하지 않는 cGAN에 나타난 (lack of diversity)다양성이 부족했던 문제도 다룰 수 있다.

- 3가지 단계로 이루어진다. 

(1) Shape Generation : 세그멘테이션 map을 생성하기 (선택한 참고 의상의 실루엣과 요청한(query) 이미지의의 세그멘테이션 map을 조합함)

(2) Appearance Generation : 실제 사진같은 이미지를 만든다. 요청 이미지의 사람이 참고 이미지에서 선택된 의상을 입고 있는 이미지.

(3) Apperance Refinement : Online(실시간) 최적화. 최종 결과 이미지의 외관을 다듬는 과정

3.1 Feed-Foward Generation

Inputs (HxW RGB 이미지 + M개의 의상 참고 이미지)

각 참고 이미지에서 세그멘테이션 맵을 추출하는 네트워크 학습 : PSP semantic segmentation network 이용, output은 HxWxD_c(원핫 인코딩으로 D_c 클래스중 하나로 레이블링 됨, 클래스는 몸의 부분. 얼굴, 오른쪽 팔 또는 상의, 하의, 자켓, 배경 등으로 구성. 이 네트워크로 요청 이미지 x^0와 각 참고 이미지 x^m의 세그멘테이션 맵을 계산한다! s^0, s^m. 

자세와 몸의 형태를 추출 : Dense-pose network. body model을 평가하기 위한 네트워크. 요청이미지 x^0을 입력값으로 받아서 HxWxD_b를 출력함

Shape Generation Network Components

body model b와 의상의 형태 s^m을 조합한다. 각 mask가 shape autoencoder (E_sahpe)를 통과하고, 이걸 shape feature slice에 mapping 시키기 위해 local pooling 을 한다. 그 결과 8x4xD_s 차원의 결과가 생성됨.

유저가 요청 이미지의 사람이 참고 이미지 m의 c 타입 의상을 입히고 싶다하자. 그러면

를 의상 c가 요청 이미지에 있든 없든 상관없이, e^s_{m,c}로 교체할 수 있다!

모든 의상 형태의 shape feature slice를 depth 차원을 따라 이어 붙였다. 성긴 shape feature map 8x4x D_s D_c를 만듦.

e^s는 위에 걸 업스케일링한 버전인 HxWx D_s D_c 차원이라고 명명.

다른 의상들 조합하는 것은, 각 대응하는 shape feature slice를 조합하면 됨.

shape generator network G_shape에 shape feature map은 e^s와 body model b가 입력값으로 들어가면, 변형된 segmentation map s^y가 나온다!

Appearance Generation Network Componets

RGB 이미지와 대응하는 세그멘테이션 맵을 입력으로 받음. (x^m, s^m) 이걸 autoencoder에 넣으면, 출력물은

HxWxD_t

이 나온다. mask M_(m,c)에 따라 영역별로 average pooling을 해주고,

이 영역의 외관(apperance)를 묘사하는 D_t 차원 벡터를 형성한다. 마지막으로, apperance feature map

 

 

이 얻어지는데, 이는 각 마스크

 

 

에 appearance feature vector인

 

를 영역별로 broadcast해서 얻어진다.

 

 마찬가지로, 유저가 이미지 x_m에서 c 유형의 의상을 선택한다고 하자.

이때 이미지로부터 나온 apperance vector

 

 

 

로 바꾸고 영역별로 broadcasting 해주면 apperance feature map e^t를 얻을 수 있다.

 

apperance generator

정리하면 apperance generator(G_app)는 입력값으로 shape generation 단계에서 얻어진 s^y를 입력값으로, apperance feature map e^t를 조건으로 해서 y (feed-forward virtual try-on output) 를 생성한다.

 

학습 단계는 이후 포스팅에서 계속...

 

3.2 학습 단계