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

Anomalib使用

Anomalib 是一个专注于视觉异常检测的开源库旨在为开发者、研究人员和工业用户提供一站式解决方案。无论是检测生产线上的产品缺陷、监控视频中的异常行为还是识别医疗影像中的病灶Anomalib 都能胜任。其设计理念是简单、模块化、高效通过直观的 API 和命令行接口CLI用户可以轻松训练模型、优化超参数并部署到边缘设备。一、trainfrom anomalib.data import MVTecAD from anomalib.models import Patchcore from anomalib.engine import Engine import os os.environ[HF_ENDPOINT] https://hf-mirror.com # 1. 准备数据 datamodule MVTecAD(root./mvtec, categorybottle) # 2. 定义模型 (例如 PatchCore) model Patchcore(backboneresnet18, pre_trainedTrue) # 3. 定义训练器 (Engine) engine Engine(max_epochs1, devices1) # 4. 训练与测试 engine.fit(modelmodel, datamoduledatamodule) results engine.test(modelmodel, datamoduledatamodule)二、inferencefrom pathlib import Path from anomalib.data import MVTecAD from anomalib.models import Patchcore from anomalib.engine import Engine import cv2 import numpy as np import os os.environ[HF_ENDPOINT] https://hf-mirror.com # 1. 准备数据 datamodule MVTecAD(root./mvtec, categorybottle) # 2. 定义模型 model Patchcore(backboneresnet18, pre_trainedTrue) # 4. 定义训练器 (将回调函数加入 Engine) engine Engine() # 5. 执行推理 # 注意predict 过程中visualizer_callback 会自动被调用 predictions engine.predict( datamoduledatamodule, modelmodel, ckpt_path./results/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt, ) # 6. 终端打印输出保留你原有的逻辑 if predictions is not None: for batch in predictions: for i in range(len(batch[image_path])): # 1. 提取路径和原始预测数据 img_path batch[image_path][i] anomaly_map batch[anomaly_map][i].cpu().numpy().squeeze() # 2. 引入 pred_label 和 pred_score # 注意Anomalib 返回的 label 通常是 Tensor需要转为 Python 原生类型 label_idx batch[pred_label][i].item() score batch[pred_score][i].item() # 将 0/1 转换为易读的文字 label_text Anomaly if label_idx else Normal # 3. 处理热力图渲染 # 归一化到 0-255 并应用伪彩色 heatmap (anomaly_map * 255).astype(np.uint8) heatmap cv2.applyColorMap(heatmap, cv2.COLORMAP_JET) # 4. 构造更有意义的文件名 # 例如Anomaly_0.9850_img_01.png file_name Path(img_path).name save_filename f{label_text}_{score:.4f}_{file_name} save_path Path(./output_images) / save_filename os.makedirs(./output_images, exist_okTrue) # 5. 保存并打印 cv2.imwrite(str(save_path), heatmap) print(fResult: {label_text} (Score: {score:.4f}) | Saved: {save_path}) print(\n所有预测图片已处理完成)在终端改变一下环境变量能够加快运行export HF_ENDPOINThttps://hf-mirror.com三、exportfrom anomalib.engine import Engine from anomalib.models import Patchcore # 以 PatchCore 为例 from anomalib.deploy import ExportType # 1. 初始化模型和训练好的权重 model Patchcore() path ./results/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt # 2. 初始化引擎 engine Engine() # 3. 导出模型 (可以选择 ExportType.ONNX 或 ExportType.OPENVINO) # 这会在你的项目目录下生成相应的模型文件如 .onnx 或 .xml/.bin exported_model_path engine.export( modelmodel, export_typeExportType.OPENVINO, # 推荐使用 OpenVINO 提高速度 ckpt_pathpath, export_rootdeploy_models/ ) print(f模型已成功导出至: {exported_model_path})pip install openvino nncfimport cv2 import os import glob from anomalib.deploy import OpenVINOInferencer from pathlib import Path # 1. 配置路径 # 输入图片文件夹路径请确保路径正确 input_folder mvtec/bottle/test/broken_large # 结果保存文件夹 output_root results/patchcore_predictions os.makedirs(output_root, exist_okTrue) # 2. 初始化推理器 inferencer OpenVINOInferencer( pathdeploy_models/weights/openvino/model.xml, deviceCPU ) # 3. 获取所有图片文件 (支持 jpg, png, jpeg) image_extensions (*.png, *.jpg, *.jpeg, *.JPG, *.PNG) image_files [] for ext in image_extensions: image_files.extend(glob.glob(os.path.join(input_folder, ext))) print(f共找到 {len(image_files)} 张图片开始处理...) # 4. 循环处理每一张图片 for img_path in image_files: # 读取图片 image cv2.imread(img_path) if image is None: print(f跳过损坏图片: {img_path}) continue # 执行推理 predictions inferencer.predict(imageimage) # 获取文件名不带路径用于保存 file_name os.path.basename(img_path) # 打印进度和得分 print(f处理中: {file_name} | 异常得分: {predictions.pred_score.item():.4f}) # --- 修正后的保存逻辑 --- if hasattr(predictions, anomaly_map): res_img predictions.anomaly_map # 1. 如果是 Tensor, 转为 Numpy if hasattr(res_img, detach): res_img res_img.detach().cpu().numpy() # 2. 核心修正去掉多余维度 (从 [1, 1, H, W] 变成 [H, W]) res_img res_img.squeeze() # 3. 归一化到 0-255 并转为 8位无符号整数 (这是 OpenCV imwrite 的标准要求) # 假设原本 score map 是 0 到 1 之间的浮点数 res_img (res_img * 255).astype(uint8) # 4. (可选) 应用伪彩色让热力图更好看 (红外检测常用) res_img cv2.applyColorMap(res_img, cv2.COLORMAP_JET) save_path os.path.join(output_root, fres_{file_name}) cv2.imwrite(save_path, res_img) print(f\n全部处理完成结果已保存至: {output_root})

相关文章:

Anomalib使用

Anomalib 是一个专注于视觉异常检测的开源库,旨在为开发者、研究人员和工业用户提供一站式解决方案。无论是检测生产线上的产品缺陷、监控视频中的异常行为,还是识别医疗影像中的病灶,Anomalib 都能胜任。其设计理念是简单、模块化、高效&…...

PP-DocLayoutV3高算力适配:FP16推理开启后显存降低30%,精度损失<0.5%

PP-DocLayoutV3高算力适配&#xff1a;FP16推理开启后显存降低30%&#xff0c;精度损失<0.5% 文档版面分析是智能文档处理流程中的关键一环&#xff0c;它负责从一张图片中识别出哪里是标题、哪里是正文、哪里是表格或图片。这就像是给文档拍一张X光片&#xff0c;把它的“…...

OpenClaw插件开发入门:为Qwen3-32B镜像编写天气查询技能

OpenClaw插件开发入门&#xff1a;为Qwen3-32B镜像编写天气查询技能 1. 为什么需要自定义技能&#xff1f; 去年冬天&#xff0c;我经常需要同时查看多个城市的天气来规划差旅行程。每次手动打开天气网站、输入城市名、对比数据的过程让我不胜其烦。直到我发现OpenClaw可以通…...

langchain核心组件1-智能体

这里写目录标题简介基础使用静态模型使用动态模型简介 langchain版本 v1.x 在此版本中&#xff0c;langchain可以创建一个智能体 基础使用 我日常使用因为是直接对话&#xff0c;所以基本上只需要以下几个组件 model&#xff1a; 定义智能体大脑&#xff0c;是大语言模型地…...

检索大赛 实验4 文心4.5结果

根据对上述文献的逐一核实&#xff08;通过Google Scholar、会议官网、期刊数据库及作者主页查询&#xff09;&#xff0c;真实存在的文献如下&#xff1a;---### **真实存在的文献**1. **"VulBERTa: A Pre-Trained Language Model for Software Vulnerability Identifica…...

毕业论文查重52%降到8%?实测 PCPASS 智能助手,这届AI降重有点东西!

论文查重&#xff0c;大概是每个毕业生都要经历的“降压药”时刻。 对着满篇通红的查重报告&#xff0c;手动改词、调换语序&#xff0c;忙活了一整天&#xff0c;结果重测还是原地踏步&#xff1f;最近被不少同学催更测评一款呼声很高的神器——PCPASS智能论文助手。今天我就…...

从服务边界到性能边界:理解 ABAP CDS View 里的窄投影及其重要性

结论先讲清楚 在 ABAP CDS 语境里,很多开发者口中的 窄投影,本质上并不是一个独立的官方语法关键字,而是一种建模策略:在 CDS projection view 这一层,只暴露某个具体业务服务真正需要的那一小部分字段、关联、行为和注解,不把底层业务对象里所有能拿到的内容一股脑端出…...

OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen

OpenClaw多模型切换&#xff1a;nanobot镜像动态加载不同规格Qwen 1. 为什么需要动态切换模型 在本地部署AI助手时&#xff0c;我发现一个痛点&#xff1a;不同任务对模型能力的需求差异很大。简单任务如整理文件、生成周报草稿&#xff0c;用7B参数模型完全够用&#xff1b;…...

Qwen2.5-7B-Instruct惊艳表现:中文古诗创作+格律校验+背景知识延伸

Qwen2.5-7B-Instruct惊艳表现&#xff1a;中文古诗创作格律校验背景知识延伸 1. 项目简介 今天要给大家介绍的是一个让人眼前一亮的大模型应用——基于Qwen2.5-7B-Instruct打造的智能对话服务。这个项目可不是普通的聊天机器人&#xff0c;而是专门为处理复杂文本任务设计的高…...

AI智能文档扫描仪轻量级优势:适用于边缘设备的部署实践

AI智能文档扫描仪轻量级优势&#xff1a;适用于边缘设备的部署实践 1. 为什么轻量级文档扫描在边缘场景中不可替代 你有没有遇到过这样的情况&#xff1a;在客户现场调试工业设备时&#xff0c;需要快速扫描一份维修手册&#xff1b;在仓库盘点时&#xff0c;要即时拍下纸质入…...

浅谈项目运行时,jvm是如何工作的

最近研究了一下项目运行时&#xff0c;jvm是如何工作的&#xff0c;按照自己的理解画的图&#xff0c;一块复习一下有不对的地方&#xff0c;欢迎大家一块讨论...

SDMatte Web化服务运维指南:supervisorctl管理与日志定位技巧

SDMatte Web化服务运维指南&#xff1a;supervisorctl管理与日志定位技巧 1. 服务概述与核心价值 SDMatte是一款专注于高质量图像抠图的AI模型&#xff0c;特别擅长处理复杂边缘和半透明物体的提取任务。该模型已经完成Web化封装&#xff0c;用户可以通过简单的网页操作完成专…...

ButtonIn:嵌入式C++轻量级按键消抖库设计与实践

1. 项目概述ButtonIn 是一个专为嵌入式系统设计的轻量级、高可靠性按键输入封装库&#xff0c;其核心定位是为 ARM Cortex-M 系列微控制器&#xff08;如 STM32、NXP LPC、Renesas RA&#xff09;上的InterruptIn硬件外设提供工业级消抖&#xff08;Debouncing&#xff09;能力…...

阿里蚂蚁Kimi连夜换引擎!混合注意力炸场,456B模型200万token秒吞,API直接打2折

混合注意力&#xff0c;一夜之间从“可选项”变成“必答题”。 阿里、蚂蚁、Kimi、小米&#xff0c;万亿参数集体换引擎&#xff0c;只为回答同一道考题&#xff1a;算力贵到肉疼&#xff0c;模型怎么活下去&#xff1f;三年前&#xff0c;GPT-3用1750亿参数教会世界“大力出奇…...

YOLO X Layout实战:从扫描PDF中自动提取标题与表格的Python实现

办公室最头疼的工作之一就是处理扫描版PDF&#xff1a;不管是合同、审计报告、论文还是发票&#xff0c;扫描版的PDF都是图片&#xff0c;没法复制文本&#xff0c;要提取里面的标题、目录、表格&#xff0c;只能手动敲&#xff0c;几十页的PDF要花几个小时&#xff0c;特别浪费…...

STM32模拟UART实现技术详解

基于STM32的UART模拟实现技术解析1. UART通信基础原理1.1 异步串行通信基础通用异步收发器(UART)作为一种经典的串行通信方式&#xff0c;通过逐位传输实现数据通信。其核心优势在于传输线少、成本低&#xff0c;但相对并行通信速度较慢。异步通信模式下&#xff0c;收发双方的…...

鸿蒙 HarmonyOS 6 | 网络请求超时重试与弱网适配深度解析

文章目录前言一、网络请求的底层机制与超时配置二、超时重试的核心原理与代码实现三、架构优化策略总结前言 弱网环境下的网络波动极易导致应用与服务端断开连接。这不仅影响软件可用性&#xff0c;更是底层技术架构必须解决的核心问题。鸿蒙 6 在网络请求模块进行了底层架构强…...

中考真题资源合集

2024版《万唯中考真题分类》合集 文件大小: 2.2GB内容特色: 2024版万唯中考真题按考点分类&#xff0c;全科覆盖适用人群: 初三学生、教师、家长陪读备考核心价值: 刷透真题&#xff0c;精准查漏补缺&#xff0c;冲刺高分下载链接: https://pan.quark.cn/s/73347caeee74 2026…...

想在职场走得远,必须戒掉弱者心态

想在职场走得远&#xff0c;必须戒掉弱者心态前言抱怨者心态&#xff1a;错永远在外部依赖者心态&#xff1a;永远在被动等待逃避者心态&#xff1a;用无视应对问题如何建立强者心态许多人在职场受挫&#xff0c;习惯性地指责环境、指责他人&#xff0c;唯独不愿审视自身。他们…...

手把手教你用丹青识画:让AI为照片配上惊艳的书法描述

手把手教你用丹青识画&#xff1a;让AI为照片配上惊艳的书法描述 1. 前言&#xff1a;当AI遇见传统书法 想象一下&#xff0c;你随手拍下的风景照片&#xff0c;经过AI处理后竟变成了一幅配有优雅书法题跋的艺术作品。这就是「丹青识画」智能影像系统带来的神奇体验。作为一个…...

Charles抓取WebSocket全链路解析:从配置到实战避坑指南

Charles抓取WebSocket全链路解析&#xff1a;从配置到实战避坑指南 WebSocket协议调试一直是开发者的痛点&#xff0c;传统抓包工具难以解析其长连接特性。本文详解如何通过Charles实现WebSocket请求的捕获与分析&#xff0c;包括SSL证书配置、协议升级拦截等核心步骤&#xf…...

母版设置、讲义母版、模板设置

母版设置、讲义母版、模板设置一. 母版设置1.1 插入母版及版式1.2 重命名母版及版式1.3 版式设置1.4 例题二. 讲义母版2.1 讲义母版设置三. 模板设置3.1 导入模板3.2 例题一. 母版设置 1.1 插入母版及版式 插入母版 插入版式&#xff0c;先点击一下母版 1.2 重命名母版及版…...

华为OD面试-Java、C++、Pyhton等多语言实现-目录

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;华为OD面试 文章目录一、&#x1f340;2023A卷二、&#x1f340;2023B卷一、&#x1…...

enwork

英语口语考试(Oral English Test)作业要求Choose a topic to make an in-depth oral presentation, your topic shall be closely related to your major, your job or any project you have worked on. take a 5-minute video and submit by the 29th of March, 2026.作业提交…...

[搭建Web漏洞靶场:DVWA在CentOS上的部署]

//DVWA 是一个用来进行安全脆弱性鉴定的Web应用平台&#xff0c;可以手动调整靶机源代码的安全级别&#xff0c;包含暴力破解、命令行注入、跨站请求伪造、文件包含、文件上传、SQL注入、XSS等漏洞。&#xff08;1&#xff09;下载安装包通过网盘分享的文件&#xff1a;DVWA-ma…...

【网络安全】CSRF跨站请求伪造:从原理到防御全解析

前言 如果说XSS是利用了用户对网站的信任&#xff0c;那么CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;则是利用了网站对用户浏览器&#xff08;Cookie&#xff09;的信任。 1. 什么是CSRF&#xff1f; CSRF&#xff0c;全称Cross-Site Re…...

论文初稿不用熬!Paperzz AI 毕业论文写作:让本科生 4 步搞定万字原创文稿

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 又到毕业季&#xff0c;“写不出论文” 成了本科生朋友圈的高频吐槽&#xff1a;对着空白文档发呆几天&#x…...

解锁论文写作新范式:Paperzz AI 全流程赋能,让本科毕设从 “启动” 到 “成稿” 高效落地

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 当毕业季的钟声敲响&#xff0c;不少本科生正陷入论文写作的僵局&#xff1a;对着空白文档无从下笔、文献检索…...

网络工程师日记--企业内外网访问控制与网络架构搭建实践

前言企业网络搭建与运维中&#xff0c;合理的网络架构分层与精细化的访问控制策略是保障网络安全、提升业务可用性的核心。本文结合实际网络拓扑场景&#xff0c;从架构设计、需求分析、策略配置三个维度&#xff0c;讲解企业内网与外网的访问控制实现及网络架构搭建要点学习目…...

解锁论文写作新姿势:Paperzz AI 如何让本科毕业论文从「0 到 1」高效落地

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 当毕业论文成为毕业季的「头号难题」&#xff0c;不少本科生都在重复着低效循环&#xff1a;对着空白文档发呆…...