Anomalib实战之一:自定义数据集

Anomalib支持多种格式的数据集,包括MVTec AD和BeanTech等最先进的异常检测基准数据集。对于希望在自定义数据集上使用该库的用户,anomalib还提供了一个Folder datamodule,可以从文件系统的文件夹中加载数据集。本文的目的是使用Folder datamodule在自定义数据集上训练anomalib模型。这将使用户能够灵活地使用anomalib来处理各种类型的数据,并进行异常检测任务。

本文中,我们将使用榛果玩具数据集。该数据集包含多个文件夹,每个文件夹包含一组图像。colour和crack文件夹代表两种缺陷。本文忽略mask文件夹。anomalib将使用colour文件夹中的所有图像作为验证数据集的一部分,然后随机划分good文件夹图像用于训练和验证。

Step 1: 安装Anomalib

pip install anomalib

Step 2: 搜集自定义数据

Anomalib支持多种图像扩展名,如".jpg"、“.jpeg”、“.png”、“.ppm”、“.bmp”、“.pgm”、“.tif”、“.tiff"和”.webp"。可以从具有任何这些扩展名的图像中收集数据集。

Step 3: 格式化数据

根据使用情况和收集方式,自定义数据集可以具有不同的格式:

  1. 包含好的和坏的图像的数据集。
  2. 包含好的和坏的图像以及用于像素级评估的掩码真值的数据集。
  3. 包含好的和坏的图像,并已经分为训练集和测试集的数据集。

anomalib的Folder datamodule可以处理这些用例。

Step 4: 修改配置文件

要运行Anomalib的训练,需要一个YAML配置文件。训练配置参数分为5个部分:数据集(dataset)、模型(model)、项目(project)、日志(logging)和训练器(trainer)。Anomalib中使用自定义数据集,只需要更改配置文件中的数据集部分即可。

这里选择Padim算法,复制示例配置文件并修改数据集部分。

cp anomalib/models/padim/config.yaml custom_padim.yaml

4-1 classification

数据目录

Hazelnut_toy
├── colour
│  ├── 00.jpg
│  ├── 01.jpg
│  ...
├── good
│  ├── 00.jpg
│  ├── 01.jpg
│  ...

分类数据集没有ground truth的二值化掩膜(mask),因此需要将task字段设置为classification而不是segmentation。同时将metrics部分的pixel部分注释掉。

# Replace the dataset configs with the following.
dataset:name: hazelnutformat: folderpath: ./datasets/hazelnut_toynormal_dir: good # name of the folder containing normal images.abnormal_dir: colour # name of the folder containing abnormal images.mask: null # optionalnormal_test_dir: null # name of the folder containing normal test images.task: classification # classification or segmentationextensions: nullsplit_ratio: 0.2 # ratio of the normal images that will be used to create a test splitimage_size: 256train_batch_size: 32test_batch_size: 32num_workers: 8normalization: imagenet # data distribution to which the images will be normalized: [none, imagenet]test_split_mode: from_dir # options: [from_dir, synthetic]val_split_mode: same_as_test # options: [same_as_test, from_test, sythetic]val_split_ratio: 0.5 # fraction of train/test images held out for validation (usage depends on val_split_mode)transform_config:train: nullval: nullcreate_validation_set: truetiling:apply: falsetile_size: nullstride: nullremove_border_count: 0use_random_tiling: Falserandom_tile_count: 16...metrics:image:- F1Score- AUROC
#  pixel:
#    - F1Score
#    - AUROCthreshold:method: adaptive #options: [adaptive, manual]manual_image: nullmanual_pixel: null

注意:每个dir值可以以列表的形式输入多个文件夹

4-2 segmentation

Anomalib不仅可以对零件进行缺陷分类,还可以用于缺陷分割。要实现这一点,只需在与good和colour文件夹相同的目录级别上添加一个名为mask的文件夹。该文件夹应包含colour文件夹中缺陷的二进制图像。
数据目录

Hazelnut_toy
├── colour
│  ├── 00.jpg
│  ├── 01.jpg
│  ...
├── good
│  ├── 00.jpg
│  ├── 01.jpg
└── mask
├── 00.jpg
├── 01.jpg
...

在配置文件中填充mask字段,并将任务更改为segmentation,即可使用Anomalib对缺陷进行分割。

# Replace the dataset configs with the following.
dataset:name: hazelnutformat: folderpath: ./datasets/hazelnut_toynormal_dir: good # name of the folder containing normal images.abnormal_dir: colour # name of the folder containing abnormal images.mask: mask # optionalnormal_test_dir: null # name of the folder containing normal test images.task: segmentation # classification or segmentationextensions: nullsplit_ratio: 0.2 # ratio of the normal images that will be used to create a test splitimage_size: 256train_batch_size: 32test_batch_size: 32num_workers: 8normalization: imagenet # data distribution to which the images will be normalized: [none, imagenet]test_split_mode: from_dir # options: [from_dir, synthetic]val_split_mode: same_as_test # options: [same_as_test, from_test, sythetic]val_split_ratio: 0.5 # fraction of train/test images held out for validation (usage depends on val_split_mode)transform_config:train: nullval: nullcreate_validation_set: truetiling:apply: falsetile_size: nullstride: nullremove_border_count: 0use_random_tiling: Falserandom_tile_count: 16...metrics:image:- F1Score- AUROCpixel:- F1Score- AUROCthreshold:method: adaptive #options: [adaptive, manual]manual_image: nullmanual_pixel: null

Step 5: 训练

python tools/train.py --config custom_padim.yaml

Step 6: 可视化

6-1 Logging and Experiment Management

Anomalib提供了几种记录和跟踪实验的方式。这些可以单独或组合使用。
如要选择保存预测图像的结果,请将配置文件中可视化部分的log_images参数更改为true。

results
└── padim└── Hazelnut_toy├── images│   ├── colour│   │   ├── 00.jpg│   │   ├── 01.jpg│   │   └── ...│   └── good│       ├── 00.jpg│       ├── 01.jpg│       └── ...└── weights└── model.ckpt

6-2 Logging to Tensorboard and/or W&B

要使用TensorBoard和/或W&B记录器和/或Comet记录器,请确保在配置文件的日志部分将logger参数设置为comet、tensorboard、wandb或[tensorboard,wandb]。下图显示了保存到TensorBoard的示例配置。

visualization:show_images: False # show images on the screensave_images: False # save images to the file systemlog_images: True # log images to the available loggers (if any)image_save_path: null # path to which images will be savedmode: full # options: ["full", "simple"]logging:logger: [comet, tensorboard, wandb] #Choose any combination of these 3log_graph: false

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

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

相关文章

SQL 注入漏洞攻击

文章目录 1. 介绍2. 无密码登录3. 无用户名无密码登录4. 合并表获取用户名密码 1. 介绍 假设你用自己的用户名和密码登录了一个付费网站,网站服务器就会查询一下你是不是 VIP 用户,而用户数据都是放在数据库中的,服务器通常都会向数据库进行查…

SprimgMVC增删改查·

1.项目创建 在IDEA创建一个maven项目 2.项目依赖 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.ap…

二维多孔介质图像的粒度分布研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

(echarts)解决echarts图表适配窗口的大小

(echarts)解决echarts图表适配窗口的大小 解决方法&#xff1a; // 为窗口加上宽度变化事件&#xff0c;当宽高发生改变时&#xff0c;调用echarts的resize()方法&#xff0c;调整图表尺寸 window.addEventListener("resize", function () {myChart.resize(); });示…

什么是“path”环境变量?path的作用是什么?

必应回答&#xff1a; path的作用是指定系统在执行命令或程序时&#xff0c;可以在哪些文件夹中查找。path是一种环境变量&#xff0c;它的值是由多个文件夹路径组成的&#xff0c;用分号分隔。例如&#xff0c;如果path的值是C:\Windows;C:\Python;C:\Program Files\Java\bin…

Gartner 2023API管理市场指南重磅发布,得帆云iPaaS标杆入榜

中国API管理-市场指南 Market Guide for API Management, China 是由全球最具权威的IT咨询与研究机构Gartner发布、聚焦中国API管理市场领域的专业研究报告&#xff0c;通过对市场概况以及代表厂商的分析&#xff0c;为企业决策者提供重要依据与参考。 得帆云iPaaS融合集成平台…

FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx

FPGA-结合协议时序实现UART收发器&#xff08;四&#xff09;&#xff1a;串口驱动模块uart_drive、例化uart_rx、uart_tx 串口驱动模块uart_drive、例化uart_rx、uart_tx&#xff0c;功能实现 文章目录 FPGA-结合协议时序实现UART收发器&#xff08;四&#xff09;&#xff1…

蓝桥杯官网练习题(灌溉)

题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管&#xff0c;打开时&#xff0c;有出水管的位置可以被认为已经灌溉好。 每经过一分钟&#xff0c;水就会向四面扩展…

【MySQL系列】MySQL的用户管理

「前言」文章内容大致是MySQL的用户管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、用户管理1.1 用户信息1.2 创建新用户1.3 删除用户1.4 修改用户密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 一、用户管理 MySQL与Linux类似&#x…

NAT(网络地址转换)

文章目录 一、产生背景二、公有地址和私有地址三、定义四、分类五、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、产生背景 IPv4公网地址资源耗尽&#xff1a; 由于IPv4地址空间有限&#xff0c;公网IPv4地址资源逐渐耗尽&#xff0c;导致难以分…

基于Android的生鲜农产品商城交易设计与实现

摘 要 人们生活水平随着发展不断的提升&#xff0c;人们对生鲜产品消费比越来越依赖&#xff0c;都希望吃到新鲜的食品。消费的加大给生鲜了全新的供应链及销售模式&#xff0c;那种传统的生鲜配送模式也在发生着变化。生鲜系统电商平台在我国目前是属于盛行的电商行业&#x…

分布式锁的3种实现!附代码

分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题&#xff0c;所以我们本文就重点来看分布式锁的具体实现&#xff08;含实现代码&#xff09;。 在分布式系统中&#xff0c;由于各个节点之间的网络通信延迟、故障等原因…

如何将pdf文件变小?三招学会pdf文件压缩

在日常工作和生活中&#xff0c;我们常常需要处理大量的PDF文件&#xff0c;然而&#xff0c;有时候这些文件的大小会成为问题&#xff0c;比如文件太大无法通过邮件发送、在线上传&#xff0c;或者在手机上打开时读取缓慢等&#xff0c;为了解决这些问题&#xff0c;我们需要将…

PN结解释

基本原理 PN结由P和N组成 硅掺杂硼&#xff0c;缺少电子&#xff0c;显正电&#xff0c;就是P&#xff08;Positive&#xff09; 硅掺杂磷&#xff0c;多出电子&#xff0c;显负电&#xff0c;就是N&#xff08;Negative&#xff09; 将P和N拼接 左边代表游离的电子&#xf…

flex布局学习笔记

flex布局 推荐网址&#xff1a;弹性框完整指南 |CSS-Tricks - CSS-Tricks 基础知识和术语 由于flexbox是一个完整的模块&#xff0c;而不是一个单一的属性&#xff0c;它涉及很多事情&#xff0c;包括它的整套属性。其中一些应该在容器&#xff08;父元素&#xff0c;称为“…

这些嵌入式系统安全性的知识你需要了解

这可能是 工程师在面对嵌入式系统应用程序的安全性时可能提出的第一个问题。 不幸的是&#xff0c;有大量的“安全软件包”可用&#xff0c;并且对安全性不熟悉的嵌入式工程师可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具&#xff0c;而病毒扫描程序从技术上…

Python爬虫实现(requests、BeautifulSoup和selenium)

Python爬虫实现&#xff08;requests、BeautifulSoup和selenium&#xff09; requests实现 Python requests 是一个常用的 HTTP 请求库&#xff0c;可以方便地向网站发送 HTTP 请求&#xff0c;并获取响应结果。 下载requests库 pip install requests 实例&#xff1a; # 导…

基于Android系统图书管理系统

摘要 随着移动终端使用率的快速增加&#xff0c;Android智能产品已日益成为越来越多的人们选择的移动终端产品。伴随着Android智能手机与平板电脑已经在我们生活大量的使用&#xff0c;越来越多的基于Android开发平台的应用也随之产生。 便捷的图书检索和借阅&#xff1a;用户可…

ACL(访问控制列表)

文章目录 一、ACL定义常见功能 二、基于ACL的包过滤定义包过滤的方向包过滤的工作流程注意事项 三、ACL分类四、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、ACL 定义 ACL&#xff0c;也称为访问控制列表&#xff0c;是一种网络安全工具&…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…