평범한 필기장

[평범한 학부생이 하는 논문 리뷰] An Image-based Virtual Try-on (VITON) 본문

AI/Virtual Try-On

[평범한 학부생이 하는 논문 리뷰] An Image-based Virtual Try-on (VITON)

junseok-rh 2023. 7. 24. 16:01

평소에 패션에 관심이 많아서 패션과 관련 AI 분야를 찾다가 Virtual Try-on이라는 분야를 지인에게 듣게 되었다. 그래서 이번 방학 때 이 분야와 관련된 논문을 읽어봐야겠다고 결심하게 되었다.

Virtual Try-on 관련된 논문들 중에서 첫 논문은 이 논문으로 정해서 이 논문을 처음으로 읽게 되었다.  

Abstract & Introduce

많은 온라인 쇼핑몰에서 Virtual Try-on 기술을 이용하려한다. 대부분은 3D를 통해 기술을 구현하지만 많은 제약과 비싼 비용이 필요하다고 한다. 그런데 이 논문에서 제시한 VITION이라는 모델은 3D 정보를 이용하지 않고 RGB이미지에만 의존하는 모델이라고 설명한다. 그리고 이 모델에서 합성한 이미지는 (1) 인물의 신체 부위와 포즈가 원본 이미지와 동일할 것, (2) 제품 이미지의 의류 아이템이 인물의 포즈와 체형에 따라 자연스럽게 변형될 것, (3) 색상, 질감과 같은 낮은 수준의 특징뿐만 아니라 자수, 로고 등과 같은 복잡한 그래픽을 포함하여 원하는 제품의 세부적인 시각적 패턴이 명확하게 보일 것 등의 조건을 충족해서 설득력이 있을 것으로 기대한다. 이러한 조건들은 3D정보 없이는 충족되기 어렵지만 이 모델에서 합성한 이미지는 이러한 조건들을 충족한다고 설명하는 것 같다.

기존 GAN 관련 모델들이 이미지 합성에서 좋은 성능을 보였지만 Virtual Try-on 분야에서는 시각적 디테일과 기하학적인 변화를 적용을 해야하는데 이러한 것에서 GAN 모델들은 제약을 가진다고 설명하면서 VITON은 clothing-agnostic representation을 도입해서 이러한 한계를 해결했다고 설명하고 있다. 

VITON

VITON 모델 구조와 여러 특징에 대해 자세히 설명하겠다.

VITON의 개요

VITON을 학습하는 과정을 대략적으로 설명하면 대상 의상 $c$를 입고 있는 인물 이미지 $I$와 대상 의상 이미지 $c$가 주어졌을 때, $I$에서 의상의 영역을 capture하고 그 영역에 의상 이미지 $c$를 자연스럽게 합성한 이미지 $\hat{I}$을 생성해서 $I$와 $\hat{I}$간의 차이를 줄이는 방식이라고 간단하게 이해하면 될 것 같다.

이러한 과정을 구현하기 위해 clothing-agnostic person representation, multitask encoder-decoder, refinement network라는 3가지의 네트워크를 도입한다.

 

Person Representation

Virtual try-on synthesis의 주요 기술적 과제는 대상 의류 이미지를 사람의 포즈에 맞게 변형하는 것이다. 이를 위해 clothing-agnostic person representation을 도입한다.

  • Pose heatmap

사람의 포즈에 따라 의상의 변형이 달라지기 때문에 우리는 state-of-the-art pose estimator를 사용하여 포즈 정보를 명시적으로 모델링한다고 설명한다. 이 논문을 읽어보지 않아서 제대로 이해는 못했지만 사람의 포즈를 18개의 키포인트 좌표로 표현해서 포즈를 18-channel의 heatmap으로 표현해서 사용한다고 한다.

  • Human body representation

state-of-the-art human parser를 사용하여 팔, 다리 등과 같이 서로 다른 영역이 인체의 다른 부분을 나타내는 human segmentation 맵을 계산하고 segmentation 맵을 1채널 binary mask로 변환하는데, 여기서 1은 인체(얼굴과 머리카락 제외)를 나타내고 그 외에는 0을 나타낸다. $I$에서 직접 파생된 이 binary mask는 체형과 대상 의류가 충돌할 때 artifact를 피하기 위해 더 낮은 해상도로 다운샘플링된다.

  • Face and hair segmentation

인물의 신원을 유지하기 위해 얼굴, 피부색, 헤어 스타일 등과 같은 물리적 속성을 통합한다. Human parser를 사용하여 인물의 얼굴과 머리카락 영역의 RGB 채널을 추출하여 새 이미지를 생성할 때 신원 정보를 주입한다.

 

마지막으로, 이 세 가지 특징 맵의 크기를 동일한 해상도로 조정한 다음 concatenate하여 clothing-agnostic person representation $p$를 형성한다.($p \in R^{m * n * k}$  , m = 256n = 192는 특징 맵의 높이와 너비를 나타내고 k = 18 + 1 + 3 = 22는 채널 수를 나타냄). 이 representation에는 관계를 모델링하기 위해 컨볼루션이 수행되는 사람에 대한 풍부한 정보가 포함되어 있어서 이전 작업보다 더 상세하다고 한다.

Clothing-agnostic person representation

 

Multitask Encoder-Decoder

Clothing-agnostic person representation $p$와 target clothing image $c$가 주어지면, reconstruction을 통해 참조 이미지 $I$를 합성하여 $c$에서 $p$의 해당 영역으로 자연스럽게 transfer하는 것을 학습할 수 있도록 제안한다. 특히 multi-task encoder-decoder를 활용하여 인물의 clothing mask와 함께 옷을 입은 사람 이미지를 생성합니다. Encoder-decoder는 일반적인 유형의 skip connection을 가진 U-넷 아키텍쳐를 띈다.

$G_C$는 encoder-decoder generator에 의해 근사화된 함수를 나타낸다. 이 함수는 concatenated된 $c$와 $p$를 입력으로 받아 4-channel output $(I^{\prime} , M) = G_C (c, p)$를 생성하는데, 처음 3개의 채널은 합성된 이미지 $I^ ′$를 나타내고 마지막 채널 $M$은 의류 영역의 segmentation mask를 나타냅니다. 우리는 $I^′$가 기준 이미지 $I$에 가깝고 $M$이 $M_0$에 가까운 generator를 학습하고자 한다.($M_0$는 human parser가 $I$에 대해 예측한 psuedo ground truth clothing mask). Generator를 학습시키기 위해 컬러 이미지인 $I$와 $I^{\prime}$을 비교하기위해 visual perception network에 의해 계산된 합성 이미지의 해당 특징 맵과 ground truth 이미지 사이의 거리를 모델링하는 perceptual loss를 흑백컬러인 $M$과 $M_0$를 비교하기 위해 $L_1$loss를 가지고 loss function을 두었다.

$L_{G_C} = \underbrace{\underset{i=0}{\overset{5}{\Sigma}} λ_i ||φ_i(I^{\prime} ) - φ_i(I)||_1}_{\rm perceptual \ loss} + \underbrace{||M - M_0||_1}_{\rm L_1 \ loss}, \quad (1)$

여기서 첫 번째 항의 $φ_i(y)$는 visual perception network $φ$에서 $i$번째 레이어의 이미지 $y$의 특징 맵으로, ImageNet에서 pretrained된 VGG19 network이다. 레이어 $i$가 $1$이상인 경우 VGG 모델의 'conv1_2', 'conv2_2', 'conv3_2', 'conv4_2', 'conv5_2'를 활용하고, 레이어 $0$의 경우 RGB 픽셀 값을 직접 사용한다. 하이퍼파라미터 $λ_i$는 total loss에 대한 $i$번째 레이어의 기여도를 제어한다. Perceptual loss는 합성된 이미지가 실측 이미지의 RGB 값과 visual perception model의 다른 레이어에서 활성화된 값과 일치하도록 하여 합성 네트워크가 사실적인 패턴을 학습할 수 있도록 한다.

식 1을 최소화함으로써 encoder-decoder는 person representation에 따라 대상 의상을 조건부로 전송하는 방법을 학습한다. 하지만 텍스트, 로고 등과 같은 대상 항목의 세부 정보가 누락되어 있다. 

Refinement Network

VITON의 refinement network $G_R$은 변형된 대상 아이템의 사실적인 디테일을 활용하여 거칠고 흐릿한 영역을 렌더링하도록 학습된다.

Warped clothing item.

그림 4와 같이 shape context 매칭을 통해 thin plate spline(TPS) 변환을 추정하여 의류 아이템을 워핑한다. 보다 구체적으로, $c$의 전경 마스크를 추출하고 이 마스크와 식 1로 추정된 인물의 의류 마스크 $M$ 사이의 shape context TPS 워프를 계산하고, 이렇게 계산된 TPS 파라미터를 추가로 적용하여 대상 의류 이미지 $c$를 워프된 버전 $c^′$로 변환한다. 그 결과, 왜곡된 의류 이미지는 인물의 포즈와 체형 정보에 부합하고 대상 아이템의 디테일을 완벽하게 보존한다.

Learn to composite.

$I^ ′$에 $c^′$를 합성할 때 $c^′$를 의류 영역과 매끄럽게 결합하고 팔이나 머리카락이 신체 앞에 있는 경우 occlusion을 적절히 처리해야 한다. 따라서 우리는 refinement network를 사용하여 합성하는 방법을 학습한다. 그림 2의 하단에 표시된 것처럼 먼저 $c^′$와 coarse output $I^′$를 concatenate해서 refinement network $G_R$의 입력으로 넣느다. 그런 다음 refinement network는 1채널 compositin mask $α ∈ (0, 1)^{m×n}$을 생성하여 $c^′$와 $I^′$ 각각에서 얼마나 많은 정보가 활용되는지를 나타낸다.

$\hat{I} = α ⊙ c^′ + (1 - α) ⊙ I^′ , \quad (2)$ , $⊙$ 는 요소별 행렬 곱셈.

최적의 composition mask를 학습하기 위해 생성된 결과물 $\hat{I}$과 식 1과 유사한 perceptual loss $L_{perc}$를 가진 기준 이미지 $I$ 사이의 불일치를 최소화합니다:

$L_{perc}(\hat{I}, I) = \underset{i=3}{\overset{5}{\Sigma}} λ_i ||φ_i(\hat{I}) - φ_i(I)||_1, \quad (3)$

여기서 φ는 visual perception network VGG19를 나타냄.

Visual perception network의 하위 계층은 이미지의 내용 대신 이미지의 세부 픽셀 수준 정보에 더 많은 관심을 갖기 때문에 상위 레이어('conv3_2', 'conv4_2', 'conv5_2')만 사용함으로써 모델이 불완전한 warping의 영향을 무시하도록 유도하여 뒤틀린 대상 의류 이미지를 선택하고 더 많은 디테일을 보존할 수 있도록 한다.

$G_R$로 생성된 composition mask output은 $L_1$ norm과 total variation(TV) norm을 사용하여 정규화한다.

Refinement network의 전체 objective function :

$L_{G_R} = L_{perc}(\hat{I}, I) - λ_{warp}||α||1 + λ{T V} ||∇α||_1, \quad (4)$

$λ_{warp}$와 $λ_{T V}$는 각각 $L_1$ norm과 $TV$ norm에 대한 가중치를 나타낸다. 음의 $L_1$ 항을 최소화하면 모델이 warped 의류 이미지에서 더 많은 정보를 활용하고 더 많은 디테일을 렌더링할 수 있다. Total-variation regularizer $||∇α||_1$은 생성된 composition mask $α$의 gradients을 페널티하여 공간적으로 부드럽게 만들어 워프된 영역에서 coarse 결과물로의 전환이 더 자연스럽게 보이도록 한다.

그림 5는 단계별 생성된 결과를 시각화한 것이다. Encoder-decoder는 대상 의류 아이템과 사람의 모습이 주어지면 대상 의류 아이템의 그래픽이나 텍스처와 같은 디테일이 누락된 채 인물의 포즈, 체형, 얼굴이 보존된 거친 결과물을 생성한다. Clothing mask를 기반으로 refinement 단계에서는 대상 의류 이미지를 왜곡하고 composition mask를 예측하여 coarse systhesis 이미지에서 어떤 영역을 대체해야 하는지 결정한다. 결과적으로 대상 의류 이미지에서 "copied"된 중요한 디테일은 인물의 해당 의류 영역에 "pasted"됩니다.

Experiments

Implementation Details

Training setup.

  • Encoder-decoder는 $β_1 = 0.5, β_2 = 0.999$, 고정 학습률 0.0002의 Adam optimizer를 사용
  • Encoder-decoder generator는 15K 단계로, refinement network는 6K 단계로 모두 16개의 배치 크기로
  • Synthesis 샘플의 해상도는 256 × 192

Encoder-decoder generator.

  • Coarse 단계용 네트워크에는 각각 인코딩과 디코딩을 위한 6개의 컨볼루션 레이어가 포함.
  • 모든 encoding 레이어는 stride가 2인 4×4 spatial 필터로 구성되며, 필터 수는 각각 64, 128, 256, 512, 512, 512.
  • 모든 decoding 레이어는 1/2의 stride로  4 × 4 spatial 필터가 채택, 채널 수는 512, 512, 256, 128, 64, 4.
  • 인코더와 디코더 사이에 skip connection을 추가하여 성능을 개선.

Refinement network.

  • 4계층 fuly convolutional model.
  • 처음 세 레이어에는 각각 3 × 3 × 64 필터와 Leaky ReLU가 있으며 마지막 레이어는 1 × 1 spatial 필터와 sigmoid 활성화 함수를 사용하여 composition mask를 출력하고 출력을 (0, 1)로 스케일링.
  • 식 4의 $λ_i$는 식 1과 동일하며 $λ_{warp} = 0.1, λ_{T V} = 5e^{ - 6}$.

Qualitative Results

그림 6은 서로 다른 방법의 시각적 비교를 보여줍니다. CRN과 Encoder-decoder는 대상 의류 아이템의 디테일을 렌더링하는 위치와 방법을 모르기 때문에 흐릿하고 거친 결과를 생성한다. Adversarial training을 사용하는 방법은 shaper edge를 생성하지만 원하지 않는 artifacts를 생성하기도 한다. Non-parametric baseline은 원본과 타깃 의류 아이템 간의 불일치에 관계없이 왜곡된 타깃 이미지를 인물에 직접 붙여넣기 때문에 부자연스러운 이미지가 생성된다. 이러한 방식과 달리 VITON은 정확하고 매끄럽게 상세한 가상 착장 결과를 생성한다.

그러나 마지막 행의 목선 주변에는 약간의 artifacts가 있는데, 이러한 artifacts는 의상 이미지에서 neck tag 와 inner collars에 의해 발생한다. 이 artifacts를 없애기 위해 FCN model을 학습시켜서 의류 이미지를 warping시키 전에 의상 이미지의 neck tag와 inner collars를 제거하고 그 이미지를 이용해서 해결한다.

또한 바지의 경우 제품 이미지가 제공되지 않은 채로 모델에 의해 생성됩니다. 이는 모델이 서로 다른 패션 아이템 간의 동시 발생을 암묵적으로 학습하고 있음을 나타냅니다. 바지 영역을 얼굴 및 머리카락과 유사한 방식으로 처리하면 VITON은 원래의 바지를 유지할 수 있다.

Person representation analysis.

Person representation에서 포즈와 체형의 효과를 조사하기 위해 개별적으로 representation에 대해 이를 제거하고 전체 representation과 비교한다. 복잡한 포즈를 취한 사람의 경우 체형 정보만으로는 occlusion 및 포즈 모호성을 처리하기에 충분하지 않다는 것을 알 수 있다. 체형 정보는 타겟 아이템을 적절한 사이즈로 조정하는 데에도 매우 중요하다. 이를 통해 제안한 clothing-angnostic이 이전 작업보다 실제로 더 포괄적이고 효과적이라는 것을 확인할 수 있다.

Failure cases.

그림 8은 거의 볼 수 없는 포즈나 현재 옷과 대상 옷의 모양이 크게 일치하지 않는 경우로 인한 두 가지 방법의 실패 사례를 보여준다.

In the wild results.

COCO 데이터 세트의 와일드 이미지에서 인체 영역을 잘라내어 실험을 진행했다. 위 이미지가 그 결과이다. 이는 우리의 방법이 옷을 입은 사람을 생성하는 것과 같은 응용 분야에서 잠재력을 가지고 있음을 시사한다.

Quantitative Results

 

실험을 한 결과 Inception Score는 Virtual try-on분야에 적합하지 않다는 결론을 냈고 Human evaluation을 보면 가장 성능이 좋게 나왔기에 다른 generative모델들 보다 성능이 좋다는 긍정적인 결론이 나왔다.

Conclusion

새로 수집한 데이터 세트에 대한 실험을 수행한 결과 양적, 질적으로 모두 유망한 결과를 얻을 수 있었다. 이는 2D 이미지 기반 합성 파이프라인이 고가의 3D 기반 방법의 대안으로 사용될 수 있음을 나타낸다.

 

Virtual Try-on 분야의 논문을 처음으로 읽는데 모르는 분야다 보니 생소한 부분이 많았던 것 같다. 하지만 평소 관심사와 관련된 분야다 보니 더 발전된 최신의 모델에 대한 논문들을 읽고 싶어졌다.

 

(혹시 오류가 있다면 피드백 부탁드립니다!!)