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

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

3天内不再提示

利用 NVIDIA TAO 和视觉 AI 模型实现工业缺陷检测的变革

NVIDIA英伟达企业解决方案 来源:未知 2023-12-01 19:00 次阅读

效率对于工业制造来说至关重要,即便是微小的提升也会带来显著的经济效益。美国质量协会的数据显示,“许多企业机构实际的质量相关成本高达销售收入的 15 - 20%,有些甚至高达总运营成本的 40%。”这些惊人的统计数据揭示了一个严峻的现实:工业应用中的缺陷不仅会危及产品质量,还会消耗很大一部分的企业收入。

但如果企业能够收回这些损失的利润,并将其重新投入到创新和扩张中,那又会怎样呢?这正是 AI 的“用武之地”。

本文将探讨如何使用NVIDIA TAO设计出能够精准定位工业应用缺陷,进而提高整体质量的自定义 AI 模型。

NVIDIA TAO 套件是基于TensorFlow和 PyTorch构建的低代码 AI 工具套件。它通过抽象化 AI 模型和深度学习框架的复杂性,来简化并加速模型训练过程。借助 TAO 套件,开发者不仅可以使用预训练模型,还可以针对特定用例对其进行微调。

在本文中,我们使用一个名为 VisualChangeNet 的高级预训练模型进行变化检测,并使用 TAO 工具套件对其进行微调,使其能够检测MVTecAnomaly异常检测数据集中的缺陷。这个综合基准数据集由各种工业产品的正常和缺陷样本组成,专门用于机器视觉中的异常检测。

借助 TAO 套件,我们使用迁移学习训练了一个模型,该模型在MVTecAnomaly异常数据集的“瓶子”类别上达到了 99.67% 的总体准确率、92.3% 的 mIoU、95.8% 的 mF1、97.5 的 mPrecision 和 94.3% 的 mRecall。图 1 显示了使用这个训练有素的模型进行的缺陷掩码预测。

wKgZomVpveCAR_qQAALloan3rKI269.png

图 1. 通过将缺陷图像与黄金图像进行比较

来分段预测缺陷物体的缺陷掩码

第 1 步:设置先决条件

为了按照本文重新创建这些步骤,请执行以下操作。

  1. 按照《NGC 用户指南》中提供的步骤在 NGC 目录上注册账户并生成 API 密钥:https://docs.nvidia.com/ngc/gpu-cloud/ngc-user-guide/index.html#generating-api-key

  2. 按照《TAO 快速入门指南》设置 TAO 启动器。为 MVTec 数据集下载 VisualChangeNet Segmentation Jupyter Notebook。启动 Jupyter Notebook 并运行单元格,以便跟着本文进行操作。

    *请注意:VisualChangeNet 模型只能在 5.1 及以上的版本中运行。

  3. 按照提示进入下载页面,下载并准备MVTec 异常检测数据集,然后复制 15 个对象类中任何一个的下载链接:https://www.mvtec.com/company/research/datasets/mvtec-ad

  4. 将下载链接粘贴到 Jupyter Notebook 第 2.1 部分中的“FIXME”位置,然后运行该笔记本单元。本文主要介绍瓶子对象,但所有 15 个对象都能在该笔记本中使用。图 2 显示了数据集中的缺陷图像样本。

#Download the data
import os
MVTEC_AD_OBJECT_DOWNLOAD_URL = "FIXME"
mvtec_object = MVTEC_AD_OBJECT_DOWNLOAD_URL.split("/")[-1].split(".")[0]
os.environ["URL_DATASET"]=MVTEC_AD_OBJECT_DOWNLOAD_URL
os.environ["MVTEC_OBJECT"]=mvtec_object
!if[!-f$HOST_DATA_DIR/$MVTEC_OBJECT.tar.xz];thenwget$URL_DATASET-O$HOST_DATA_DIR/$MVTEC_OBJECT.tar.xz;elseecho"imagearchivealreadydownloaded";fi

wKgZomVpveCAB2oGAAhM8uf1Nq8386.png

图 2. MVTec数据集中电缆、瓶子

晶体管的缺陷图像样本(从左到右)

我们用 MVTec-AD 中的“瓶子”类别展示了如何在工业检测用例中使用 TAO 套件与 VisualChangeNet 来实现自动光学检测。

在 Jupyter Notebook 下载数据集后,运行该笔记的第 2.3 节,将数据集处理成 VisualChangeNet 分割所需的正确格式。

import random 
import shutil 
from PIL import Image
os.environ["HOST_DATA_DIR"] = os.path.join(os.environ["LOCAL_PROJECT_DIR"], "data", "changenet")
formatted_dir = f"formatted_{mvtec_object}_dataset"
 
DATA_DIR = os.environ["HOST_DATA_DIR"]
os.environ["FORMATTED_DATA_DIR"] = formatted_dir
 
#setup dataset folders in expected format 
formatted_path = os.path.join(DATA_DIR, formatted_dir)
a_dir = os.path.join(formatted_path, "A")
b_dir = os.path.join(formatted_path, "B")
label_dir = os.path.join(formatted_path, "label")
list_dir = os.path.join(formatted_path, "list")
 
#Create the expected folders
os.makedirs(formatted_path, exist_ok=True)
os.makedirs(a_dir, exist_ok=True)
os.makedirs(b_dir, exist_ok=True)
os.makedirs(label_dir, exist_ok=True)
os.makedirs(list_dir,exist_ok=True)

该原始数据集专门用于异常检测。我们将两者合并成一个包含 283 幅图像的综合数据集,然后将其分成 253 幅训练集图像和 30 幅测试集图像。两个数据集都包含有缺陷的样本。

我们确保该测试集包含每个缺陷类中 30% 的缺陷样本,“瓶子”类别主要包含“无缺陷”图像,三个缺陷类别中,每个类别各有约 20 幅图像。

wKgZomVpveCAKkv5AABvUyqwqug955.jpg

图 3. 该数据集中的输入样本,包含测试图像、黄金图像和显示缺陷的分割掩码。图中采用从瓶子顶部俯视的视角,摄像头安装在瓶口的正上方。

第 2 步:下载 VisualChangeNet 模型

VisualChangeNet 模型是最先进的基于转换器的变化检测模型。其设计核心是孪生网络(Siamese Network)。孪生网络是一种独特的神经网络架构,由两个或多个相同的子网络组成。这些“孪生”子网络接受不同的输入,但共享相同的参数和权重。这种架构使 VisualChangeNet 模型能够比较当前图像和作为参考的“黄金”图像之间的特征,从而精准定位变化和变更。该功能使孪生网络尤其擅长图像对比和异常检测等任务。

模型文档提供更多细节,如架构和训练数据等。我们没有从头开始训练模型,而是从在 NV-ImageNet 数据集上训练而成的预训练 FAN 骨干开始。我们使用 TAO 套件在 MVTec-AD 数据集上针对“瓶子”类别对其进行微调。

运行笔记第 3 部分以安装 NGC 命令行工具,并从 NGC 下载该预训练骨干。

# Installing NGC CLI on the local machine.
## Download and install
import os
%env CLI=ngccli_cat_linux.zip
!mkdir -p $HOST_RESULTS_DIR/ngccli
 
# # Remove any previously existing CLI installations
!rm -rf $HOST_RESULTS_DIR/ngccli/*
!wget "https://ngc.nvidia.com/downloads/$CLI" -P $HOST_RESULTS_DIR/ngccli
!unzip -u "$HOST_RESULTS_DIR/ngccli/$CLI" -d $HOST_RESULTS_DIR/ngccli/
!rm $HOST_RESULTS_DIR/ngccli/*.zip
os.environ["PATH"]="{}/ngccli/ngc-cli:{}".format(os.getenv("HOST_RESULTS_DIR", ""), os.getenv("PATH", ""))
!mkdir -p $HOST_RESULTS_DIR/pretrained
!ngc registry model list nvidia/tao/pretrained_fan_classification_nvimagenet*
!ngcregistrymodeldownload-version"nvidia/tao/pretrained_fan_classification_nvimagenet:fan_base_hybrid_nvimagenet"--dest$HOST_RESULTS_DIR/pretrained

第 3 步:使用 TAO 套件训练模型

在本节中,我们将详细介绍如何使用 TAO 套件训练 VisualChangeNet 模型。您可在模型卡中找到 VisualChangeNet 模型的详细信息以及支持的预训练权重,也可以使用该预训练 FAN 主干权重作为微调 VisualChangeNet 的起点,这也是我们在 MVTec-AD 数据集上进行微调时使用的权重。

如图 4 所示,该训练算法会同步更新所有子网络的参数。在 TAO 中,VisualChangeNet 支持将两幅图像作为黄金样本和测试样本输入,其目标是检测“黄金或参考”图像与“测试”图像之间的变化。TAO 支持 VisualChangeNet 架构的 FAN 骨干网络。

TAO 支持两类变化检测网络,分别是 VisualChangeNet-Segmentation 和 VisualChangeNet-Classification。在本文中,我们将使用 VisualChangeNet-Segmentation 模型,通过分割 MVTec-AD 数据集中两张输入图像之间的变化像素,来演示变化检测。

wKgZomVpveCAf3inAAIGiVKBe-g302.png

图 4. 检测瓶子类黄金图像和测试图像之间变化的

VisualChangeNet-Segmentation 算法架构图

使用工具套件微调 VisualChangeNet 模型非常简单,无需编码经验。只需在 TAO 套件中加载数据、设置实验配置并运行训练命令即可。

该实验配置文件定义了 VisualChangeNet 模型架构、训练和评估的超参数。可在训练模型前在 Jupyter Notebook 中查看并编辑该配置文件。

我们使用该配置对 VisualChangeNet 模型进行微调,在该配置中定义了一个带有预训练 FAN-Hybrid-Base 骨干(即基准模型)的 VisualChangeNet 模型,然后对该模型进行 30 个历元训练,批量大小为 8。下面展示了部分实验配置以及一些关键参数。完整的实验配置可在 Jupyter Notebook 中进行查看。

encryption_key: tlt_encode
task: segment
train:
  resume_training_checkpoint_path: null
  pretrained_model_path: null
  segment:
    loss: "ce"
    weights: [0.5, 0.5, 0.5, 0.8, 1.0]
  num_epochs: 30
  num_nodes: 1
  val_interval: 1
  checkpoint_interval: 1
  optim:
    lr: 0.0002
    optim: "adamw"
    policy: "linear"
    momentum: 0.9
    weight_decay: 0.01
results_dir: "/results"
model:
  backbone:
    type: "fan_base_16_p4_hybrid"
pretrained_backbone_path:/results/pretrained/pretrained_fan_classification_nvimagenet_vfan_base_hybrid_nvimagenet/fan_base_hybrid_nvimagenet.pth

为了调整模型的性能,可以修改的一些常用值包括训练历元数、学习率(lr)、优化器和预训练骨干。如要从头开始训练,可以将 pretrained_backbone_path 设置为空,但这可能会增加为达到高准确率所需的历元数和数据量。如需进一步了解该实验配置文件中的参数,请参阅《VisualChangeNet用户指南》https://docs.nvidia.com/tao/tao-toolkit/text/visual_changenet/index.html

现在数据集和实验配置已经准备就绪,我们要开始在 TAO 套件中进行训练了。运行第 5.1 节中的代码块,使用单颗 GPU 启动 VisualChangeNet 训练。

print("Train model")
!tao model visual_changenet train 
                  -e $SPECS_DIR/experiment.yaml 
                    train.num_epochs=$NUM_EPOCHS 
                    dataset.segment.root_dir=$DATA_DIR 
model.backbone.pretrained_backbone_path=$BACKBONE_PATH

该单元将开始在 MVTec 数据集上训练 VisualChangeNet-Segmentation 模型。在训练过程中,模型将学习如何识别缺陷对象并输出显示缺陷区域的分割掩码。训练日志包含验证数据集上的准确率、训练损失、学习率和训练后的模型等,都将保存在实验配置中设置的结果目录中。

第 4 步:评估模型

训练完成后,我们可以使用 TAO 在验证数据集上对模型进行评估。VisualChangeNet Segmentation 的输出是 2 张给定输入图像的分割变化图,表示的是像素级缺陷。笔记的第 6 节将运行评估模型性能的命令。

!tao model visual_changenet evaluate 
                   -e $SPECS_DIR/experiment.yaml 
                    evaluate.checkpoint=$RESULTS_DIR/train/changenet.pth 
                    dataset.segment.root_dir=$DATA_DIR

TAO 中的评估命令将返回验证集的多个 KPI,比如在缺陷类(缺陷像素)上的准确度、精确度、召回率、F1 分数和 IoU 等。

OA = 有变化/无变化像素的总体准确率(输入维度 - 256×256)

wKgZomVpveCAf2AHAABH8bkFlv0734.png

表 1. MVTec-AD 二进制变化检测(瓶子类)

中的 VisualChangeNet 模型评估指标

第 5 步:部署模型

可以使用NVIDIA DeepStreamNVIDIA Triton部署这一经过微调的模型。我们将其导出为 .onnx 格式。笔记第 8 节将运行 TAO 导出命令。

!tao model visual_changenet export 
                    -e $SPECS_DIR/experiment.yaml 
                        export.checkpoint=$RESULTS_DIR/train/changenet.pth 
                        export.onnx_file=$RESULTS_DIR/export/changenet.onnx

输出的 .onnx 模型与训练好的 .pth 模型保存在同一目录下。如要部署到 Triton,请查看 GitHub 上的 tao-toolkit-triton 资源库。该项目提供了将许多 TAO 模型(包括 VisualChangeNet Segmentation)部署到 Triton 推理服务器的参考实现。

实时推理性能

推理以 FP16 精度在所提供的未修剪模型上运行。该推理性能在嵌入式Jetson OrinGPU 和数据中心 GPU 上使用 trtexec 运行。Jetson 设备以 GPU 频率最高的 Max-N 配置运行。

请执行以下命令来运行 trtexec:

/usr/src/tensorrt/bin/trtexec --onnx=<ONNX path> --minShapes=input0:1x3x512x512,input1:1x3x512x512 --maxShapes=input0:8x3x512x512,input1:8x3x512x512 --optShapes=input0:4x3x512x512,input1:4x3x512x512 
--saveEngine=<engine path>

此处显示的性能仅为推理性能。流式传输视频数据的端到端性能可能会因硬件和软件的其他瓶颈而有所变化。

总结

在本文中,我们了解了如何使用 TAO 套件微调 VisualChangeNet 模型,并将其用于分割 MVTec 数据集中的缺陷,从而实现 99.67% 的总体准确率。

现在,您还可以使用 NVIDIA TAO 检测制造工作流程中的缺陷。

如要开始使用,请先:

  • 从 NVIDIA NGC 目录下载 VisualChangeNet 模型。

  • 按照《TAO 快速入门指南》设置 TAO 启动器:https://docs.nvidia.com/tao/tao-toolkit/text/tao_toolkit_quick_start_guide.html

  • GitHub下载 VisualChangeNet Segmentation Notebook:https://github.com/NVIDIA/tao_tutorials/tree/main/notebooks/tao_launcher_starter_kit/visual_changenet

  • 请通过NVIDIA 文档进一步了解 NVIDIA TAO 工具套件:https://docs.nvidia.com/tao/tao-toolkit/text/overview.html#:~:text=NVIDIA%20TAO%20Toolkit%20is%20a,and%20the%20deep%20learning%20framework

GTC 2024 将于 2024 年 3 月 18 至 21 日在美国加州圣何塞会议中心举行,线上大会也将同期开放。点击“阅读原文”扫描下方海报二维码,立即注册 GTC 大会


原文标题:利用 NVIDIA TAO 和视觉 AI 模型实现工业缺陷检测的变革

文章出处:【微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。


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

    关注

    22

    文章

    3859

    浏览量

    92169

原文标题:利用 NVIDIA TAO 和视觉 AI 模型实现工业缺陷检测的变革

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI赋能边缘网关:开启智能时代的新蓝海

    的引入彻底改变了这一局面。通过在边缘网关集成AI芯片和算法模型,使其具备了实时数据分析、智能决策和自主控制能力。在工业质检场景中,搭载AI算法的边缘网关能够实时识别产品
    发表于 02-15 11:41

    NVIDIA推出多个生成式AI模型和蓝图

    NVIDIA 宣布推出多个生成式 AI 模型和蓝图,将 NVIDIA Omniverse 一体化进一步扩展至物理 AI 应用,如机器人、自动
    的头像 发表于 01-08 10:48 190次阅读

    工业AI视觉检测项目实施第四步:工厂验收

    在当今智能制造的洪流中,AI视觉检测技术凭借高效与精准,已跃升为提高产品质量和生产效率的关键利器。为了助力从业者更好地理解和实施AI视觉
    的头像 发表于 12-09 16:56 413次阅读
    <b class='flag-5'>工业</b><b class='flag-5'>AI</b><b class='flag-5'>视觉</b><b class='flag-5'>检测</b>项目实施第四步:工厂验收

    AI干货补给站04 | 工业AI视觉检测项目实施第三步:模型构建

    在当今智能制造的浪潮中,AI视觉检测技术凭借其高效、精准的特性,已然成为提升产品质量和生产效率的重要工具。为了助力从业者更好地理解和实施AI视觉
    的头像 发表于 11-29 01:04 334次阅读
    <b class='flag-5'>AI</b>干货补给站04 | <b class='flag-5'>工业</b><b class='flag-5'>AI</b><b class='flag-5'>视觉</b><b class='flag-5'>检测</b>项目实施第三步:<b class='flag-5'>模型</b>构建

    NVIDIA推出全新生成式AI模型Fugatto

    NVIDIA 开发了一个全新的生成式 AI 模型利用输入的文本和音频,该模型可以创作出包含任意的音乐、人声和声音组合的作品。
    的头像 发表于 11-27 11:29 477次阅读

    NVIDIA AI助力实现更好的癌症检测

    由美国顶级医疗中心和研究机构的专家组成了一个专家委员会,该委员会正在使用 NVIDIA 支持的联邦学习来评估联邦学习和 AI 辅助注释对训练 AI 肿瘤分割模型的影响。
    的头像 发表于 11-19 15:54 262次阅读

    初创公司SEA.AI利用NVIDIA边缘AI和计算机视觉技术变革航海安全系统

    总部位于奥地利林茨的初创公司正在利用 NVIDIA 边缘 AI 和计算机视觉技术变革航海安全系统,让每一次出海变得更安全。
    的头像 发表于 09-09 09:32 615次阅读

    使用TI Edge AI Studio和AM62A进行基于视觉AI缺陷检测

    电子发烧友网站提供《使用TI Edge AI Studio和AM62A进行基于视觉AI缺陷检测.pdf》资料免费下载
    发表于 09-03 10:38 0次下载
    使用TI Edge <b class='flag-5'>AI</b> Studio和AM62A进行基于<b class='flag-5'>视觉</b><b class='flag-5'>AI</b>的<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>

    外观缺陷检测原理

    的结合应用加速渗透进工业产品的 外观缺陷检测 领域。思普泰克凭借深耕机器视觉多年沉淀的技术实力,建立以深度学习技术为核心的差异化发展优势,开发出视觉
    的头像 发表于 06-17 17:38 517次阅读
    外观<b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>原理

    MediaTek与NVIDIA TAO加速物联网边缘AI应用发展

    在即将到来的COMPUTEX 2024科技盛会上,全球知名的芯片制造商MediaTek宣布了一项重要合作——将NVIDIATAO(TensorRT Accelerated Optimizer)与其NeuroPilot SDK(软件开发工具包)集成,共同推动边缘
    的头像 发表于 06-12 14:49 524次阅读

    NVIDIA 通过 Holoscan 为 NVIDIA IGX 提供企业软件支持,实现边缘实时医疗、工业和科学 AI 应用

    医疗、工业和科学计算领域的解决方案提供商利用企业级软件和支持来加快开发和部署边缘 AI 解决方案。   NVIDIA AI Enterpri
    发表于 06-03 09:48 354次阅读
      <b class='flag-5'>NVIDIA</b> 通过 Holoscan 为 <b class='flag-5'>NVIDIA</b> IGX 提供企业软件支持,<b class='flag-5'>实现</b>边缘实时医疗、<b class='flag-5'>工业</b>和科学 <b class='flag-5'>AI</b> 应用

    AIDI工业AI视觉检测软件介绍

    AIDI是一款基于深度学习的智能工业视觉平台应用于多种工业应用场景,有效解决复杂缺陷的定位识别、分类定级及字符识别等问题,具有强大的兼容性。AIDI 内置多种应用模块,无需编程,帮助用
    发表于 03-25 21:52

    Edge Impulse发布新工具,助 NVIDIA 模型大规模部署

    借助 Edge Impulse 和 NVIDIA TAO 工具包的协同效应,工程师得以快速构建并部署至边缘优化硬件(如上述型号)的计算机视觉模型。该平台还支持用户运用经由 GPU 优化
    的头像 发表于 03-25 16:00 837次阅读

    机器视觉缺陷检测工业自动化领域的一项关键技术

    机器视觉缺陷检测工业自动化领域的一项关键技术,
    的头像 发表于 02-22 13:59 614次阅读
    机器<b class='flag-5'>视觉</b><b class='flag-5'>缺陷</b><b class='flag-5'>检测</b>是<b class='flag-5'>工业</b>自动化领域的一项关键技术

    视觉检测设备的分类

    视觉检测设备是一种利用摄像头、传感器、光源和图像处理算法等技术组成的设备,用于检测、识别、分析和判断图像或视频中目标物体的特征、属性、状态或缺陷
    的头像 发表于 02-21 09:41 1580次阅读
    <b class='flag-5'>视觉</b><b class='flag-5'>检测</b>设备的分类