万盛集团网站建设在网站留外链怎么做
万盛集团网站建设,在网站留外链怎么做,拼车网站开发,如何让移动网站更优秀针对 MVTec AD 数据集运行 DINOv3 的测试代码#xff0c;核心思路是利用 DINOv3 提取预训练特征#xff0c;然后通过 K-Nearest Neighbors (KNN) 或 Mahalanobis 距离来衡量测试样本与正常样本之间的差异。以下是一个基于 Python 和 PyTorch 的完整实操流程#xff1a;一、 …针对 MVTec AD 数据集运行 DINOv3 的测试代码核心思路是利用DINOv3 提取预训练特征然后通过K-Nearest Neighbors (KNN)或Mahalanobis 距离来衡量测试样本与正常样本之间的差异。以下是一个基于 Python 和 PyTorch 的完整实操流程一、 数据集准备确保你的 MVTec AD 目录结构如下以bottle为例mvtec_ad/└── bottle/├── train/ # 仅包含正常样本 (用于构建特征库)│ └── good/├── test/ # 包含正常和各类缺陷样本 (用于验证)│ ├── good/│ ├── broken_large/│ └── ...└── ground_truth/ # 缺陷的标注掩码 (用于计算像素级精度)二、 核心测试代码实现你可以参考以下 Python 脚本实现一个简单的少样本/零样本检测器import torchimport torch.nn.functional as Ffrom torch.utils.data import DataLoaderfrom torchvision import transforms, datasetsfrom PIL import Imageimport numpy as np# 1. 加载 DINOv3 模型 (ViT-B/14)device cuda if torch.cuda.is_available() else cpumodel torch.hub.load(facebookresearch/dinov3, dinov3_vitb14).to(device)model.eval()# 2. 预处理 (注意 DINOv3 推荐 518x518 分辨率)transform transforms.Compose([transforms.Resize((518, 518)),transforms.ToTensor(),transforms.Normalize(mean(0.485, 0.456, 0.406), std(0.229, 0.224, 0.225)),])# 3. 提取特征函数def extract_features(img_path):img Image.open(img_path).convert(RGB)img_t transform(img).unsqueeze(0).to(device)with torch.no_grad():# 获取中间层特征用于空间定位features model.get_intermediate_layers(img_t, n1)[0]return features # Shape: [1, 1369, 768] (1369 是 37x37 的 patch 数量)# 4. 构建正常特征库 (Memory Bank)# 这里假设你选取 5 张正常样本 (Few-shot)train_paths [path/to/bottle/train/good/000.png, ...]memory_bank []for p in train_paths:feat extract_features(p)memory_bank.append(feat.squeeze(0)) # 存入 patch 级别特征memory_bank torch.cat(memory_bank, dim0) # [5*1369, 768]# 5. 测试单张图片test_img_path path/to/bottle/test/broken_large/000.pngtest_feat extract_features(test_img_path).squeeze(0) # [1369, 768]# 计算测试图每个 patch 与正常库中所有 patch 的最小距离# 使用余弦相似度或欧氏距离dist torch.cdist(test_feat, memory_bank) # 计算距离矩阵min_dist, _ torch.min(dist, dim1) # 寻找最接近的正常特征距离# 6. 生成异常热力图anomaly_map min_dist.reshape(37, 37).cpu().numpy()# 使用线性插值将 37x37 放大回原图尺寸三、 评估与可视化对于 MVTec AD你需要关注两个核心指标Image-level AUROC: 区分“整张图”是否有缺陷的能力。Pixel-level AUROC: 区分“哪个像素”是缺陷的能力定位精度。运行建议距离度量如果内存允许使用Mahalanobis 距离通常比欧氏距离效果更好因为它考虑了特征分布的协方差。层选择DINOv3 的深层特征语义更强但浅层特征对纹理细节更敏感。对于 MVTec 中的划痕scratches建议提取倒数第 2 层或第 3 层的特征。量化如果你打算在生产环境运行可以使用Faiss库来加速torch.cdist的检索过程。