anomalib2

这是基于 Anomalib和AIxBoard 的SIMOTECH在线缺陷检测系统

Anomalib Github:https://github.com/openvinotoolkit/anomalib

Anomalib 是一个深度学习库,旨在收集最先进的异常检测算法,以便在公共和私有数据集上进行基准测试。Anomalib 提供了近期文献中描述的异常检测算法的几种即用型实现,以及一套便于开发和实现自定义模型的工具。该库重点关注基于图像的异常检测,算法的目标是识别异常图像或数据集中图像的异常像素区域。

Anomalib 具有以下特点:

  • 有大量现成可用的深度学习异常检测算法和基准数据集

  • 基于 PyTorch Lightning 编写了一套最大化通用的模型,可以帮助我们减少大量模板代码,可以帮助我们将更多的精力放在重要的事情上。

  • 所有模型均可导出到支持英特尔硬件加速的 OpenVINO 格式 。

  • 一套推理工具,用于快速、轻松地部署标准或自定义异常检测模型。

  • 在CPU上就可以实现毫秒级的检测

  • 仅需少量的良品图片,进行几分钟的训练,即可完成一个在线异常检查的应用。

针对我们的检测应用,以上算法均能满足需求的前提下,我们选用了速度最快的 STFPM-ResNet18 模型来进行测试。详见论文: STFPM:https://arxiv.org/pdf/2103.04257.pdf原理

异常检测的基本原理是使用一组教师-学生网络做特征比对, 比对差异较大的即为异常图像.

在此基础上, 发展出了 STFPM、 PaDiM、 PatchCore、 EfficientAD 等算法。他们的差异主要在于神经网络结构、用于全局分析的特征编码器、自动编码器、多层特征混合计算、损失评估算法等不同。

优势

对比传统的异常检测算法,我们需要针对不同的产品编写一套针对性的检测代码,还需要一定量的不良品来测试和优化检测算法。而使用机器学习方法,我们只要统一的一套通用的训练程序和几张良品图片即可。

检测过程

训练

我们将Anomalib算法集成到深圳思墨科技的SIMOTECH在线缺陷检测系统,基于英特尔开发者套件AIxBoard,实现训练和推理在训练过程中,我们采集了 3 张良品的 pcb 电路板图片来进行训练。
经过约 200 epoch 训练后,损失降到了 1.0 以下。检测

使用训练好的模型来检测一些样品, 均能正确检出异常:

部署

使用 OpenVINO 提供的工具将模型导出到 OpenVINO: whaosoft aiot http://143ai.com

from openvino.tools import mo 
from openvino.runtime import Core, serialize 
 
# Convert model to openvino.runtime.Model object 
ov_model = mo.convert_model(model) 
 
# Save openvino.runtime.Model object on disk 
serialize(ov_model, "test_model.xml") 

将导出的模型拷贝到 AIxBoard 上,使用 Anomalib 的推导工具 openvino_inference.py 即可在 AIxBoard 上进行加速推导。

总结

在没有经过调优的情况下,我们的模型仅使用了 3 张良品照片进行简单的训练,即可上线检测并取得不错的效果。通过使用 Anomalib 我们不仅可以使用少量的良品特征快速构建一个异常检测应用,还可以免去收集不良品特征的过程。结合 AIxBoard 可以快速将应用部署到产线上。

### Anomalib 和 WinClip 的使用教程及案例 #### 安装环境配置 为了确保能够顺利运行Anomalib以及WinClip,建议创建一个新的Conda虚拟环境来管理依赖项。具体操作如下: 对于Anomalib,在Python 3.10环境下通过pip命令可以直接完成安装[^2]: ```bash conda create -n anomalib_env python=3.10 conda activate anomalib_env pip install anomalib ``` 而对于WinClip工具,则通常需要依据其官方文档指导来进行单独设置。 #### 数据集准备 当处理工业缺陷检测任务时,可以采用MVTec AD这样的公开数据集作为基础素材[^3]。这些图像应当被妥善分类存放在`dataset/normal`和`dataset/defect`两个子文件夹内,以便后续用于模型训练过程中的正负样本区分。 #### 训练流程概述 一旦完成了上述准备工作之后,就可以着手编写具体的训练脚本了。这里给出一段简单的PyTorch风格伪代码片段展示如何调用Anomalib框架下的API接口实现基本功能: ```python from anomalib.models import get_model import torch from torchvision.transforms import Compose, ToTensor, Normalize from pathlib import Path # 加载预定义好的网络结构实例化对象 model = get_model('padim') transform = Compose([ToTensor(), Normalize(mean=[0.485], std=[0.229])]) train_path = Path('./dataset/train') test_paths = list(Path('./dataset/test').glob('*')) for test_path in test_paths: img_tensor = transform(Image.open(str(test_path)).convert('RGB')) with torch.no_grad(): score_map = model(img_tensor.unsqueeze(0)) print("Inference completed.") ``` 这段代码展示了加载模型、定义转换函数、读取测试图片路径列表,并逐一对每张待测图片执行推理计算得到异常得分图的过程[^1]。 #### 实际应用案例分析 考虑到实际应用场景可能涉及更复杂的业务逻辑和技术细节,因此强烈推荐参考官方提供的完整示例项目或者社区分享的成功实践报告获取更多灵感和支持。比如GitHub上就有很多基于Anomalib构建的视觉质量控制系统的开源仓库可供借鉴学习。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值