RotatedYOLO YOLO推理

RotatedYOLO 算子用于使用 cpu 对 RotatedYOLO 神经网络模型进行推理。RotatedYOLO网络是基于YOLO(You Only Look Once)网络的改进版,用于检测倾斜的物体。

说明:RVS 的 GPU/CPU 版本均可使用该算子。

type 功能
YOLO 用于 RotatedYOLO 网络的推理,可以获得图像中目标的位置掩码(像素区域)
这里的掩码区域实际是目标的旋转矩形外边框,所以掩码图中也会包含一小部分的背景。
YOLOClass 与 YOLO 模式描述一致。
同 YOLO 模式的区别:输出的目标位置掩码按照类别划分,每个类别输出一张 mask 图。
对于同一个类别中多个目标之间的重叠像素区域,将该区域判定给得分更高的目标。

YOLO

算子参数

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

  • 图像尺寸/image_size:推理时的图像尺寸。应该同训练时设置尺寸保持一致。

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

  • IOU阈值/iou_threshold:重叠目标交叠阈值,若两个目标的重叠度高于阈值,则其中得分较低的目标会被淘汰。当推理结果中,出现了较多“同一个目标有多个推理框”的现象时,说明这些推理框虽然有交叠但是交叠度低于阈值以至于没有被移除,此时可以适当降低该阈值。但阈值不应过低,否则容易将两个相互靠近的真实目标的推理框误移除。

  • 使用设备/device:推理时选用的物理设备,包含 gpu 和 cpu 两个选项。

    注意:在CPU 版本的 RVS 中仅能选用 cpu 。

  • 重置/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形式存放各个目标对应的类名

功能演示

使用 RotatedYOLO 算子对训练好的数据进行推理。

步骤1:算子准备

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

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → Image

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

    • 图像 → icon_visOn可视

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

  3. 设置 RotatedYOLO 算子参数:

    • 权重文件路径 → 训练完成后的权重文件地址 ( example_data/yolo_data/used_data/train_output/weights/last.pt )

    • 图像尺寸→ 640

    • 物体得分阈值→ 0.3

    • IOU阈值→ 0.4

    • 使用设备→gpu

    • 识别结果图像 → icon_visOn可视

步骤3:连接算子

Python_RotatedYOLO_nodes

步骤4:运行算子与结果展示

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

    Python_RotatedYOLO_Log

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

    Python_RotatedYOLO_Log2

  3. 推理完成后,如果勾选了 RotatedYOLO 算子的 show_result 参数,可以在 RVS 的 2D 图区域看到推理结果示意图,如下所示。

    Python_RotatedYOLO_result

YOLOClass

算子参数

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

  • 其余参数:与 YOLO 一致。

数据信号输入输出

输入:

  • image

    • 数据类型:Image

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

输出:

  • show_result

    • 数据类型:Image

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

  • mask_class_list

    • 数据类型:ImageList

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

  • mask_names

    • 数据类型:StringList

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

功能演示

与上述 YOLO 模块功能演示一致。