Tech Review of Pinterest #1
Pinterest는 사용자가 이미지를 포스팅하고 다른 사용자와 공유하는 Social Network Service입니다. 다른 사용자가 포스팅한 이미지를 소비하며, 소비한 이미지를 바탕으로 새로운 이미지를 추천 받으며, 본인에게 필요한 이미지를 모을 수 있습니다.
이번 리뷰는 Pinterest에서 새로운 이미지를 추천해주는 방식에 대한 이야기 입니다. 이미지를 추천하는 경우에는 다양한 종류가 존재합니다. 해당 이미지와 유사한 대체제를 추천할 수도 있고, 해당 이미지를 보완하는 보완제를 추천할 수도 있습니다. 이번 글을 해당 이미지의 일부를 보완해주는 보완제를 추천해주는 시스템에 대한 글입니다.
Pinterest의 Visual Search 팀에서는 사용자들이 그들이 찾고 있는 것을 어떻게 설명해야 하는지 모를 때에도, 그들이 시각적으로 새로운 아이디어를 발견할 수 있도록 도와줄 수 있는 방법에 대해 끝없이 연구하고 있다. 전통적인 이미지 검색 시스템에서는 검색 쿼리 이미지와 시각적으로 유사한 결과를 반환하는 것을 기본 목표로 한다. 하지만 의상이나 거실 스타일과 같은 아이디어를 추천하기 위해서는, 광범위한 장면과 이미지의 다양한 시각적 구성요소를 식별하고 이해하여 visual discovery engine과 협력하여, 검색 쿼리를 구분하고 개인화하여야 한다. Pin에 주어진 모든 요소들이 광범위한 장면을 이해하는데 주요하게 작용할 것이다. Pin 안에 있는 모든 시각적 요소들은 검색과 발견에 있어 중요한 요소들이다.
영감을 주고 구매 욕구를 불러일으키는 추천을 하기 위해, 우리는 Complete the Look을 개발하였다. Fashio과 Home Decor의 Pin들에서 시각적으로 양립할 수 있는 결과를 추천하기 위해, 장면과 이미지의 맥락을 풍부하게 이해할 수 있도록 하였다. Complete the Look은 의복, 체형, 계절, 실내 vs 실외, 다양한 가구의 종류, 그리고 방의 전체적인 아름다움과 같은 다양한 맥락을 이용하여, 시각적 검색 기술을 통해 입맛에 맞는 추천을 제공한다.
초기 테스트에서, 우리는 이 기술이 이전의 추천 시스템보다 더 좋은 성능을 보이는 것을 확인하였다. 이것에 대한 자세한 내용은 Computer Vision and Pattern Recognition 2019 (CVPR)에서 발표한 Complete the Look: Scene-based Complementary Product Recommendation에서 확인할 수 있다.
Complexity(복잡성)와 Subjectivity(주관성)때문에 호환성 있는 모델을 개발하는데 어려운 부분이 있다. 기존에 존재하는 작업은 제품 이미지 간의 호환성을 예측하는데 목표를 두고 있다. 예를 들어, t-shirts를 포함한 이미지와 jean들을 포함한 이미지 간의 호환이 가능하게 한다. 하지만 이러한 접근 방식은 street style Pin과 같은 실제 세계의 장면과 이미지들의 많은 것들을 무시한다. 실제 세계의 장면은 다양한 lighting과 pose로 인해 복잡성을 띄고 있다. 하지만 이러한 실제 세계의 장면의 복잡한 요소들은 사용자 채형, 계절과 같은 다양한 주요 맥락들을 포함하고 있으며, 이를 통해 잠재적으로 더 정확한 추천이 가능하게 한다.
우리의 해결책은 시각적으로 더 나은 성능을 제공할 수 있는 Complete the Look을 만드는 것이다. 우리의 Visual Complement System은 쿼리 이미지를 잘 보완하며, 쿼리 이미지와 더 잘 어울리는 결과를 제공해야 한다. 예를 들어, 사용자는 원피스와 잘 어울리는 신발을 시각적으로 찾고 있을지 모른다. 이 검색 쿼리의 결과는 시각적 유사성뿐 아니라 다양한 스타일 유사성을 고려한 탐색 결과를 제공해야 한다. Visual Complement System은 사용자의 옷 스타일을 완성하거나, 새로운 테이블에 맞는 완벽한 의자를 찾는데 유용할 수 있다.
CTL(Complete the Look) 모델의 구체적인 것을 논하기에 앞서, 몇 가지 용어를 정의해보자. 우리는 Scene Image를 실제 세상에서의 "in the wild" 이미지로 정의한다. 예를 들어, 화창한 날에 야외에서의 개인 사진이나, 침대에서 누워있는 사진 모두를 포함한다. 이것은 Product Image와 대조되며, 이것은 하얀 배경에 가까이서 제품만 찍은 이미지를 의미한다.
우리는 CLT task를 다음과 같이 정의한다. Scene Image와 Product Image가 주어졌을 때, Scene과 Product 사이의 Visual Complementarity(시각적 보완성)을 반영하도록 그 사이의 거리를 정량적으로 측정한다. 이렇게 측정된 거리는 Binary Classifer(이진 분류기) 혹은 reranker로 ranking을 다시 만드는 데 사용될 수 있다.
모델을 학습하기 위하여, 우리는 공개되어 있는 Labeled dataset을 활용하였다. Dataset은 Scene과 product image 쌍의 positive example로 구성되어 있으며, 제품의 category와 이미지에서의 경계에 대한 주석(Bounding box annotation)으로 구성된다. 각각의 쌍은 동일한 category에서 무작위로 샘플링되는 negative product image로 확대된다. 우리 모델은 이 triplet을 학습의 입력으로 사용한다.
모델이 정확한 제품을 기억하지 않도록 하기 위하며, 우리는 추가적인 preprocess 단계로 제품을 원래 scene image로부터 잘라낸다.
이 추가적인 작업은 모델이 scene과 product 간의 compatibility(호환성)을 visual similarity(시각적 유사성)으로 부터 독립적으로 학습하게 한다.
CTL 모델은 deep convolutional feed-forward neural network(CNN)으로 두 모듈로 구성되어 있다. 두 모듈은 image featurizer와 CTL head이다. CTL head는 global feature similarity와 local spatial attention을 결합하여, 모델이 결정을 하는 데 있어 이미지의 특정 지역에 focus 하도록 유도한다. 우리는 ResNet50 모델의 구조를 image featurizer에 사용하였으며, 이미 학습된 ImageNet을 사용하였다. 전체 실험에 있어 우리는 ResNet50 네트워크를 fine-tune하지 않았다.
CTL 모델은 3가지 단계로 구성된다.
(1) Featurize the scene and product images
첫째, ResNet50 네트워크를 사용하여 scene image와 product image에 대한 기본 feature들을 생성한다. 우리는 block4 feature map을 사용하였다.
(2) Compute global similarity
Scene과 positive/negative product image 간의 global similarity를 계산한다. 이것은 ResNet50 feature map으로부터 Scene embedding과 Product embedding이 이루어지고, 두 Embedding 사이의 L2 distance를 계산함으로써 이루어진다.
두 개의 term은 scene과 product에 대한 embedding을 의미한다.
(3) Compute local similarity
우리는 category-basd local attention saliency map을 계산하여, 모델이 의사결정을 하는데 scene으로부터 정보를 얻는데 세밀한 세부사항에 초점을 맞추게 하였다.
우리는 product embedding과 scene image의 중간 feature map에 있는 모든 영역과 일치시킨다. 모든 scene 영역이 동일하게 연관이 있지 않기 때문에, 우리는 category-based attention map을 통해 가중치를 부여하였으며, scene region embedding과 target category embedding 사이의 유사도는 L2 distance로 계산하였다.
s, p는 scene과 product를 의미하며, c는 p의 카테고리이다. f_i는 region i의 embedding이며, e_c는 category c의 L2-normalized category embedding이다.
호환성을 위하여 서로 다른 아이템은 서로 다른 것으로 취급되어야 하기 때문에, attention map은 category-based여야 한다. 예를 들어, 신발은 옷의 나머지 부분 전체와 잘 어울리는 것이 중요한 반면, 실내 장식의 경우, 방에 전체적인 느낌과 비슷한 것이 중요하다.
이를 통해 최종적으로 계산되는 similarity는 global similarity와 local similarity의 평균이다.
이 모델에서는 triplet loss function을 사용한다. 입력으로 사용되는 triplet은 (scene image, positive image, negative image)이다. 우리는 hinge loss를 사용하여, scene과 positive product image 간의 거리가 negative product image와의 거리보다 가깝게 만든다.
우리는 CTL 모델을 Fashion과 Home Decor와 관련된 3개의 offline evaluation dataset에 대하여, 몇 개의 baseline들과 비교하였다. Binary classification과 Top-K accuracy에 대하여 모두 실험하였으며, CTL 모델이 baseline보다 더 나은 성능을 보이는 것을 확인할 수 있었다.
아래는 Binary classification에 대한 결과이다.
CTL task에 대하여 ResNet50 feature들을 사용하는 것과 random chance를 이용하는 것이 차이가 없다는 것이 흥미롭다. 여기서는 Visual Compatibility(시각적 호환성)이 Visual Similarity(시각적 유사성)과 다르기 때문에, 호환성의 개념을 배우는 것이 중요하다는 것을 보여준다.
아래는 Top-K accuracy에 대한 결과이다.
다음은 테스트 셋의 몇 이미지에 대한 CTL 모델의 추천 결과이다.
질적으로 비교해보면, 추천된 product들은 scene과 호환이 되는 것을 확인할 수 있다. 모델은 product를 제안하는 데 있어 Same color와 같은 시각적 유사성뿐 아니라, Minimalist와 같은 유사한 style까지도 배운다는 것을 확인할 수 있다.
아래는 CTL 모델이 test scene image들로부터 생성한 attention map을 시각화한 것이다.
Column A는 attention map이며, Column S는 일반적인 salient object detector인 DeepSaliency의 출력 결과이다. 패션 분야에서, 우리 모델은 보완제를 추천하는 데 있어 피사체에 복장에 초점을 맞추는 것을 배운다. 대조적으로 인테리어 디자인 분야의 attention map은 퍼져 있으며, 하나의 피사체보다는 여러 개의 피사체에 주목하는 것을 확인할 수 있다. 이를 통해, 모델이 대체제 제품을 추천하는 데 있어, 방 안의 하나의 물건보다는 여러 개를 보면서 방 전체의 미학적인 부분을 고려한다는 것을 확인할 수 있다.
"Complete the Look"은 scene image의 맥락을 풍부하게 활용하여 visual complement들을 개인화하여 추천하는 새로운 접근법이다. 이 프로젝트는 Visual Search 팀이 풀고 있는 흥미로운 문제 중 하나이다. 우리는 계속 Pinterest에더 더 나은 추천을 하기 위한 작업을 계속할 것이다.
이 모델은 보완제를 추천해주는 상품 쇼핑과 같은 이미지 추천에 최적화되어 있는 모델입니다. 상품의 이미지적 유사성 뿐 아니라 이미지의 전체 분위기를 고려하여 이미지를 추천하였습니다. Scene Image의 맥락을 종합적으로 이해하였다는 부분이 이미지 유사성 뿐 아니라 이미지 보완성을 학습하게 만들었습니다.
또한 Attention Map을 활용하여, 실제로 어느 부분에 집중하여 학습하였는지를 살펴보는 부분은 이 모델의 필요성에 대해 명확히 이해주고 있다는 생각이 듭니다. 실제로 우리가 원하는 바 대로 제대로 학습되었는지 확인할 수 있었으며, 해당 Task에 적합한 모델이라는 타당성을 확인할 수 있는 검증 방법이라는 생각이 듭니다.
이미지의 전체적인 맥락을 이해하며, 이미지 보완성의 특성을 지녀야하는 추천 시스템에는 적합할 것이라는 생각이 듭니다.
이 글은 아래의 원문을 번역/의역 및 요약하였습니다. 중간중간 파란색으로 표시된 글씨는 번역자의 견해입니다.
지난 리뷰 보기
https://brunch.co.kr/@andrewhwan/58
https://brunch.co.kr/@sonjoosik/9