当前位置: 首页 > news >正文

异常检测patchcore 学习笔记 2025

目录

patchcore

原理介绍:

工业零件异常检测

PatchCore 做缺陷检测,不同的光线,角度,反光,偶尔有遮挡 都能处理吗

✅ PatchCore 能处理的情况

1. 不同光线条件 ⚡

2. 不同角度 📐

3. 反光问题 ✨

❌ PatchCore 的局限性

4. 偶尔遮挡 🚫

异常动作检测


patchcore

星星更多:

https://github.com/amazon-science/patchcore-inspection

https://github.com/hcw-00/PatchCore_anomaly_detection

原理介绍:

https://blog.csdn.net/m0_37302966/article/details/147143120

工业零件异常检测

经典的 PatchCore 及其直接变体在处理刚性物体(如工业零件)时表现出色,正是因为它们有统一的标准、外观变化有限、纹理和结构稳定。但当应用到“人类动作”这种非刚性、高方差、充满语义变化的场景时,会面临巨大的挑战,核心矛盾就在于 “无法收集所有正确的样本”

PatchCore 做缺陷检测,不同的光线,角度,反光,偶尔有遮挡 都能处理吗

您提出了一个非常关键的问题!PatchCore 在这些挑战性场景下的表现需要仔细分析:

✅ PatchCore 能处理的情况

1. 不同光线条件 ⚡

处理能力:中等

  • ✅ 如果训练集包含了足够的光线变化样本

  • ✅ 对亮度变化有一定的鲁棒性(特征相对不变性)

  • ✅ 可以通过数据增强改善

python

# 增强训练数据的光线多样性
def augment_lighting_variation(normal_images):augmented = []for img in normal_images:# 亮度调整augmented.append(adjust_brightness(img, ±30%))# 对比度调整  augmented.append(adjust_contrast(img, ±20%))# 伽马校正augmented.append(gamma_correction(img, [0.7, 1.3]))return augmented

2. 不同角度 📐

处理能力:较好

  • ✅ 基于局部特征匹配,对角度变化有一定容忍度

  • ✅ 如果训练集包含多角度样本,效果更好

  • ⚠️ 大角度变化可能被视为异常

3. 反光问题 ✨

处理能力:有限

  • ⚠️ 强烈反光可能被误判为异常

  • ✅ 可以通过预处理减少影响

  • ✅ 如果反光模式一致,可能被学习为正常

❌ PatchCore 的局限性

4. 偶尔遮挡 🚫

处理能力:较差

  • ❌ 遮挡会被直接检测为异常

  • ❌ 无法区分"真实缺陷"和"临时遮挡"

  • ❌ 需要后处理或额外逻辑处理

异常动作检测

import torch
import torch.nn as nn
from sklearn.neighbors import NearestNeighbors
import numpy as np# 1. 加载预训练的特征提取器 (例如 I3D)
feature_extractor = load_pretrained_i3d_model().eval().to(device)# 2. 构建记忆库 - 训练阶段
memory_bank = [] # 用来存储所有正常特征with torch.no_grad():for normal_video_batch in normal_train_dataloader:# normal_video_batch shape: (B, C, T, H, W)features = feature_extractor(normal_video_batch.to(device)) # 提取特征# 对特征进行重塑和采样 (例如, 取时空维度上的所有点)features = features.permute(0, 2, 3, 4, 1).reshape(-1, features.size(1)) # (B*T*H*W, C)memory_bank.append(features.cpu().numpy())memory_bank = np.vstack(memory_bank)
# 对 memory_bank 进行 Coreset 采样,得到一个小而精的记忆库
# sampled_memory_bank = coreset_sampling(memory_bank, n_samples=10000)# 构建 KNN 模型
knn_model = NearestNeighbors(n_neighbors=1, algorithm='auto', metric='cosine').fit(sampled_memory_bank)# 3. 异常检测 - 推理阶段
def predict_anomaly(video_clip):with torch.no_grad():test_feature = feature_extractor(video_clip.to(device))test_feature = test_feature.permute(0, 2, 3, 4, 1).reshape(-1, test_feature.size(1)).cpu().numpy()distances, indices = knn_model.kneighbors(test_feature)anomaly_score = np.max(distances) # 取最大距离作为异常分数if anomaly_score > threshold:return "Anomaly", anomaly_scoreelse:return "Normal", anomaly_score

http://www.dtcms.com/a/389596.html

相关文章:

  • [iOS] 网络 - AFNetWorking
  • iOS App 混淆与性能稳定性优化 混淆开销、崩溃风险、CI 集成与落地实务(
  • Freertos系统(任务挂起和恢复)
  • Git更新仓库时,忽略指定文件
  • 告别“瞎练”!数据闭环正成机器人智能进化核心引擎!
  • 基于MATLAB的无人机遥感数据预处理与农林植被性状估算
  • MATLAB基于AHP-模糊综合评价法的工程实践能力评价
  • 特征选择+优化算法+GBDT+SHAP分析!ReliefF-CPO-GBDT分类预测结合SHAP可解释分析MATLAB
  • 设计模式-外观模式详解
  • 《FastAPI零基础入门与进阶实战》第19篇:消息管理
  • 类和对象(下):static成员、友元类、内部类、匿名对象、优化——对象拷贝时的编译器优化
  • 虚拟线程(Virtual Thread)
  • 1688 店铺全商品接口技术全解:从页面解析到分页采集的完整实现方案
  • 日志轮转策略针对香港VPS存储空间的设置标准
  • 线性分组码及其相关概念
  • JWT的工作流程
  • Java 25 新特性 更简洁、更高效、更现代
  • 探讨前端与后端的安全策略:保护用户数据的关键措施
  • 如何使用DeepSeek等AI工具来帮助自己的工作
  • 灵途科技亮相CIOE2025 | 光电感知赋能具身智能升级
  • 我的云端影院:LibreTV+cpolar的异地观影记
  • NW748NW765美光固态闪存NW775NW781
  • 软考中级习题与解答——第八章_计算机网络(1)
  • Playwright 完全指南:从入门到实战,解锁自动化测试新范式
  • OpenCV:直接用NV21/NV12格式,画线、贴图都是相加效果,而不是替换、覆盖
  • MCP3421与STM32电压采集实现
  • 表白网页制作免费网站制作 表白网站建设教程
  • 嵌入式Linux C语言程序设计一、二
  • cocos做简单自动发射追踪子弹 切换敌人
  • C#知识学习-014(修饰符_3)