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

当您想进行自动缺陷检测,但数据集不平衡时,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 中。
|图 2:dobot studio 界面。
注:如果没有机器人,您可以转到另一个 notebook,如 501b notebook,通过这个链接下载数据集,并在那里尝试训练和推理。
01
notebook 的数据采集和推理
下面,我们需要使用正常的数据集创建文件夹。在这个示例中,我们创建了一个彩色立方体的数据集,并为异常情况添加一个黑色圆圈贴纸,以模拟盒子上的洞或缺陷(图 3)。对于数据采集和推理,我们将使用 501a notebook。
|图 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 配置您的训练。
|图 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)。根据您要选择的任务类型,您可能需要更多信息。
|图 5:预测结果
最后,我们采用 dobot 机器人的缺陷检测用例基本是这样的。
03
使用您自己的数据集的技巧和建议
数据集转换:
如果您想提高模型的准确性,您可以在您的训练管道中应用数据转换。您应该在 config.yaml 的 dataset.transform_config 部分提供增强配置文件的路径。这意味着您需要有一个用于 anomalib 设置的 config.yaml 文件,以及一个可供 anomalib config yaml 文件使用的单独 albumentations_config.yaml 文件。
强大的模型:
异常检测库并非无所不能,在碰到麻烦的数据集时也可能会失效。好消息是:您可以尝试 13 个不同的模型,并能对每个实验的结果进行基准测试。您可以将基准测试入口点脚本用于其中,并将配置文件用于基准测试目的。这将帮助您为实际用例选择最佳模型。


由FU-7胆管构成的50W功率放大接续器,FU-7 50W AMPLIFIER
行业 | 苹果要求鸿海集团8月起在印度组装最新款iPhone
人工智能技术存在哪一些局限
基于单片机的太阳能热水器智能仪
经典蓝牙为什么不能做到低功耗?
如何应用Anomalib在数据集不平衡的情况下检测缺陷?
纳米软件助力二十大顺利召开,为科技自强添砖加瓦
关于“阿尔法智能人形机器人”炫酷表演引爆高交会的表现
一加5什么时候上市最新消息:同为骁龙835,选择小米6还是选择一加5旗舰新机你看着办!
液晶ITO薄膜失效分析
CL型电容 校正式盒装电容 青岛双莱一站式复购
安科瑞AZC低压智能电力电容器在扬州某小区居民配电中的应用
如何设计BUCK电路的最佳驱动?
iPhone8什么时候上市?iPhone8价格多少:iPhone8测试机再曝光,价格过万发布初期一机难求
大数据+人工智能 和而泰clife3.0将亮相2017AW
传荣耀首款新机V40系列或于明年1月推出
这才靠谱:iPhone8“最终”外观曝光,撞脸三星S8
中兴通讯大换血 徐子阳任总裁
空载电流是什么意思
2020年农业行业的趋势及前景分析