Ascend-SACT/WinCLIP
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Winclip迁移适配与精度测试指导流程

1. 概述

WinCLIP(Window-based CLIP)是一种基于视觉-语言模型 CLIP 的零样本/少样本异常检测与分割方法,由 Jeong 等人于 2023 年在 CVPR 会议上提出。 WinCLIP 利用预训练的 CLIP 模型的跨模态能力,通过滑动窗口(Sliding Window)机制提取图像的局部密集视觉特征,实现对异常的检测和定位,无需针对特定数据集进行训练。

2. 准备运行环境

表 1 版本配套表

配套版本环境准备指导
机器型号Atlas800I A2-
AI加速芯片昇腾910B4-
Python3.11-
mindie2.3.0-

2.1 vllm-ascend镜像

quay.io/ascend/vllm-ascend:releases-v0.18.0 

2.2 容器创建

ocker run -d -it --privileged --ipc=host --name=winclip --shm-size=1000g \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/sbin:/usr/local/sbin \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /home/z00615909:/home/WinClip-master \
quay.io/ascend/vllm-ascend:releases-v0.18.0 \
/bin/bash

docker exec -it BlendMask bash

2.3 安装依赖

# 拉取代码仓
git clone https://github.com/caoyunkang/WinClip/tree/master
cd WinClip-master	

# 安装依赖
sh install.sh 

# detectron2安装
git clone https://github.com/facebookresearch/detectron2.git 
python -m pip install -e detectron2

# 昇腾适配
vim ./adet/modeling/blendmask/blendmask.py
添加:
import torch_npu
from torch_npu .contrib import transfer_to_npu

3.下载模型权重与数据集

3.1 下载到本地

# 模型权重
https://github.com/caoyunkang/WinClip/tree/master

# 数据集
https://www.mvtec.com/company/research/datasets/mvtec-ad

4.推理脚本

python eval_WinCLIP.py --dataset mvtec --class-name bottle
python eval_WinCLIP.py --dataset mvtec --class-name cable
python eval_WinCLIP.py --dataset mvtec --class-name capsule
python eval_WinCLIP.py --dataset mvtec --class-name carpet
python eval_WinCLIP.py --dataset mvtec --class-name grid
python eval_WinCLIP.py --dataset mvtec --class-name hazelnut
python eval_WinCLIP.py --dataset mvtec --class-name leather
python eval_WinCLIP.py --dataset mvtec --class-name metal_nut
python eval_WinCLIP.py --dataset mvtec --class-name pill
python eval_WinCLIP.py --dataset mvtec --class-name screw
python eval_WinCLIP.py --dataset mvtec --class-name tile
python eval_WinCLIP.py --dataset mvtec --class-name toothbrush
python eval_WinCLIP.py --dataset mvtec --class-name transistor
python eval_WinCLIP.py --dataset mvtec --class-name wood
python eval_WinCLIP.py --dataset mvtec --class-name zipper

5. 测试结果

3.1 测试基础信息

本次实验基于WinCLIP模型,在MVTec数据集的多个类别上进行异常检测评估,核心实验参数统一如下:
•	数据集:mvtec
•	图像预处理:img_resize=240,img_cropsize=240,resolution=400
•	训练/测试参数:batch_size=128,vis=True,load_memory=True,cal_pro=False,k_shot=0,scales=(2, 3)
•	模型配置:backbone=ViT-B-16-plus-240,pretrained_dataset=laion400m_e32,gpu_id=0,use_cpu=0
•	融合版本:textual_visual,grid_size=(15, 15)

3.2 测试结果汇总

表 2 测试结果对比

排名类别类型图片数推理(s)速度(张/s)i_rocp_roci_f1p_f1
1bottle物体83342.4498.9789.9897.652.72
2leather纹理124413.0297.9697.7596.1731.73
3wood纹理79302.6392.0290.0791.5339
4zipper物体151443.4389.0592.0490.6231.19
5carpet纹理117443.4381.5891.1989.2334.43
6pill物体167443.4376.9589.1792.1127.27
7tile纹理117443.4375.971.5685.5625.43
8hazelnut物体110443.4374.2996.1479.4942.37
9transistor物体100443.4371.8870.9866.6718.42
10screw物体160443.4364.8990.0785.39.13
11toothbrush物体42443.436088.0583.8712.91
12capsule物体132443.4354.3384.2890.469.95
13grid纹理78443.4349.2975.0985.718.34
14cable物体150443.4344.4349.2776.355.75
15metal_nut物体115443.4342.4244.3489.4222.61

3.3测试结论

1、	整体表现: WinCLIP在15个类别上平均i_roc达到71.60%,零样本设置下表现良好
2、	类别差异大: 最佳与最差差距达56.55%,说明不同类别适用性差异显著
3、	纹理优于物体: 纹理类平均i_roc(79.35%)显著高于物体类(67.72%)
4、	效率稳定: 平均推理速度约3张/秒,与图片数量呈正相关