5.18.4.4. sail.algo_yolov5_post_cpu_opt_async

在处理器上,针对YOLOv5模型被加速的后处理接口,内部使用线程池的方式实现。

5.18.4.4.1. __init__

接口形式:
def __init__(
            self,
            shape: list[list[int]],
            network_w:int = 640,
            network_h:int = 640,
            max_queue_size: int=20,
            use_multiclass_nms: bool=True)

参数说明:

  • shape: list[list[int]]

输入参数。输入数据的shape。

  • network_w: int

输入参数。模型的输入宽度,默认为640。

  • network_h: int

输入参数。模型的输入宽度,默认为640。

  • max_queue_size: int

输入参数。缓存数据的最大长度。

  • use_multiclass_nms: bool

输入参数。是否使用多类NMS,默认为使用。

5.18.4.4.2. push_data

输入数据,支持任意batchsize的输入。

接口形式1:
def push_data(self,
    channel_idx: list[int],
    image_idx: list[int],
    input_data: list[TensorPTRWithName],
    dete_threshold: list[float],
    nms_threshold: list[float],
    ost_w: list[int],
    ost_h: list[int],
    padding_attrs: list[list[int]]) -> int

参数说明1:

  • channel_idx: list[int]

输入参数。输入图像序列的通道号。

  • image_idx: list[int]

输入参数。输入图像序列的编号。

  • input_data: list[TensorPTRWithName],

输入参数。输入数据,包含三个输出。

  • dete_threshold: list[float]

输入参数。检测阈值序列。

  • nms_threshold: list[float]

输入参数。nms阈值序列。

  • ost_w: list[int]

输入参数。原始图片序列的宽。

  • ost_h: list[int]

输入参数。 原始图片序列的高。

  • padding_attrs: list[list[int]]

输入参数。填充图像序列的属性列表,填充的起始点坐标x、起始点坐标y、尺度变换之后的宽度、尺度变换之后的高度。

返回值说明:

成功返回0,其他值表示失败。

接口形式2:
def push_data(self,
    channel_idx: list[int],
    image_idx: list[int],
    input_data: list[TensorPTRWithName],
    dete_threshold: list[list[float]],
    nms_threshold: list[float],
    ost_w: list[int],
    ost_h: list[int],
    padding_attrs: list[list[int]]) -> int

参数说明2:

  • channel_idx: list[int]

输入参数。输入图像序列的通道号。

  • image_idx: list[int]

输入参数。输入图像序列的编号。

  • input_data: list[TensorPTRWithName],

输入参数。输入数据,包含三个输出。

  • dete_threshold: list[list[float]]

输入参数。检测阈值序列。

  • nms_threshold: list[float]

输入参数。nms阈值序列。

  • ost_w: list[int]

输入参数。原始图片序列的宽。

  • ost_h: list[int]

输入参数。 原始图片序列的高。

  • padding_attrs: list[list[int]]

输入参数。填充图像序列的属性列表,填充的起始点坐标x、起始点坐标y、尺度变换之后的宽度、尺度变换之后的高度。

返回值说明:

成功返回0,其他值表示失败。

5.18.4.4.3. get_result_npy

获取最终的检测结果

接口形式:
def get_result_npy(self)
        -> tuple[tuple[int, int, int, int, int, float],int, int]

返回值说明: tuple[tuple[left, top, right, bottom, class_id, score],channel_idx, image_idx]

  • left: int

检测结果最左x坐标。

  • top: int

检测结果最上y坐标。

  • right: int

检测结果最右x坐标。

  • bottom: int

检测结果最下y坐标。

  • class_id: int

检测结果的类别编号。

  • score: float

检测结果的分数。

  • channel_idx: int

原始图像的通道号。

  • image_idx: int

原始图像的编号。

5.18.4.4.4. reset_anchors

更新anchor尺寸.

接口形式:
def reset_anchors(self, anchors_new: list[list[list[int]]]) -> int

参数说明:

  • anchors_new: list[list[list[int]]]

要更新的anchor尺寸列表.

返回值说明:

成功返回0,其他值表示失败。