模型名称: FashionCLIP (patrickjohncyh/fashion-clip)
模型链接: patrickjohncyh/fashion-clip
模型描述: FashionCLIP 是基于 CLIP (ViT-B/32) 架构、在 Farfetch 时尚数据集(80 万+ 商品图文对)上微调得到的跨模态模型,可对时尚商品图像进行零样本分类、图像-文本匹配与图文检索。相比 OpenAI CLIP,FashionCLIP 2.0 在 FMNIST / KAGL / DEEP 三个时尚基准上的加权宏 F1 分别提升至 0.83 / 0.73 / 0.62。
模型架构: CLIP(ViT-B/32 视觉编码器 + Masked Self-Attention 文本编码器,对比学习双塔结构)
参数规模: 151M
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.9.0 |
torch-npu | 2.9.0.post1+gitee7ba04 |
transformers | 4.57.6 |
numpy | 2.x |
Pillow | 10.x |
| 昇腾驱动 / CANN | npu-smi 25.5.5 |
2 逻辑卡(Ascend910)/opt/atomgit/0820/fashion-clipnpu:0| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| Python | >= 3.10 | 推荐 3.11 |
| torch | >= 2.1.0 | 本验证使用 2.9.0 |
| torch_npu | >= 2.1.0 | 昇腾 NPU 插件(随 CANN 安装) |
| transformers | >= 4.45.0 | HuggingFace 库,本验证使用 4.57.6 |
| numpy | >= 1.24.0 | 数值计算 |
| Pillow | >= 9.0.0 | 图像处理 |
安装命令:
# 使用清华源安装基础依赖
pip install torch torch_npu transformers numpy Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
# torch_npu 需与 CANN 版本配套,亦可从昇腾官方源安装:
# pip install torch_npu -i https://pypi.ascend.com/pypi/simple或直接使用仓库内 requirements.txt 一键安装:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 检查 NPU 设备
npu-smi infocd /opt/atomgit/0820/fashion-clip
# 默认推理(使用内置白底红色运动鞋示例图 + 10 个时尚标签)
python inference.py
# 指定本地图片推理
python inference.py --image ./product.jpg
# 指定图片 URL 与自定义候选标签
python inference.py --image_url https://example.com/product.jpg \
--texts "a black dress,a pair of shoes,a white t-shirt"| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --model_path | str | 脚本所在目录 | 模型权重目录 |
| --image | str | - | 输入图片路径 |
| --image_url | str | - | 输入图片 URL |
| --texts | str | 内置时尚标签 | 候选文本标签,逗号分隔 |
| --top_k | int | 5 | 输出 Top-K 匹配结果 |
| --device | str | auto | 推理设备(auto/npu:0/cuda:0/cpu) |
输入:
python inference.py输出:
[INFO] 设备类型: npu | 设备: npu:0
[INFO] 正在加载 FashionCLIP 模型: /opt/atomgit/0820/fashion-clip
[INFO] 模型加载成功 | 设备: npu:0 | 参数量: 151.3M
[图片] 未指定输入,使用内置示例图(白底红色运动鞋)
[INFO] 候选文本标签 (10 个): ['a pair of red sneakers', 'a pair of black shoes', 'a black leather jacket', 'a white t-shirt', 'a blue denim jacket', 'a black handbag', 'a red dress', 'a pair of blue jeans', 'a white shirt', 'a gold necklace']
============================================================
Running inference on NPU...
============================================================
[结果] 图像-文本匹配相似度 Top-5:
1. a pair of red sneakers similarity=34.0683 prob=100.00%
2. a red dress similarity=24.0277 prob=0.00%
3. a pair of black shoes similarity=21.0398 prob=0.00%
4. a black handbag similarity=16.7349 prob=0.00%
5. a pair of blue jeans similarity=15.6508 prob=0.00%
[结果] 最佳匹配: a pair of red sneakers
[耗时] 单次前向推理: 236.9 ms
[完成] FashionCLIP 在昇腾 NPU 上推理成功!完整运行日志(含推理期间 npu-smi info 采样及进程占用情况)见 run_npu.log。
输入:
python inference.py --image ./my_product.jpg --texts "a black dress,a pair of shoes,a white t-shirt,a handbag"输出:
[INFO] 设备类型: npu | 设备: npu:0
[图片] 本地图片: ./my_product.jpg
[INFO] 候选文本标签 (4 个): ['a black dress', 'a pair of shoes', 'a white t-shirt', 'a handbag']
...
[结果] 最佳匹配: <相似度最高的标签>
[耗时] 单次前向推理: ~240 ms| 指标 | 数值 |
|---|---|
| 模型参数量 | 151.3M |
| 模型加载 + 权重迁移至 NPU | ~12 s |
| 单次前向推理(1 图 vs 10 文本) | 236.9 ms |
| NPU 显存占用(推理期间) | 306 MB |
| NPU 芯片 | Ascend910 / 2 逻辑卡 |
推理期间通过 npu-smi info 多次采样可观察到 python3 进程实际占用 NPU(进程内存 306MB,HBM 用量由 3108MB 升至 3360MB),详见 run_npu.log。
torch_npu 调用 NPU 设备(check_device() 自动优先选择 npu:0),未检测到 NPU 时回退 CPU/CUDA。preprocessor_config.json 才能正常加载 CLIPProcessor(本次本地权重目录下载时缺该文件,已按官方 CLIPImageProcessor 配置补全;官方 HuggingFace 仓库自带该文件,从 HF 下载权重则无需处理)。224x224 预处理(resize + center crop + normalize),与 FashionCLIP 训练时的商品白底图分布一致。--image_url 下载图片失败,脚本会自动回退到内置示例图,保证离线可用。"a pair of red sneakers"),FashionCLIP 在较长文本查询上表现更好。