Anomalib库安装以及使用

news2024/12/23 9:45:01

Anomalib: A Deep Learning Library for Anomaly Detection
PDF:https://arxiv.org/pdf/2202.08341.pdf
代码:https://github.com/openvinotoolkit/anomalib

1 概述

Anomalib是一个专注于异常检测的深度学习库。它的目标是收集最新的异常检测算法,并提供用于在公共和私有数据集上进行基准测试的工具。该库提供了一系列已实现的异常检测算法,这些算法在最近的文献中有所描述。此外,Anomalib还提供了一套工具,方便开发人员开发和实现自定义模型。该库特别注重基于图像的异常检测,旨在识别数据集中的异常图像或图像中的异常像素区域。通过使用Anomalib,用户可以快速构建和评估各种异常检测算法,以满足其特定需求。

2 安装

Clone the Repository

git clone https://github.com/openvinotoolkit/anomalib.git
cd anomalib

2-1 Windows

Install the Packages

python -m pip install --upgrade pip wheel setuptools
pip install -r .[full]

2-2 Ubuntu

Install the Packages

python -m pip install --upgrade pip
pip install wheel setuptools
pip install -r requirements.txt

2-3 CentOS

Install the Packages

python -m pip install --upgrade pip
pip install -r requirements.txt

3 Training

每个模型都有自己的配置文件config.yaml,其中包含数据、模型和训练可配置参数。模型训练时需要指定配置文件。

python tools/train.py --config <path/to/model/config.yaml>

或者

python tools/train.py --model stfpm

4 Inference

推理相关参数
在这里插入图片描述

4-1 PyTorch (Lightning) Inference

python tools/inference/lightning.py --config padim.yaml --weights results/weights/model.ckpt --input image.png

更改推理时的阈值,只需将metrics.threshold.method为manual,并在metrics.threshold.manual_image和metrics.threshold.manual_pixel中指定自定义阈值。

  threshold:
    method: manual #options: [adaptive, manual]
    manual_image: null
    manual_pixel: null

4-2 OpenVINO Inference

OpenVINO IR导出时同时会生成 metadata.json文件,OpenVINO 推理时,需要一并指定。

python tools/inference/openvino.py --weights results/openvino/model.xml --input image.png --metadata results/openvino/metadata.json

4-3 Gradio Inference

python tools/inference/gradio_inference.py \
    --weights ./results/padim/mvtec/bottle/weights/model.ckpt

或者

python python tools/inference/gradio_inference.py \
    --weights ./results/padim/mvtec/bottle/openvino/openvino_model.onnx \
    --metadata ./results/padim/mvtec/bottle/openvino/metadata.json

5 Export && Optimization

将以下配置添加到您的config.yaml文件中,在训练后,模型将导出为OpenVINO IR

optimization:
  export_mode: openvino

如果只导出ONNX格式

optimization:
  export_mode: onnx

Anomalib支持OpenVINO的神经网络压缩框架(NNCF),以进一步提高导出的OpenVINO模型的性能。NNCF在训练过程中优化异常模型的神经网络组件,因此可以实现比后训练方法更好的性能-准确性平衡。

要启用NNCF,请将以下配置添加到您的config.yaml文件中

optimization:
  nncf:
    apply: true

注意: 当前只有STFPM模型支持NNCF

6 Benchmarking

为了增加实验跟踪和优化的功能,Anomalib还包括了一个基准测试脚本,用于收集不同模型、参数和数据集类别组合的结果。模型的性能和吞吐量将被记录到一个CSV文件中,该文件也可以用作跟踪模型漂移的手段。
在CPU和GPU上计算了Padim和STFPM模型对自定义文件夹数据集的两个类别的吞吐量和性能指标的配置文件如下:

seed: 42
compute_openvino: false
hardware:
  - cpu
  - gpu
writer:
  - comet
  - wandb
  - tensorboard
grid_search:
  dataset:
    category:
      - colour
      - crack
    image_size: [128, 256]
  model_name:
    - padim
    - stfpm

compute_openvino 是否使用openvino推理;
writer: [] 只记录csv文件,不记录日志;

使用自定义数据集

seed: 42
compute_openvino: false
hardware:
  - cpu
  - gpu
writer:
  - comet
  - wandb
  - tensorboard
grid_search:
  dataset:
    name: hazelnut
    format: folder
    path: path/hazelnut_toy
    normal_dir: good # name of the folder containing normal images.
    abnormal_dir: colour # name of the folder containing abnormal images.
    normal_test_dir: null
    task: segmentation # classification or segmentation
    mask: path/hazelnut_toy/mask/colour
    extensions: .jpg
    split_ratio: 0.2
    category:
      - colour
      - crack
    image_size: [128, 256]
  model_name:
    - padim
    - stfpm

运行

python tools/benchmarking/benchmark.py --config <relative/absolute path>/<paramfile>.yaml

7 Logging

Anomalib提供了多种机制来记录指标和预测的掩码。

7-1 启用日志记录

启用单个

logging:
    logger: "tensorboard"

或者启用多个

logging:
  logger: [comet, tensorboard, wandb]
  log_graph: false

7-2 记录图像

通过在可视化部分设置log_images: True,Anomalib允许您将预测结果保存到文件系统中。这将使您能够将预测结果保存为图像文件,以便后续分析和查看。

visualization:
  show_images: False # show images on the screen
  save_images: False # save images to the file system
  log_images: True # log images to the available loggers (if any)
  image_save_path: null # path to which images will be saved
  mode: full # options: ["full", "simple"]

logging:
  logger: [comet, tensorboard, wandb]
  log_graph: false

7-3 记录模型图

在模型配置文件的logging参数下设置log_graph为True,您可以更轻松地将模型图记录到Comet、TensorBoard或Weights and Biases。

logging:
  logger: [comet, tensorboard]
  log_graph: true

8 Hyperparameter Optimization

默认配置的模型并不总能适用于新的数据集。此外,为了提高性能,需要调整/选择学习率、优化器、激活函数等,以确定最佳的超参数组合,Anomalib支持使用Comet或weights and biases进行超参数优化。

8-1 YAML 文件

在tools/hpo/configs/comet.yaml中提供了一个使用Comet进行超参数优化的示例配置文件,如下所示:

algorithm: "bayes"
spec:
  maxCombo: 10
  metric: "image_F1Score"
  objective: "maximize"
parameters:
  dataset:
    category: capsule
    image_size:
      type: discrete
      values: [128, 256]
  model:
    backbone:
      type: categorical
      values: ["resnet18", "wide_resnet50_2"]

其中 maxCombo定义要运行的实验总数。algorithm是要使用的优化方法。metric是用于评估模型性能的指标。parameters是要优化的超参数。更多参数配置需要参考 Comet文档 https://www.comet.com/docs/v2/api-and-sdk/python-sdk/introduction-optimizer/

在tools/hpo/configs/wandb.yaml中提供了一个使用Weights and Bias进行超参数优化的示例配置文件,如下所示:

observation_budget: 10
method: bayes
metric:
  name: pixel_AUROC
  goal: maximize
parameters:
  dataset:
    category: hazelnut
    image_size:
      values: [128, 256]
  model:
    backbone:
      values: [resnet18, wide_resnet50_2]

其中observation_budget定义了要运行的实验总数。method是要使用的优化方法。metric是用于评估模型性能的指标。parameters是要优化的超参数。更多参数配置需要参考Weights and Bias文档 https://docs.wandb.ai/guides/sweeps

8-2 运行 HPO

python tools/hpo/sweep.py --model padim \
  --model_config ./path_to_config.yaml \
  --sweep_config tools/hpo/configs/comet.yaml

或者

python tools/hpo/sweep.py --sweep_config tools/hpo/configs/comet.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旧版office如何卸载干净,Mac电脑移除office教程

版office卸载不干净导致无法激活新版Microsoft office&#xff0c;这个问题如何解决呢&#xff1f;深受这一烦恼的小伙伴看过来&#xff01; 旧版office由于证书一直清理不干净&#xff0c;电脑上有旧证书存在导致新版offce激活不成功&#xff0c;具体手动清理方法带给大家。 …

Makefile 神奇:驾驭编译的力量

一.make和Makefile 当谈到 make 和 Makefile 时&#xff0c;通常是指构建工具 make 和用于描述编译和构建过程的文本文件 Makefile。 make 是一个在类Unix系统中广泛使用的构建工具。它基于文件的时间戳比较&#xff0c;只编译发生了变化的文件&#xff0c;从而提高了编译效率…

软考和PMP哪个含金量更高?

软考中&#xff0c;能和pmp一起来比较的是软考高项&#xff0c;软考高级信息系统项目管理师&#xff0c;和PMP的共同点&#xff0c;基本来说都是项目管理类的证书。本质也都是适用于项目经理岗位的证书&#xff0c;软考高项中大部分考试内容是PMPIT技术两部分&#xff0c;其中项…

JDK19特性

文章目录 JAVA19概述1. 记录模式(预览版本)2.Linux/RISC-V 移植3.外部函数和内存 API &#xff08;预览版&#xff09;4.虚拟线程(预览版)5.Vector API &#xff08;第四次孵化&#xff09;6.Switch 模式匹配&#xff08;第三预览版&#xff09;7.结构化并发&#xff08;孵化阶…

uniapp视频播放功能

UniApp提供了多种视频播放组件&#xff0c;包括视频播放器&#xff08;video&#xff09;、多媒体组件&#xff08;media&#xff09;、WebView&#xff08;内置Video标签&#xff09;等。其中&#xff0c;video和media组件是最常用的。 video组件 video组件是基于HTML5 vide…

北工大汇编——子程序设计

题目要求 完成一个字母或数制之间的转化程序&#xff0c;主程序分别具有 5种可选择的子功能&#xff0c;按相应的宇符可分别进入相应的子功能并在屏幕上显示结果&#xff0c;按“q”键退出。子功能分别为&#xff1a; 1&#xff09; 实现小写字母向大写字母的转换&#xff1b;…

Cesium与Threejs融合

融合demo 一、简介 将Cesium与three.js进行融合,从而是3d具备大场景GIS能力,使GIS具备3d能力。 关键步骤如下: 1、局部坐标系定义和坐标转换 2、相机同步 3、事件同步 二、代码 <script setup lang="ts"> import { onMounted } from vue import @ano…

批量剪辑的视频重复率高怎么去重?有可以批量剪出原创视频、脚本创作、矩阵分发的软件推荐吗?

对于批量剪辑生成的视频&#xff0c;大多朋友都会为重复率发愁&#xff0c;速度是快了&#xff0c;但是视频都是重复的&#xff0c;发出去效果不好又有什么用呢&#xff1f; 网上也能看到许多人提出&#xff0c;对素材进行改变&#xff0c;比如更换不一样的BGM&#xff0c;修改…

【MongoDB】docker部署社区版(一)

0、背景介绍 项目中使用MongoDB了&#xff0c;服务器挂掉&#xff0c;自己在本地搭一个试试。 1、版本选择 首先有社区版和和商业版。我选的是社区版。链接&#xff1a;https://hub.docker.com/r/mongodb/mongodb-community-server/tags 1.1、标签选择 看到标签有两个大类…

23 DRF快速入门+部分源码分析

文章目录 前言知识前后端不分离前后端分离RESTful APIHTTP请求方法详解部分状态码&#xff08;常见&#xff09; Django补充知识创建多个app 安装安装完后的配置 Drf框架介绍相比于Django的优势基础介绍--快速入门--了解框架的大概实现Serializers基础准备编写Serializers.py 以…

S1FD40A180H-ASEMI快恢复二极管S1FD40A180H

编辑&#xff1a;ll S1FD40A180H-ASEMI快恢复二极管S1FD40A180H 型号&#xff1a;S1FD40A180H 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 特性&#xff1a;大功率、快恢复二极管 正向电流&#xff1a;40A 反向耐压&#xff1a;1800V 恢复时间&#xff1a;<300n…

【全志V3s】SPI NAND Flash 驱动开发

文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot&#xff08;官方的Uboot&#xff09;先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash o…

Windows的远程桌面 Server+frp 配置

前言 通过华为云耀服务器给的优惠&#xff0c;购买了一个镜像实例&#xff0c;用来配置远程桌面服务&#xff0c;采用frp进行内网穿透&#xff0c;云服务环境为Ubuntu22.04。 配置 1.服务器端frp配置 cd /usr/local # 进入默认的程序安装路径 wget clone https://github…

前端VUE---JS实现数据的模糊搜索

实现背景 因为后端实现人员列表返回&#xff0c;每次返回的数据量在100以内&#xff0c;要求前端自己进行模糊搜索 页面实现 因为是实时更新数据的&#xff0c;就不需要搜索和重置按钮了 代码 HTML <el-dialogtitle"团队人员详情":visible.sync"centerDi…

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

Amazon Lightsail 是亚马逊云科技提供的一种易上手使用、月度价格经济实惠&#xff0c;并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择&#xff0c;可选择包含多种操作系统&#xff08;Linux/Windows 等&#xff09;或操作系统加上典型应…

使用Python来写模拟Xshell实现远程命令执行与交互

一、模块 这里使用的是 paramiko带三方库 pip install paramiko二、效果图 三、代码实现&#xff08;这里的IP&#xff0c;用户名&#xff0c;密码修改为自己对应服务器的&#xff09; import paramiko import timeclass Linux(object):# 参数初始化def __init__(self, ip, us…

vue项目打包_以生产环境prod模式打包_vue-cli-service 不是内部或外部命令,也不是可运行的程序---vue工作笔记0025

打开命令行: 首先执行npm install 不执行会报错: npm run build:prod --scripts-prepend-node-pathauto 然后再这样执行就是以生产环境模式打包了.

leetcode1669. 合并两个链表(java)

合并两个链表 题目描述指针代码演示 题目描述 难度 - 中等 leetcode1669. 合并两个链表 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色…

Python实现猎人猎物优化算法(HPO)优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

sql explain

目录 1. sql explain每个字段对应的含义1.1. id1.2. select_type1.3. table1.4. partitions1.5. type1.6. possible_keys1.7. key1.8. key_len1.9. ref1.10. rows1.11. Extra 索引实践联合索引最左列原则全值匹配不建议在索引列上做任何操作, 否则索引会失效转而全表扫描尽量使…