WinCLIP(Window-based CLIP)是一种基于视觉-语言模型 CLIP 的零样本/少样本异常检测与分割方法,由 Jeong 等人于 2023 年在 CVPR 会议上提出。 WinCLIP 利用预训练的 CLIP 模型的跨模态能力,通过滑动窗口(Sliding Window)机制提取图像的局部密集视觉特征,实现对异常的检测和定位,无需针对特定数据集进行训练。
表 1 版本配套表
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| 机器型号 | Atlas800I A2 | - |
| AI加速芯片 | 昇腾910B4 | - |
| Python | 3.11 | - |
| mindie | 2.3.0 | - |
quay.io/ascend/vllm-ascend:releases-v0.18.0 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# 拉取代码仓
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# 模型权重
https://github.com/caoyunkang/WinClip/tree/master
# 数据集
https://www.mvtec.com/company/research/datasets/mvtec-adpython 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本次实验基于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)表 2 测试结果对比
| 排名 | 类别 | 类型 | 图片数 | 推理(s) | 速度(张/s) | i_roc | p_roc | i_f1 | p_f1 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | bottle | 物体 | 83 | 34 | 2.44 | 98.97 | 89.98 | 97.6 | 52.72 |
| 2 | leather | 纹理 | 124 | 41 | 3.02 | 97.96 | 97.75 | 96.17 | 31.73 |
| 3 | wood | 纹理 | 79 | 30 | 2.63 | 92.02 | 90.07 | 91.53 | 39 |
| 4 | zipper | 物体 | 151 | 44 | 3.43 | 89.05 | 92.04 | 90.62 | 31.19 |
| 5 | carpet | 纹理 | 117 | 44 | 3.43 | 81.58 | 91.19 | 89.23 | 34.43 |
| 6 | pill | 物体 | 167 | 44 | 3.43 | 76.95 | 89.17 | 92.11 | 27.27 |
| 7 | tile | 纹理 | 117 | 44 | 3.43 | 75.9 | 71.56 | 85.56 | 25.43 |
| 8 | hazelnut | 物体 | 110 | 44 | 3.43 | 74.29 | 96.14 | 79.49 | 42.37 |
| 9 | transistor | 物体 | 100 | 44 | 3.43 | 71.88 | 70.98 | 66.67 | 18.42 |
| 10 | screw | 物体 | 160 | 44 | 3.43 | 64.89 | 90.07 | 85.3 | 9.13 |
| 11 | toothbrush | 物体 | 42 | 44 | 3.43 | 60 | 88.05 | 83.87 | 12.91 |
| 12 | capsule | 物体 | 132 | 44 | 3.43 | 54.33 | 84.28 | 90.46 | 9.95 |
| 13 | grid | 纹理 | 78 | 44 | 3.43 | 49.29 | 75.09 | 85.71 | 8.34 |
| 14 | cable | 物体 | 150 | 44 | 3.43 | 44.43 | 49.27 | 76.35 | 5.75 |
| 15 | metal_nut | 物体 | 115 | 44 | 3.43 | 42.42 | 44.34 | 89.42 | 22.61 |
1、 整体表现: WinCLIP在15个类别上平均i_roc达到71.60%,零样本设置下表现良好
2、 类别差异大: 最佳与最差差距达56.55%,说明不同类别适用性差异显著
3、 纹理优于物体: 纹理类平均i_roc(79.35%)显著高于物体类(67.72%)
4、 效率稳定: 平均推理速度约3张/秒,与图片数量呈正相关