AIDetectGPU AI推理GPU版

AIDetectGPU 算子用于在安装 NVIDIA 独显情况下使用独显对几类 CNN 神经网络模型进行图像分割任务。与 AIDetectCPU 算子相比,GPU具有更强的计算能力和并行处理能力,因此使用GPU进行神经网络推理可以大幅提高计算速度和效率。

type 功能
MaskRCNN 用于 MaskRCNN 网络的推理,可以获得图像中目标的位置掩码(像素区域)
MaskRCNNClass 用于 MaskRCNNClass 网络的推理,可以获得图像中所有目标的位置掩码(像素区域)
同一个类别的所有目标的掩码共用一张输出图像
KeyPoint 用于关键点网络的推理,在 MaskRCNN 网络基础上可以额外获得关键点的像素值

说明: 还有一种RotatedYOLO网络的推理模式,同 MaskRCNN 网络差异较大,需要使用名为RotatedYOLONode的算子进行推理。

MaskRCNN

  • 类名文件路径/class_name_file_path:类名文件地址是一个指定了训练时所用的类别名称的文本文件。该文件的文件名应以 .txt 结尾。为了兼容旧版本的训练结果,该文件也可以使用 .names 结尾,或者使用训练时所生成的 json 文件。

  • 权重文件路径/weight_file_path:训练完成后的权重文件地址。

  • 配置文件路径/config_file_path:训练完成后的配置文件地址。对于MaskRCNN网络在 RVS 1.3 及之前旧版本训练的结果,该配置文件参数设为空即可。

  • 物体得分阈值/obj_score_threshold:目标得分阈值。得分低于阈值的目标会被淘汰。范围取值:[0,1]。默认值:0.75。

  • 重置/reset:参数重置。在执行了一次推理之后,如果对其中任何一个参数进行了修改,需要勾选 reset 参数,否则修改不会生效。勾选 reset 参数后,重新触发执行一次算子,该参数会自动由勾选状态重新变为非勾选状态,以确保下一次推理时使用新的参数。

  • 识别结果图像/show_result:设置推理结果示意图在 2D 视图中的可视化属性。

    • icon_visOn 打开推理结果示意图可视化。打开能更直观显示推理结果,利于调试。

    • icon_visOff 关闭推理结果示意图可视化。关闭可视化可以缩短算子对结果图像进行着色处理的时间。

  • Mask列表/mask_list:设置 mask_list 输出端口的图像内容在 2D 视图中的可视化属性。其中每一张图像都是一张灰度图,背景像素为 0,目标区域为 255 。

  • Mask名称列表/mask_names:设置各个目标对应的类名曝光属性。打开后则可以将 mask_names 输出端口的内容绑定到交互面板上的表格并输出显示。

    • icon_visOn 打开曝光。

    • icon_visOff 关闭曝光。

数据信号输入输出

输入:

  • image

    • 数据类型:Image

    • 输入内容:需要推理的图像数据

输出:

  • show_result

    • 数据类型:Image

    • 输出内容:图像推理结果的效果示意图

  • mask_list

    • 数据类型:ImageList

    • 输出内容:图像推理后获得的所有目标的掩码图,每个目标在 List 中的位置同下述 mask_names 保持一致。各个目标按照对应的得分从高到低排列。

  • mask_names

    • 数据类型:StringList

    • 输出内容:以 String 形式存放各个目标对应的类名

功能演示

使用 AIDetectGPU 算子的MaskRCNN神经网络模型对加载的图像进行推理。获得图像中的目标位置掩码(像素区域)。

步骤1:算子准备

添加 Trigger ( 2 个 )、Load、AIDetectGPU算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → Image

    • 文件 →icon_more → 选择图像文件名 ( example_data/mask_data_train/20221010140850486/rgb.png )

    • 图像 → icon_visOn 可视

  2. 设置 Trigger_1 算子参数:类型 → InitTrigger

  3. 设置 AIDetectGPU 算子参数:

    • 类型 → MaskRCNN

    • 类名文件路径 →icon_more → 选择相应文件名( example_data/mask_data_train/fruits.txt )

    • 权重文件路径 →icon_more → 选择相应权重文件名 ( example_data/mask_data_train/train_output/model_final.pth )

    • 配置文件路径 →icon_more → 选择相应配置文件名( example_data/mask_data_train/train_output/config.yaml )

    • 物体得分阈值 →icon_more → 0.75

    • 识别结果图像 → icon_visOn 可视

步骤3:连接算子

Python_AIDetectGPU_nodes

步骤4:运行与结果

  1. 打开 RVS 的运行按钮,XML 会自动运行Trigger_1(type为InitTrigger)。此时会触发AIDetectGPU算子完成第一次的初始化运行(首次运行不会对输入的图像进行推理,仅仅是运行环境检测以及将模型文件从本地载入到内存),运行成功后界面显示如下图,在日志栏依次打印了”AIDetectis loading module”…”GetClassNames done”等四条语句。

  2. 在推理过程中,会在日志栏高亮打印“AIDetect is processing”的输出信息,推理完成后,会在日志栏打印该图像推理得到的目标个数,如下图所示。

    Python_AIDetectGPU_Log

  3. 推理完成后,在 RVS 的 2D 图区域显示推理结果示意图,如下所示。

    Python_AIDetectGPU_result

MaskRCNNClass

算子参数

  • Mask类别列表/mask_class_list:设置 mask_class_list 输出端口的图像内容在 2D 视图中的可视化属性。其中每一张图像都是一张灰度图,代表某一个类别的所有目标的掩码图。mask_class_list 中的类别,按照类名文件中类别的先后顺序进行排序。每张mask图像的背景像素为 0,每一个目标按照得分从大到小的顺序依次使用1、2、3… 等像素。比如一张 mask 图中像素为 1 的一块区域,代表该类别中得分最高的目标的像素位置。

  • 其余参数:与 MaskRCNN 一致。

数据信号输入输出

输入:

  • image

    • 数据类型:Image

    • 输入内容:需要推理的图像数据

输出:

  • show_result

    • 数据类型:Image

    • 输出内容:图像推理结果的效果示意图

  • mask_class_list

    • 数据类型:ImageList

    • 输出内容:图像推理后获得的所有类别目标的掩码图,详细说明见上述“算子参数” –mask_class_list 的介绍。

  • mask_names

    • 数据类型:StringList

    • 输出内容:以 String 形式存放所有的类名,顺序同类名文件保持一致,并且同上述 mask_class_list 保持一致。

功能演示

与上述 MaskRCNN 模块类似,请参照该章节功能演示模块。

KeyPoint

算子参数

  • 类名文件路径/class_name_file_path:训练时生成的 json 文件,一般是 annotations.json 。

  • 关键点得分阈值/keypt_score_threshold:关键点的得分阈值,得分低于阈值的关键点会被淘汰。范围取值:[0,10]。默认值:0.8。

  • Mask旋转矩阵列表/mask_boxes:设置曝光 mask_boxes 输出端口。打开后则可以将该输出端口的内容绑定到交互面板上的表格并输出显示。

    • icon_visOn 打开曝光。

    • icon_visOff 关闭曝光。

  • 其余参数:同 MaskRCNN 保持一致。

数据信号输入输出

输入:

  • image

    • 数据类型:Image

    • 输入内容:需要推理的图像数据

输出:

  • show_result

    • 数据类型:Image

    • 输出内容:图像推理结果的效果示意图

  • mask_list

    • 数据类型:ImageList

    • 输出内容:图像推理后获得的所有目标的掩码图,每个目标在 List 中的位置同下述 3 个 List 一致。各个目标按照对应的得分从高到低排列。

  • mask_names

    • 数据类型:StringList

    • 输出内容:以 String 形式存放各个目标对应的类名

  • mask_boxes

    • 数据类型:RotatedRectList

    • 输出内容:以旋转矩形框的形式输出各个目标的外边框

  • keypt_list

    • 数据类型:ImagePointsList

    • 输出内容:图像推理后获得的所有目标的关键点信息,List 中的每一个 ImagePoints 。代表一个目标上的所有关键点。每一个 ImagePoints 的内容,均按照关键点顺序以 “x1 y1 x2 y2 …” 的形式依次排列。

功能演示

使用 AIDetectGPU 算子中 KeyPoint 神经网络模型对加载的图像进行推理。获得图像中目标的位置掩码(像素区域)和关键点的像素值。

步骤1:算子准备

添加 Trigger ( 2 个)、Load、AIDetectGPU算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → Image

    • 文件 →icon_more → 选择图像文件名 ( example_data/keypoint_data_train/20221010113840917/rgb.png )

    • 图像 → icon_visOn 可视

  2. 设置 Trigger_1 算子参数:

    • 类型 → InitTrigger

  3. 设置 AIDetectGPU 算子参数:

    • 类型 → KeyPoint

    • 类名文件路径 →icon_more → 选择相应文件名( example_data/keypoint_data_train/annotations.json )

    • 权重文件路径 →icon_more → 选择相应权重文件名 ( example_data/keypoint_data_train/train_output/model_final.pth )

    • 配置文件路径 →icon_more → 选择相应配置文件名 ( example_data/keypoint_data_train/train_output/config.yaml )

    • 物体得分阈值 → 0.75

    • 关键点得分阈值 → 0.8

    • 识别结果图像 → icon_visOn 可视

步骤3:连接算子

Python_KeyPoint_nodes

步骤4:运行与结果

  1. 打开 RVS 的运行按钮,XML 会自动运行Trigger_1(type为InitTriggerr)。此时会触发AIDetectGPU算子完成第一次的初始化运行(首次运行不会对输入的图像进行推理,仅仅是运行环境检测以及将模型文件从本地载入到内存),运行成功后界面显示如下图,在日志栏依次打印了”AIDetect is loading module”…”GetClassNames done”等四条语句。

  2. 在推理过程中,会在日志栏高亮打印“AIDetect is processing”的输出信息,推理完成后,会在日志栏打印该图像推理得到的目标个数,如下图所示。

    Python_AIDetectGPU_KeyPoint_log

  3. 推理完成后,在 RVS 的 2D 图区域显示推理结果示意图,如下所示。

    Python_AIDetectGPU_KeyPoint_result