0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何应用Anomalib在数据集不平衡的情况下检测缺陷?

SDNLAB 来源:英特尔物联网 2023-04-03 17:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当您想进行自动缺陷检测,但数据集不平衡时,Anomalib 是一个很好的工具。

在这个示例中,我们将介绍一个令人振奋的 Dobot 机器人工业用例,其中的机械臂用于教育、工业和智能用例中。如果您没有可用的 Dobot 机器人,您可以简单地修改 notebook,避开、注释或改变机器人代码,使其为您所用。

让我们开始吧

为了解 Anomalib 的工作原理,我们将看一个检查彩色立方体的生产线。其中一些立方体会有洞或缺陷,需要从传送带上取下。由于这些缺陷在生产线上并不常见,我们将为我们的 AI 模型拍摄一些图像。

安装:

按照以下步骤使用源文件安装 Anomalib:

1.使用 Python 3.8 版本创建运行 Anomalib + Dobot DLL 的环境

对于 Windows,使用以下代码:

python -m venv anomalib_env

anomalib_envScriptsactivate

对于 Ubuntu:

python3 -m venv anomalib_env

source anomalib_env/bin/activate

2.从 GitHub 存储库中安装 Anomalib 及 OpenVINO 要求(在这篇博文中,我们将不使用 pip 安装命令):

python –m pip install –upgrade pip wheel setuptools

cd anomalib

pip install -e . [openvino]

3.安装 Jupyter Lab 或 Jupyter Notebook:

pip install notebook

pip install ipywidgets

4.然后连接您的 USB 摄像头,使用简单的摄像头应用验证它在正常工作。然后,关闭该应用。

可选:如果您可以访问 Dobot,请实施以下步骤:

1.安装 Dobot 要求。

2.检查 Dobot 的所有连接状态,并使用 Dobot Studio 验证它在正常工作。

3.将通风配件安装在 Dobot 上,并使用 Dobot Studio 验证它在正常工作。

4.在 Dobot Studio(图 2)中,点击“Home”按钮,找到:

校准坐标:立方体阵列的左上角初始位置。

位置坐标:机械臂应将立方体放在传送带上方的位置。

异常坐标:释放异常立方体的位置。

然后在 notebook 中替换这些坐标。

5.如需使用机器人运行 notebook,从这里下载 Dobot API 和驱动程序文件,并将它们添加到存储库 Anomalib 文件夹的 notebooks/500_uses_cases/dobot 中。

d7a4bfcc-cee3-11ed-bfe3-dac502259ad0.png

|图 2:Dobot Studio 界面。

注:如果没有机器人,您可以转到另一个 notebook,如 501b notebook,通过这个链接下载数据集,并在那里尝试训练和推理。

01

Notebook 的数据采集和推理

下面,我们需要使用正常的数据集创建文件夹。在这个示例中,我们创建了一个彩色立方体的数据集,并为异常情况添加一个黑色圆圈贴纸,以模拟盒子上的洞或缺陷(图 3)。对于数据采集和推理,我们将使用 501a notebook。

d7e3d928-cee3-11ed-bfe3-dac502259ad0.png

|图 3:用于第一轮训练的数据集。

在采集数据时,请务必将 acquisition 变量设置 为 True 来运行notebook,并为没有异常的数据定义“正常”文件夹,为异常图像定义“异常”文件夹。数据集将直接在 Anomalib 克隆的文件夹中创建,所以我们将看到 Anomalib/dataset/cubes 文件夹。

如果您没有机器人,您可以修改代码以保存图像或使用下载的数据集进行训练。

推理:

对于推理,acquisition 变量应该是 False,我们不会保存任何图像。我们将读取采集到的视频帧,使用 OpenVINO 运行推理,并决定放置立方体的位置:对于正常立方体,放置在传送带上;对于异常立方体,放置在传送带外。

我们需要识别采集标记 — 采集模式为 True,推理模式为 False。在采集模式下,要注意是创建正常还是异常文件夹。例如,在采集模式下,notebook 会将每张图像保存在 anomalib/datasets/cubes/{FOLDER} 中,以便进一步训练。在推理模式下,notebook 不会保存图像;它将运行推理并显示结果。

训练:

对于训练,我们将使用 501b notebook。在这个 notebook 中,我们将使用 PyTorch Lighting,并使用“Padim”模型进行训练。这种模型有几个优点:我们不需要 GPU,只用 CPU 就可以完成训练过程,而且训练速度也很快。

现在,让我们深入了解一下训练 notebook!

02

导入

在这一部分,我们将解释用于该示例的软件包。我们还将从 Anomalib 库中调用需要使用的软件包。

配置:

有两种方法来配置 Anomalib 模块,一种是使用配置文件,另一种是使用 API。最简单的方法是通过 API 查看该库的功能。如果您希望在您的生产系统中实施 Anomalib,请使用配置文件 YAML 文件,它是核心训练与测试进程,包含数据集、模型、试验和回调管理(图 4)。

在接下来的部分,我们将描述如何使用 API 配置您的训练。

d838d310-cee3-11ed-bfe3-dac502259ad0.png

|图 4:训练和验证模块。

数据集管理器:

通过 API,我们可以修改数据集模块。我们将准备数据集路径、格式、图像大小、批量大小和任务类型。然后,我们使用以下代码将数据加载到管道中。

i, data = next(enumerate(datamodule.val_dataloader()))

模型管理器:

对于异常检测模型,我们使用 Padim,您也可以使用其他 Anomalib 模型,如:CFlow、CS-Flow、DFKDE、DFM、DRAEM、FastFlow、Ganomaly Patchcore、Reverse Distillation 和 STFPM。此外,我们使用 API 设置了模型管理器;使用 anomalib.models 导入 Padim。

回调(Callbacks)管理器:

为了适当地训练模型,我们需要添加一些其他的“非基础”逻辑,如保存权重、尽早终止、以异常分数为基准以及将输入/输出图像可视化。为了实现这些,我们使用回调Callbacks。Anomalib 有自己的Callbacks,并支持 PyTorch Lightning 的本地callbacks。通过该代码,我们将创建在训练期间执行的回调列表。

训练:

在设置数据模块、模型和callbacks之后,我们可以训练模型了。训练模型所需的最后一个组件是 pytorch_lightning Trainer 对象,它可处理训练、测试和预测管道。复制链接,查看 notebook 中的 Trainer 对象示例。

验证:

我们使用 OpenVINO 推理进行验证。在之前的导入部分,我们导入了 anomalib.deploy 模块中的 OpenVINOInferencer。现在,我们将用它来运行推理并检查结果。首先,我们需要检查 OpenVINO 模型是否在结果文件夹中。

预测结果:

为了实施推理,我们需要从 OpenVINOinference(我们可在其中设置 OpenVINO 模型及其元数据)中调用 predict 方法,并确定需要使用的设备:

predictions = inferencer.predict(image=image)

预测包含与结果有关的各种信息:原始图像、预测分数、异常图、热图图像、预测掩码和分割结果(图 5)。根据您要选择的任务类型,您可能需要更多信息。

d84f324a-cee3-11ed-bfe3-dac502259ad0.png

|图 5:预测结果

最后,我们采用 Dobot 机器人的缺陷检测用例基本是这样的。

03

使用您自己的数据集的技巧和建议

数据集转换:

如果您想提高模型的准确性,您可以在您的训练管道中应用数据转换。您应该在 config.yaml 的 dataset.transform_config 部分提供增强配置文件的路径。这意味着您需要有一个用于 Anomalib 设置的 config.yaml 文件,以及一个可供 Anomalib config yaml 文件使用的单独 albumentations_config.yaml 文件。

强大的模型:

异常检测库并非无所不能,在碰到麻烦的数据集时也可能会失效。好消息是:您可以尝试 13 个不同的模型,并能对每个实验的结果进行基准测试。您可以将基准测试入口点脚本用于其中,并将配置文件用于基准测试目的。这将帮助您为实际用例选择最佳模型。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    213

    文章

    30580

    浏览量

    219509
  • dll
    dll
    +关注

    关注

    0

    文章

    120

    浏览量

    46670
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89566
  • Ubuntu系统
    +关注

    关注

    0

    文章

    93

    浏览量

    4524

原文标题:如何应用Anomalib在数据集不平衡的情况下检测缺陷?-- 下篇

文章出处:【微信号:SDNLAB,微信公众号:SDNLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电能质量在线监测装置电流不平衡度能测吗?

    61000-4-30 等国家标准要求,为三相系统运行状态评估提供关键数据。 一、电流不平衡度的测量原理与核心指标 1. 测量原理(专业且易懂) 装置采用 对称分量法 (电力行业标准方法),通过实时采集三相电流(Ia、Ib、Ic),分解为: 正序电流(I₁):三相幅值相等
    的头像 发表于 11-27 15:50 646次阅读
    电能质量在线监测装置电流<b class='flag-5'>不平衡</b>度能测吗?

    电能质量在线监测装置三相不平衡度实时显吗?

    一、三相不平衡度显示能力确认 所有现代电能质量在线监测装置 (无论 A/B/C 类精度) 均 标配三相不平衡度实时监测功能 ,具体表现为: 显示形式 :液晶屏幕 (LCD/TFT) 直接显示数值
    的头像 发表于 11-25 17:48 349次阅读
    电能质量在线监测装置三相<b class='flag-5'>不平衡</b>度实时显吗?

    电流不平衡度的测量误差范围是多少?

    电流不平衡度的测量误差范围由国家标准严格规定,具体数值根据设备等级、硬件性能、算法设计及应用场景有所差异。以下是核心误差范围及影响因素的详细解析: 一、国标规定的基础误差范围 根据《GB/T
    的头像 发表于 11-06 09:38 520次阅读

    电流不平衡度测量精度受谐波影响吗?

    是的,电流不平衡度的测量精度 会显著受谐波影响 。这是因为电流不平衡度基于 “对称分量法” 计算(分解正序、负序、零序分量),而谐波会改变三相电流的基波和谐波分量分布,导致序分量计算偏差,进而
    的头像 发表于 11-05 16:08 947次阅读

    电能质量在线监测装置的电流不平衡度测量精度能达到多少?

    电能质量在线监测装置的电流不平衡度测量精度 取决于设备等级、硬件性能、算法设计及应用场景 ,其核心指标符合国家标准(GB/T 15543-2019)和国际规范(IEC 61000-4-30)。以下
    的头像 发表于 11-05 15:50 252次阅读

    半导体缺陷检测升级:机器学习(ML)攻克类别不平衡难题,小数据也能精准判,降本又提效!

    一、引言机器学习(ML)在半导体制造领域的应用,正面临传统算法难以突破的核心瓶颈。尽管行业能产生海量生产数据,但两大关键问题始终未能有效解决:一是极端类别不平衡,二是初始生产阶段训练数据
    的头像 发表于 11-05 11:38 200次阅读
    半导体<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>升级:机器学习(ML)攻克类别<b class='flag-5'>不平衡</b>难题,小<b class='flag-5'>数据</b>也能精准判,降本又提效!

    三相不平衡度的国标是怎样规定电能质量在线监测装置的监测精度的?

    根据现行国家标准 GB/T 15543-2008《电能质量 三相电压不平衡》 及相关配套规范(如 GB/T 19862-2016《电能质量监测设备通用要求》 ),电能质量在线监测装置对三相不平衡
    的头像 发表于 10-11 16:31 936次阅读
    三相<b class='flag-5'>不平衡</b>度的国标是怎样规定电能质量在线监测装置的监测精度的?

    变频器输出不平衡及对策

    变频器输出不平衡是工业自动化领域中常见的问题,它可能导致电机运行异常、设备损坏甚至生产事故。本文将深入分析变频器输出不平衡的原因,并提出相应的解决方案,帮助工程师和技术人员有效应对这一挑战。 一
    的头像 发表于 08-23 17:09 1460次阅读
    变频器输出<b class='flag-5'>不平衡</b>及对策

    无轴承异步电机的不平衡振动补偿控制

    异步电机转子的不平衡振动位移幅度,在稳态能基本消除不平衡振动激振力对轴心轨迹的影响,从而有效提高转子的悬浮运行控制精度。所给不平衡振动补偿控制策略是有效、可行的 纯分享帖,点击下
    发表于 07-14 17:37

    轮毂电机不平衡电磁力对车轮定位参数的影响

    [摘要] 轮毂电机驱动电动汽车将电机、减速机构和制动器等高度集成于车轮内。不同路面激励的轮胎跳动、载荷不均和轴承磨损等造成电机气隙沿圆周分布不均,其所产生的不平衡电磁力将会通过减速机构或直接传递
    发表于 06-10 13:17

    伺服电机三相不平衡原因及解决方法

    系统分析造成伺服电机三相不平衡的六大根源,并提供针对性的解决方案,帮助工程师从源头消除隐患。 一、电源质量缺陷引发的相位失衡 电网电压波动是导致三相不平衡的首要因素。当输入电压偏差超过额定值的±5%时,电机绕组阻抗
    的头像 发表于 05-06 07:40 1343次阅读
    伺服电机三相<b class='flag-5'>不平衡</b>原因及解决方法

    3A325薄型平衡不平衡变压器Anaren

    3A325薄型平衡不平衡变压器Anaren 3A325 是一款由 Anaren Microwave 生产的表面贴装(SMD)巴伦变压器(Balun Transformer),适用于无线通信和射频
    发表于 03-11 09:31

    伺服电子变压器输出电压不平衡的原因及相应的解决方案

    伺服电子变压器在工业自动化系统中也是至关重要的,它们负责将输入的交流电压转换成不同级别的交流电压,以精确驱动和控制伺服电机。然而,在实际应用中,伺服电子变压器输出电压不平衡的问题时有发生,这不
    的头像 发表于 02-23 12:19 1280次阅读
    伺服电子变压器输出电压<b class='flag-5'>不平衡</b>的原因及相应的解决方案

    B0430J50100AHF超小型不平衡平衡变压器

    B0430J50100AHF超小型不平衡平衡变压器B0430J50100AHF是Anaren推出的一款超小型、低成本且低轮廓的不平衡平衡变压器,专为满足新一代A/D和D/A转换器I
    发表于 02-08 09:26

    平衡电阻器可以改为不平衡

    在电子电路中,平衡电阻器与不平衡电阻器各自扮演着重要的角色。平衡电阻器主要用于实现电路的平衡和稳定性,减少噪音和干扰,提高信号质量。而不平衡
    的头像 发表于 01-30 14:31 1729次阅读