原理分析
PatchCore 的核心思想可以概括为:"用最具代表性的正常特征,覆盖所有可能的正常模式"。它通过 "记忆" 正常样本的特征分布,来识别任何偏离这种分布的异常。

1.特征提取与库构建阶段
使用在ImageNet上预训练的CNN(如 ResNet-50)或自监督模型(如DINOv3)作为特征提取器
将正常图像分割成大小相同的局部patch,提取每个patch的深度特征
通过贪心Coreset采样算法,从数百万个原始特征中筛选出最具代表性的 1%-25%
构建一个紧凑的记忆库,用于后续的异常检测
2.异常检测阶段
● 对测试图像执行相同的patch分割和特征提取操作
● 计算每个测试patch特征与记忆库中所有特征的欧氏距离
● 取最小距离作为该patch的异常分数,距离越大表示异常程度越高
● 融合所有patch的分数生成最终的异常图和图像级异常分数
3.模型输出
● pred_score,代表整张图的异常分数
● pred_label,整张图的异常分类(OK/NG)
● anomaly_map,整张图的异常概率图
● pred_mask,正常图的预测掩码
VM部署使用方法
环境配置
①将建模好的模型权重转换为onnx模型,再用tensorrt模型转换工具转换为engine模型。
②结合VM自定义模块开发工具,将导出的C++工程封装TRT推理流程
③将模块和环境DLL文件分别安装在如C:\Program Files\VisionMaster4.3.0\Applications\Module(sp)\x64\Recognition和C:\Program Files\VisionMaster4.3.0\Applications\PublicFile\x64下,打开VM即可测试。
运行演示
第一次运行
