siglip2-base-patch16-224-dress

google/siglip2-base-patch16-224์˜ ๋น„์ „ ์ธ์ฝ”๋”๋ฅผ GLAMI-1M ๋“œ๋ ˆ์Šค ์ด๋ฏธ์ง€๋กœ LoRA fine-tuneํ•œ ๋’ค base์— ํ•ฉ์นœ(merged) ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค. ๋“œ๋ ˆ์Šค ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰์šฉ ์ด๋ฏธ์ง€ ์ž„๋ฒ ๋”ฉ(768์ฐจ์›)์„ ๋งŒ๋“ค ๋•Œ ์”๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ํƒ€์›Œ๋Š” base์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModel

repo = "sungjin-code/siglip2-base-patch16-224-dress"
model = AutoModel.from_pretrained(repo).eval()
processor = AutoImageProcessor.from_pretrained(repo)

images = [Image.open("a.jpg").convert("RGB"), Image.open("b.jpg").convert("RGB")]
with torch.no_grad():
    output = model.get_image_features(**processor(images=images, return_tensors="pt"))
features = getattr(output, "pooler_output", output)  # transformers v5๋Š” ์ถœ๋ ฅ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
embeddings = torch.nn.functional.normalize(features, dim=-1)  # (N, 768), L2 ์ •๊ทœํ™”
similarity = embeddings @ embeddings.T                        # ๋‚ด์  = ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„
  • ์ž…๋ ฅ์€ SigLIP2 ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋น„์œจ์„ ๋ฌด์‹œํ•˜๊ณ  224ร—224๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ๋„ ๊ฐ™์€ ๊ณต๊ฐ„์— ์ž„๋ฒ ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(get_text_features, 64ํ† ํฐ max-length padding). ๋‹ค๋งŒ ์ด ๋ชจ๋ธ์€ ์ด๋ฏธ์ง€โ†”์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰์„ ๋ชฉํ‘œ๋กœ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต

  • ๋ฐ์ดํ„ฐ: GLAMI-1M์—์„œ dresses ์นดํ…Œ๊ณ ๋ฆฌ 26,183์žฅ(OWLv2 "dress" ์ ์ˆ˜ 0.01 ์ดํ•˜ ์ œ์™ธ).
  • ๋ฐฉ๋ฒ•: ๋น„์ „ ์ธ์ฝ”๋”(attention + MLP)์— LoRA(r=32, alpha=64, dropout 0.3)๋ฅผ ๋ถ™์ด๊ณ  ํ…์ŠคํŠธ ํƒ€์›Œ๋Š” ๊ณ ์ •ํ•œ ์ฑ„ ์ด๋ฏธ์ง€-ํ…์ŠคํŠธ ๋Œ€์นญ InfoNCE๋กœ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋Š” "{์ƒํ’ˆ๋ช…}. {์„ค๋ช…}"(64ํ† ํฐ), lr 1e-4, ์ตœ๋Œ€ 20 epoch, ๊ฒ€์ฆ textโ†’image Recall@5 ๊ธฐ์ค€ early stopping.
  • ๋ณด์กฐ ์ž‘์—…: OWLv2๊ฐ€ ๋งŒ๋“  ๋“œ๋ ˆ์Šค ๋ฐ•์Šค๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ž‘์€ head(๊ฐ€์ค‘์น˜ 0.3), ํ•™์Šต ์ด๋ฏธ์ง€์— color jitter(๋ฐ๊ธฐยท๋Œ€๋น„ยท์ฑ„๋„ 0.6). ์ด head๋Š” ์ด ์ €์žฅ์†Œ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ‰๊ฐ€

Pexels ์‚ฌ์ง„ 100์žฅ(๋“œ๋ ˆ์Šค๋ฅผ ์ž…์€ ์‚ฌ๋žŒ)์—์„œ ์ด๋ฏธ์ง€ ํ•œ ์žฅ์„ ์ฟผ๋ฆฌ๋กœ, ๋‚˜๋จธ์ง€ 99์žฅ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ •๋‹ต์€ ์‚ฌ๋žŒ์ด ๋ผ๋ฒจ๋งํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ EmbeddingGemma 2๋กœ ๋งŒ๋“  ์ž„์‹œ ์ •๋‹ต 1๊ฐœ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ธ R@1 R@3 R@5 R@10 nDCG@5
SigLIP2 base 0.050 0.140 0.210 0.370 0.132
์ด ๋ชจ๋ธ 0.130 0.270 0.350 0.460 0.242

์ฟผ๋ฆฌ๊ฐ€ 100๊ฐœ, ์ •๋‹ต์ด 1๊ฐœ๋ฟ์ด๋ผ R@5์˜ ํ‘œ์ค€์˜ค์ฐจ๊ฐ€ ์•ฝ 0.045์ž…๋‹ˆ๋‹ค. ์ž‘์€ ์ฐจ์ด๋Š” ๋…ธ์ด์ฆˆ์ผ ์ˆ˜ ์žˆ๊ณ , ๋” ํฐ ๋ชจ๋ธ(Tianmu-MERE ๋“ฑ)๊ณผ์˜ ๊ฒฉ์ฐจ๋„ ํฝ๋‹ˆ๋‹ค.

ํ•œ๊ณ„

  • ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” ์ƒํ’ˆ ์‚ฌ์ง„ ์œ„์ฃผ์ด๊ณ , ํ‰๊ฐ€๋Š” ์•ผ์™ธ ์ธ๋ฌผ ์‚ฌ์ง„์ด๋ผ ๋„๋ฉ”์ธ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • GLAMI์˜ dresses ๋ผ๋ฒจ์—๋Š” ๋ฒจํŠธยท์‹ ๋ฐœ ๋“ฑ ์˜ค๋ผ๋ฒจ์ด ์ผ๋ถ€ ์„ž์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ๋žŒ์ด ์ž‘๊ฒŒ ์ฐํžŒ ์‚ฌ์ง„์€ 224ร—224 ์ž…๋ ฅ์—์„œ ๋“œ๋ ˆ์Šค ์˜์—ญ์ด ๋ช‡ ํ† ํฐ๋ฐ–์— ๋˜์ง€ ์•Š์•„ ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

Apache-2.0 (base ๋ชจ๋ธ๊ณผ GLAMI-1M ๋ฐ์ดํ„ฐ์…‹ ๋ชจ๋‘ Apache-2.0).

Downloads last month
24
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for sungjin-code/siglip2-base-patch16-224-dress

Finetuned
(142)
this model

Dataset used to train sungjin-code/siglip2-base-patch16-224-dress