Project Icon

fashion-clip

专为时尚领域优化的对比语言视觉学习模型

FashionCLIP是一个为时尚行业优化的CLIP模型,用于提升商品检索、分类和时尚分析的表现。通过超过70万对图像和文本数据进行微调,FashionCLIP在零样本场景下表现出色。更新版FashionCLIP 2.0采用更多训练数据,显著提高了FMNIST、KAGL和DEEP数据集的性能。项目提供开源代码和模型权重,可在Hugging Face上获取,并支持多种API和教程便于上手。

FashionCLIP

YouTube 视频 HuggingFace 模型 在 Colab 中打开 Medium 博客文章 在 Streamlit 中打开

快速开始

名称链接
FashionCLIP 特征提取和分类在 Colab 中打开
教程 - 使用 RecList 评估 FashionCLIP在 Colab 中打开

更新(2023年3月10日):我们更新了模型!我们发现 laion/CLIP-ViT-B-32-laion2B-s34B-b79K 检查点(感谢 Bin!)在时尚领域的表现优于原始的 OpenAI CLIP。因此,我们微调了一个更新(且更好!)的 FashionCLIP 版本(以下简称 FashionCLIP 2.0),同时保持架构不变。我们推测 laion/CLIP-ViT-B-32-laion2B-s34B-b79K 带来的性能提升是由于增加了训练数据(是 OpenAI CLIP 数据的5倍)。然而,我们的论文结论保持不变——在我们的时尚数据集上微调 laion/CLIP 改善了我们基准测试中的零样本性能。请参见下表,比较各模型的加权宏观 F1 分数。

模型FMNISTKAGLDEEP
OpenAI CLIP0.660.630.45
FashionCLIP0.740.670.48
Laion CLIP0.780.710.58
FashionCLIP 2.00.830.730.62

我们现已登陆 Hugging Face!模型可在此处获取。

我们现已发表在 Nature Scientific Reports

引用

@Article{Chia2022,
    title="Contrastive language and vision learning of general fashion concepts",
    author="Chia, Patrick John
            and Attanasio, Giuseppe
            and Bianchi, Federico
            and Terragni, Silvia
            and Magalh{\~a}es, Ana Rita
            and Goncalves, Diogo
            and Greco, Ciro
            and Tagliabue, Jacopo",
    journal="Scientific Reports",
    year="2022",
    month="Nov",
    day="08",
    volume="12",
    number="1",
    pages="18958",
    abstract="The steady rise of online shopping goes hand in hand with the development of increasingly complex ML and NLP models. While most use cases are cast as specialized supervised learning problems, we argue that practitioners would greatly benefit from general and transferable representations of products. In this work, we build on recent developments in contrastive learning to train FashionCLIP, a CLIP-like model adapted for the fashion industry. We demonstrate the effectiveness of the representations learned by FashionCLIP with extensive tests across a variety of tasks, datasets and generalization probes. We argue that adaptations of large pre-trained models such as CLIP offer new perspectives in terms of scalability and sustainability for certain types of players in the industry. Finally, we detail the costs and environmental impact of training, and release the model weights and code as open source contribution to the community.",
    issn="2045-2322",
    doi="10.1038/s41598-022-23052-9",
    url="https://doi.org/10.1038/s41598-022-23052-9"
}

信息

我们正在等待 Farfetch 数据集的官方发布,届时微调后的模型权重、预处理的图像和文本向量将公开。与此同时,我们目前使用 Hugging Face 实现的 CLIP,并可以使用来自 OpenAI 的模型权重,遵循标准的 Hugging Face 命名约定(即 fclip = FashionCLIP('<username>/<repo_name>', ... ))。我们还支持私有仓库(即 fclip = FashionCLIP('<username>/<repo_name>', auth_token=<AUTH_TOKEN>, ... ))。

详情请参见下文!

概述

FashionCLIP 是一个为时尚行业微调的类 CLIP 模型。我们在 Farfetch 数据集1的超过 70 万对<图像, 文本>对上微调了 CLIPRadford et al., 2021)。

我们通过将 FashionCLIP 应用于行业中的开放问题(如检索、分类和时尚解析)来评估其性能。我们的结果表明,微调有助于捕捉特定领域的概念,并在零样本场景中泛化这些概念。我们还补充了定量测试和定性分析,并对视觉空间中的概念如何解锁语言泛化提供了初步见解。更多详情请参阅我们的论文

在这个仓库中,你会找到一个用于与 FashionCLIP 交互的 API 和一个使用 streamlit 构建的交互式演示(即将推出!),展示了 FashionCLIP 的功能。

API 和演示

快速使用指南

需要快速生成嵌入向量?想要测试检索性能?

首先,你应该能够使用 pip 快速安装。

$ pip install fashion-clip 

如果你有文本列表和图像路径,生成嵌入向量非常简单:

from fashion_clip.fashion_clip import FashionCLIP

fclip = FashionCLIP('fashion-clip')

# 我们创建图像嵌入和文本嵌入
image_embeddings = fclip.encode_images(images, batch_size=32)
text_embeddings = fclip.encode_text(texts, batch_size=32)

# 我们将嵌入向量归一化为单位范数(这样我们可以使用点积而不是余弦相似度进行比较)
image_embeddings = image_embeddings/np.linalg.norm(image_embeddings, ord=2, axis=-1, keepdims=True)
text_embeddings = text_embeddings/np.linalg.norm(text_embeddings, ord=2, axis=-1, keepdims=True)

使用我们的 colab 笔记本查看更多功能。

Hugging Face API

from PIL import Image
import requests
from transformers import CLIPProcessor, CLIPModel

model = CLIPModel.from_pretrained("patrickjohncyh/fashion-clip")
processor = CLIPProcessor.from_pretrained("patrickjohncyh/fashion-clip")

image = Image.open("images/image1.jpg")

inputs = processor(text=["a photo of a red shoe", "a photo of a black shoe"],
                   images=image, return_tensors="pt", padding=True)

outputs = model(**inputs)
logits_per_image = outputs.logits_per_image  # 这是图像-文本相似度分数
probs = logits_per_image.softmax(dim=1)  
print(probs)
image.resize((224, 224))

额外的内部 FashionCLIP API

安装

从项目根目录,本地安装 fashion-clip 包:

$ pip install -e . 

有两个主要的抽象概念可以方便地使用 FashionCLIP

首先是 FCLIPDataset 类,它封装了与给定目录相关的信息,并公开了 FashionCLIP 的关键信息。此外,它还提供了快速探索和可视化数据的辅助函数。主要的初始化参数如下:

name: str -> 数据集名称
image_source_path: str -> 图像的绝对路径(可以是本地或 s3)
image_source_type: str -> 源类型(即本地或 s3)
catalog: List[dict] = None -> 字典列表,至少包含 ['id', 'image', 'caption'] 键

为了便于使用,API 还提供了访问论文中用于训练 FashionCLIP 的数据集(一旦正式发布)的方法,只需指定相应的目录名称即可。

预包含的数据集

from fashion_clip import FCLIPDataset
dataset = FCLIPDataset(name='FF', 
                       image_source_path='path/to/images', 
                       image_source_type='local')

自定义数据集

from fashion_clip import FCLIPDataset
my_catalog = [{'id': 1, 'image': 'x.jpg', 'caption': 'image x'}]
dataset = FCLIPDataset(name='my_dataset', 
                       image_source_path='path/to/images', 
                       image_source_type='local',
                       catalog=my_catalog)

第二个抽象是 FashionCLIP 类,它接受一个 Hugging Face CLIP 模型名称和一个 FCLIPDataset,并提供方便的函数来执行多模态检索、零样本分类和定位等任务。FashionCLIP 的初始化参数如下:

model_name: str -> 模型名称或本地模型路径
dataset: FCLIPDataset -> 数据集
normalize: bool -> 是否将嵌入向量转换为单位范数的选项
approx: bool -> 是否使用近似最近邻的选项

FCLIPDataset 抽象类似,我们包含了一个来自论文的预训练 FashionCLIP 模型,托管在这里。如果收到未知的数据集和模型组合,图像和标题向量将在对象实例化时生成,否则将从 S3 拉取预计算的向量/嵌入。

from fashion_clip import FCLIPDataset, FashionCLIP
dataset = FCLIPDataset(name='FF', 
                       image_source_path='path/to/images', 
                       image_source_type='local')
fclip = FashionCLIP('fashion-clip', ff_dataset)

有关如何使用该包的更多详细信息,请参阅随附的笔记本!

有趣的相关项目!

  • 查看 RustEmbed,了解如何使用 gRPC 创建 FashionCLIP 嵌入的应用。

Footnotes

  1. 等待官方发布。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号