fashion-similarity-resnet50-arcface
موديل بحث تشابه بصري للمنتجات (Fashion Product Images) — ResNet50 مدرّب بـ ArcFace metric learning. يحوّل أي صورة إلى متجه بطول 512؛ المنتجات المتشابهة تكون متجهاتها متقاربة (cosine).
النتائج (على مجموعة test محجوزة — غير مستخدمة في التدريب أو الاختيار)
| Metric | Baseline (pretrained) | Trained (ArcFace) |
|---|---|---|
| Precision@10 | 0.696 | 0.850 |
| mAP@10 | 0.790 | 0.901 |
- البنية: ResNet50 + GeM + Neck(Linear -> 512, BatchNorm)، مخرج مطبّع L2.
- إشارة التدريب: articleType (84 فئة) · حجم الإدخال: 224x224.
الاستخدام
import torch
from PIL import Image
from torchvision import transforms
from modeling import load_model
model, cfg = load_model('.', device='cuda' if torch.cuda.is_available() else 'cpu')
tfm = transforms.Compose([
transforms.Resize((cfg['image_size'], cfg['image_size'])),
transforms.ToTensor(),
transforms.Normalize(cfg['normalize_mean'], cfg['normalize_std']),
])
@torch.no_grad()
def embed(path):
x = tfm(Image.open(path).convert('RGB')).unsqueeze(0)
return model(x.to(next(model.parameters()).device)).cpu().numpy()
التدريب
- Loss: ArcFace (s=30.0, m=0.5) + CrossEntropy
- Optimizer: AdamW (backbone lr=0.0001, head lr=0.001), Cosine schedule, AMP
- Epochs: 15 · Dataset: paramaggarwal/fashion-product-images-dataset