이 저장소는 7개의 공개 벤치마크 데이터 세트에서 Marqo-FashionCLIP 및 Marqo-FashionSigLIP를 평가하도록 설계되었습니다. 블로그에서 모델에 대해 자세히 알아보세요.
우리는 데이터세트 전반에 걸쳐 세 가지 공통 작업(텍스트-이미지, 카테고리-제품, 하위 카테고리-제품)의 성능을 평균화했습니다. 아래에서 설명된 것처럼 Marqo-FashionCLIP 및 Marqo-FashionSigLIP은 사전 훈련된 OpenCLIP 모델과 최첨단 패션 CLIP 모델 모두보다 성능이 뛰어납니다. 보다 포괄적인 성능 비교를 보려면 리더보드를 참조하세요.
텍스트-이미지 변환(6개 데이터 세트의 평균)
모델 | 평균 리콜 | 리콜@1 | 리콜@10 | MRR |
---|---|---|---|---|
마르코-패션SigLIP | 0.231 | 0.121 | 0.340 | 0.239 |
마르코-패션CLIP | 0.192 | 0.094 | 0.290 | 0.200 |
패션CLIP2.0 | 0.163 | 0.077 | 0.249 | 0.165 |
오픈패션CLIP | 0.132 | 0.060 | 0.204 | 0.135 |
ViT-B-16-laion2b_s34b_b88k | 0.174 | 0.088 | 0.261 | 0.180 |
ViT-B-16-SigLIP-webli | 0.212 | 0.111 | 0.314 | 0.214 |
카테고리-제품(5개 데이터 세트의 평균)
모델 | 평균P | P@1 | P@10 | MRR |
---|---|---|---|---|
마르코-패션SigLIP | 0.737 | 0.758 | 0.716 | 0.812 |
마르코-패션CLIP | 0.705 | 0.734 | 0.676 | 0.776 |
패션CLIP2.0 | 0.684 | 0.681 | 0.686 | 0.741 |
오픈패션CLIP | 0.646 | 0.653 | 0.639 | 0.720 |
ViT-B-16-laion2b_s34b_b88k | 0.662 | 0.673 | 0.652 | 0.743 |
ViT-B-16-SigLIP-webli | 0.688 | 0.690 | 0.685 | 0.751 |
하위 카테고리-제품(4개 데이터 세트의 평균)
모델 | 평균P | P@1 | P@10 | MRR |
---|---|---|---|---|
마르코-패션SigLIP | 0.725 | 0.767 | 0.683 | 0.811 |
마르코-패션CLIP | 0.707 | 0.747 | 0.667 | 0.772 |
패션CLIP2.0 | 0.657 | 0.676 | 0.638 | 0.733 |
오픈패션CLIP | 0.598 | 0.619 | 0.578 | 0.689 |
ViT-B-16-laion2b_s34b_b88k | 0.638 | 0.651 | 0.624 | 0.712 |
ViT-B-16-SigLIP-webli | 0.643 | 0.643 | 0.643 | 0.726 |
HuggingFace: Marqo-FashionCLIP 및 Marqo-FashionSigLIP에 모델을 출시했습니다. 또한 실제 모델의 Hugging Face Space 데모(Marqo-FashionSigLIP을 사용한 분류)도 있습니다.
다음과 같이 transformers
포함된 모델을 로드할 수 있습니다.
from transformers import AutoModel , AutoProcessor
model = AutoModel . from_pretrained ( 'Marqo/marqo-fashionCLIP' , trust_remote_code = True )
processor = AutoProcessor . from_pretrained ( 'Marqo/marqo-fashionCLIP' , trust_remote_code = True )
그리고
from transformers import AutoModel , AutoProcessor
model = AutoModel . from_pretrained ( 'Marqo/marqo-fashionSigLIP' , trust_remote_code = True )
processor = AutoProcessor . from_pretrained ( 'Marqo/marqo-fashionSigLIP' , trust_remote_code = True )
그 다음에,
import torch
from PIL import Image
image = [ Image . open ( "docs/fashion-hippo.png" )]
text = [ "a hat" , "a t-shirt" , "shoes" ]
processed = processor ( text = text , images = image , padding = 'max_length' , return_tensors = "pt" )
with torch . no_grad ():
image_features = model . get_image_features ( processed [ 'pixel_values' ], normalize = True )
text_features = model . get_text_features ( processed [ 'input_ids' ], normalize = True )
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( "Label probs:" , text_probs )
모델이 실제로 작동하는 모습을 보고 싶다면 패션 데이터세트를 사용한 간단한 전자상거래 검색을 설명하는 이 기사를 공개했습니다.
다음과 같이 open_clip
사용하여 모델을 로드할 수 있습니다.
import open_clip
model , preprocess_train , preprocess_val = open_clip . create_model_and_transforms ( 'hf-hub:Marqo/marqo-fashionCLIP' )
tokenizer = open_clip . get_tokenizer ( 'hf-hub:Marqo/marqo-fashionCLIP' )
그리고
import open_clip
model , preprocess_train , preprocess_val = open_clip . create_model_and_transforms ( 'hf-hub:Marqo/marqo-fashionSigLIP' )
tokenizer = open_clip . get_tokenizer ( 'hf-hub:Marqo/marqo-fashionSigLIP' )
그 다음에,
import torch
from PIL import Image
image = preprocess_val ( Image . open ( "docs/fashion-hippo.png" )). unsqueeze ( 0 )
text = tokenizer ([ "a hat" , "a t-shirt" , "shoes" ])
with torch . no_grad (), torch . cuda . amp . autocast ():
image_features = model . encode_image ( image , normalize = True )
text_features = model . encode_text ( text , normalize = True )
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( "Label probs:" , text_probs )
Marqo Cloud에 배포하려면(권장):
Marqo Cloud에 가입하세요.
Marqo 및 Marqo Python 클라이언트를 설치합니다.
pip install marqo
import marqo
settings = {
"type" : "unstructured" ,
"model" : "marqo-fashion-clip" , # model name
"modelProperties" : {
"name" : "ViT-B-16" , # model architecture
"dimensions" : 512 , # embedding dimensions
"url" : "https://marqo-gcl-public.s3.us-west-2.amazonaws.com/marqo-fashionCLIP/marqo_fashionCLIP.pt" , # model weights
"type" : "open_clip" # loading library
},
}
api_key = "your_api_key" # replace with your api key (https://www.marqo.ai/blog/finding-my-marqo-api-key)
mq = marqo . Client ( "https://api.marqo.ai" , api_key = api_key )
mq . create_index ( "fashion-index" , settings_dict = settings )
# triggers model download
mq . index ( "fashion-index" ). search ( "black dress" )
문서 추가 및 검색에 대한 자세한 내용은 전체 문서를 참조하세요.
PyTorch를 먼저 설치하고 실행하세요.
pip install -r requirements.txt
Marqo-FashionCLIP을 평가하려면 다음 명령을 실행하세요.
python eval.py
--dataset-config ./configs/ ${DATASET} .json
--model-name Marqo/marqo-fashionCLIP
--run-name Marqo-FashionCLIP
DATASET
['deepfashion_inshop', 'deepfashion_multimodal', 'fashion200k', 'KAGL', 'atlas', 'polyvore' 'iMaterialist'] 중 하나일 수 있습니다.Marqo-FashionSigLIP를 평가하려면 다음 명령을 실행하세요.
python eval.py
--dataset-config ./configs/ ${DATASET} .json
--model-name Marqo/marqo-fashionSigLIP
--run-name Marqo-FashionSigLIP
DATASET
['deepfashion_inshop', 'deepfashion_multimodal', 'fashion200k', 'KAGL', 'atlas', 'polyvore' 'iMaterialist'] 중 하나일 수 있습니다.FashionCLIP 2.0 및 OpenFashionCLIP을 포함한 다른 모델을 평가하는 스크립트는 스크립트 디렉토리에서 찾을 수 있습니다.
우리는 7개의 공개 다중 모드 패션 데이터 세트를 수집하여 HuggingFace에 업로드했습니다: Atlas, DeepFashion(In-shop), DeepFashion(Multimodal), Fashion200k, iMaterialist, KAGL 및 Polyvore. 각 데이터 세트에는 사용 가능한 다양한 메타데이터가 있습니다. 따라서 각 데이터 세트의 작업은 scripts 디렉터리에 json 파일로 저장됩니다. 각 데이터 세트에 대한 자세한 내용은 블로그를 참조하세요.
LEADERBOARD.md를 갱신하고 다양한 모델의 결과를 로컬로 요약하려면 다음 명령을 실행하세요.
python summarize_results.py
@software{Jung_Marqo-FashionCLIP_and_Marqo-FashionSigLIP_2024,
author = {Jung, Myong Chol and Clark, Jesse},
month = aug,
title = {{Marqo-FashionCLIP and Marqo-FashionSigLIP}},
url = {https://github.com/marqo-ai/marqo-FashionCLIP},
version = {1.0.0},
year = {2024}
}