AI算子列表


AI算子列表

概述

目前只有部分算子可在一個庫中同時運行在MLU220和MLU270平台。也就是用戶使用 ./build_cnplugin.sh --mlu270 命令編譯生成的 libcnplugin.so 文件可同時在MLU220和MLU270上運行,其余算子只能在MLU270上運行。支持MLU220和MLU270平台的算子列表如下:

  • Faster Rcnn Detection Output
  • Roi Pool
  • Proposal
  • Yolov3 Detection Output
  • Yolov2 Detection Output
  • SSD Detection Output
  • Resize Yuv To Rgba
  • Yuv To Rgb
  • Resize
  • Bert Pre

后續版本會完善其余算子對不同平台的支持。

Add Pad

  • 功能描述

給圖片的右側和下側加邊框。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • tensor:一個四維的張量,形狀是[batchNum, 1 or 4, dst_h, dst_w](NCHW),目前只支持UINT8格式。
  • pad_value_tensor:一個四維的張量,形狀是[1, 3, 1, 1](NCHW),目前只支持UINT8格式。

輸出:

  • dst_tensor:經過padding的四維張量。形狀是:[batchNum, 1 or 4, src_h, src_w](NCHW)。目前只支持UINT8格式。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • src_w和dst_w必須是32對齊,src_h和 dst_h必須是2對齊。
    • 輸入的圖片可以是YUV SP420或者RGB(RGBA),輸入的通道也相應是1或者4。
    • pad value是要填充的值。如果通道的大小為3,通道的值應為是yuv或者rgb。

Anchor Generator

  • 功能描述

根據形狀生成anchors。

算子接收feature shape、image shape、base achor size、scales、ratios幾個參數,實現過程如下:

  • base anchor size是anchor的默認size。
  • scales和ratios在base anchor size的基礎上對長寬、以及長寬比進行變形。
  • 一個點生成 scales.size() * ratios.size() 個anchor,整個算子生成 scales.size() * ratios.size() * feature_shape[0]* feature_shape[1] 個 anchor。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • feature_map_shape_mlu_tensor:維度是四維(NCHW)的張量。
  • param:參數描述結構體。

輸出:

  • grid_anchors_mlu_tensors:四維張量,形狀是[1, len(scales) * len(aspect_ratios) * 4, featuremap_height, featuremap_width](NCHW)。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入輸出的張量僅支持FLOAT16類型。

Arange

  • 功能描述

根據給定的參數,生成一個大小為 size 的一維有序數組。

  • start:數組的開始數據。
  • step:數組步長。
  • repeat:數組中每個數據重復次數。
  • size:數組大小及數組中數據總個數。

支持型號:MLU270系列。支持MXNet。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • input:輸入張量,無意義。這里是為了滿足CNML算子輸入要求。支持數據類型float16和float32。
  • start:數列的起始值。
  • stop:數列的結束值。算子中未用到。
  • step:有序數列的步長。
  • repeat:數列中每個數的重復次數。
  • size:數列大小,數據總個數。

輸出:

  • output:輸出張量,最后的有序數列。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Bert Base Encoder

  • 功能描述

任務類型為SQuAD1.1的BERT-Base網絡。與pluginBertSquadOp算子不同的是,該算子不包含前后處理模塊。

支持型號:MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • cnml_input_ptr:一組描述BERT前處理后數據的四維張量。
  • cnml_output_ptr:一組描述encoder后數據輸出的四維張量。
  • input_tensor:BERT前處理后的數據。
  • attr_mask:前處理后的mask輸入。
  • attr_kernel_Q_ch0:query層的矩陣乘的權值。
  • attr_kernel_Q_ch1:query層的矩陣乘的權值。
  • attr_kernel_Q_ch2:query層的矩陣乘的權值。
  • attr_kernel_Q_ch3:query層的矩陣乘的權值。
  • attr_bias_Q:query層的矩陣乘的偏置。
  • attr_kernel_K_ch0:key層的矩陣乘的權值。
  • attr_kernel_K_ch1:key層的矩陣乘的權值。
  • attr_kernel_K_ch2:key層的矩陣乘的權值。
  • attr_kernel_K_ch3:key層的矩陣乘的權值。
  • attr_bias_K:key層的矩陣乘的偏置。
  • attr_kernel_V_ch0:value層的矩陣乘的權值。
  • attr_kernel_V_ch1:value層的矩陣乘的權值。
  • attr_kernel_V_ch2:value層的矩陣乘的權值。
  • attr_kernel_V_ch3:value層的矩陣乘的權值。
  • attr_bias_V:value層的矩陣乘的偏置。
  • attr_output_kernel_ch0:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch1:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch2:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch3:attention_output層的矩陣乘的權值。
  • attr_output_bias:attention_output層的矩陣乘的偏置。
  • attr_layernorm_beta:attention_output層的矩陣乘的beta。
  • attr_layernorm_gamma:attention_output層的矩陣乘的gamma。
  • inter_kernel_ch0:intermediate層的矩陣乘的權值。
  • inter_kernel_ch1:intermediate層的矩陣乘的權值。
  • inter_kernel_ch2:intermediate層的矩陣乘的權值。
  • inter_kernel_ch3:intermediate層的矩陣乘的權值。
  • inter_bias:intermediate層的矩陣乘的偏置。
  • output_kernel_ch0:output層的矩陣乘的權值。
  • output_kernel_ch1:output層的矩陣乘的權值。
  • output_kernel_ch2:output層的矩陣乘的權值。
  • output_kernel_ch3:output層的矩陣乘的權值。
  • output_bias:output層的矩陣乘的偏置。
  • output_layernorm_beta:output層的矩陣乘的beta。
  • output_layernorm_gamma:output層的矩陣乘的gamma。
  • fix_pos:網絡中所有Matmul和BatchMatMul的position。
  • batch_num:輸入的batch數。
  • seq_len:輸入語句長度。

輸出:

  • encoder_out:encoder的輸出結果。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • batch_size值范圍為1 - 8。
    • seq_len值范圍為128 - 512並且 seq_len % 64 的余數為0。
    • batch_size * seq_len 的值應小於或等於1024。

Bert Emb Encoder

  • 功能描述

包含pre和encoder兩個模塊的bert_base網絡,可以根據不同任務接入不同的后處理。根據用戶使用需求,針對1batch和2batch做了專門的性能優化。

支持型號:MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • input ids:int32類型,形狀為(batch, seqlen)。
  • input_mask:float16類型,形狀為(batch, seqlen)。
  • token_type_ids:int32類型,形狀為(batch, seqlen)。
  • 權值參數:
    • word_embedding_table:embedding層的詞向量表。
    • segment_embedding_table:embedding層的詞向量表。
    • position_embedding_table:embedding層的詞向量表。
    • embedding_layernorm_beta:embedding層的layernorm參數beta。
    • embedding_layernorm_gamma:embedding層的layernorm參數gamma。
    • post_output_kernel:squad后處理中的矩陣乘的權值。
    • post_output_bias:squad后處理中的矩陣乘的偏置。
    • attr_kernel_Q_ch0:query層的矩陣乘的權值。
    • attr_kernel_Q_ch1:query層的矩陣乘的權值。
    • attr_kernel_Q_ch2:query層的矩陣乘的權值。
    • attr_kernel_Q_ch3:query層的矩陣乘的權值。
    • attr_bias_Q:query層的矩陣乘的偏置。
    • attr_kernel_K_ch0:key層的矩陣乘的權值。
    • attr_kernel_K_ch1:key層的矩陣乘的權值
    • attr_kernel_K_ch2:key層的矩陣乘的權值。
    • attr_kernel_K_ch3:key層的矩陣乘的權值。
    • attr_bias_K:key層的矩陣乘的偏置。
    • attr_kernel_V_ch0:value層的矩陣乘的權值。
    • attr_kernel_V_ch1:value層的矩陣乘的權值。
    • attr_kernel_V_ch2:value層的矩陣乘的權值。
    • attr_kernel_V_ch3:value層的矩陣乘的權值。
    • attr_bias_V:value層的矩陣乘的偏置。
    • attr_output_kernel_ch0:attention_output層的矩陣乘的權值。
    • attr_output_kernel_ch1:attention_output層的矩陣乘的權值。
    • attr_output_kernel_ch2:attention_output層的矩陣乘的權值。
    • attr_output_kernel_ch3:attention_output層的矩陣乘的權值。
    • attr_output_bias:attention_output層的矩陣乘的偏置。
    • attr_layernorm_beta:attention_output層的矩陣乘的beta。
    • attr_layernorm_gamma:attention_output層的矩陣乘的gamma。
    • inter_kernel_ch0:intermediate層的矩陣乘的權值。
    • inter_kernel_ch1:intermediate層的矩陣乘的權值。
    • inter_kernel_ch2:intermediate層的矩陣乘的權值。
    • inter_kernel_ch3:intermediate層的矩陣乘的權值。
    • inter_bias:intermediate層的矩陣乘的偏置。
    • output_kernel_ch0:output層的矩陣乘的權值。
    • output_kernel_ch1:output層的矩陣乘的權值。
    • output_kernel_ch2:output層的矩陣乘的權值。
    • output_kernel_ch3:output層的矩陣乘的權值。
    • output_bias:output層的矩陣乘的偏置。
    • output_layernorm_beta:output層的矩陣乘的beta。
    • output_layernorm_gamma:output層的矩陣乘的gamma。
    • fix_pos:網絡中所有Matmul或BatchMatMul的position。
    • batch_num:輸入的batch數。
    • input_seq_len:輸入語句長度output層的矩陣乘的權值、偏置、beta和gamma。

輸出:

  • 以下面方式計算的輸出結果:

half * encoder_out / encoder

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • batch_size = 1~8
    • seq_len = 128 ~512 && seq_len % 64 =0
    • batch_size * seq_len <= 1024

BertPre

  • 功能描述

是BERT網絡的前處理步驟。通過查表操作,對輸入進行embedding操作。

支持型號:MLU220和MLU270系列。支持TensorFlow和PyTorch。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • cnml_static_ptr:一組描述輸入權值的四維張量。
  • cnml_intput_ptr:一組描述輸入數據的四維張量。

輸出:

  • cnml_output_ptr:一組描述處理后數據的四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制

輸入seq_len不得超過512。

Bert Squad

  • 功能描述

執行任務類型為SQuAD1.1的BERT-Base網絡。

支持型號:MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • input ids:數據類型為int32,形狀為(batch, seqlen)。
  • input_mask:數據類型為float16,形狀為(batch, seqlen)。
  • token_type_ids:數據類型為int32,形狀為(batch, seqlen)。
  • word_embedding_table:embedding層的3個詞向量表。
  • segment_embedding_table:embedding層的3個詞向量表。
  • position_embedding_table:embedding層的3個詞向量表。
  • embedding_layernorm_beta:embedding層的layernorm參數beta。
  • embedding_layernorm_gamma:embedding層的layernorm參數gamma。
  • post_output_kernel:squad后處理中的矩陣乘的權值。
  • post_output_bias:squad后處理中的矩陣乘的偏置。
  • attr_kernel_Q_ch0:query層的矩陣乘的權值。
  • attr_kernel_Q_ch1:query層的矩陣乘的權值。
  • attr_kernel_Q_ch2:query層的矩陣乘的權值。
  • attr_kernel_Q_ch3:query層的矩陣乘的權值。
  • attr_bias_Q:query層的矩陣乘的偏置。
  • attr_kernel_K_ch0:key層的矩陣乘的權值。
  • attr_kernel_K_ch1:key層的矩陣乘的權值。
  • attr_kernel_K_ch2:key層的矩陣乘的權值。
  • attr_kernel_K_ch3:key層的矩陣乘的權值。
  • attr_bias_K:key層的矩陣乘的偏置。
  • attr_kernel_V_ch0:value層的矩陣乘的權值。
  • attr_kernel_V_ch1:value層的矩陣乘的權值。
  • attr_kernel_V_ch2:value層的矩陣乘的權值。
  • attr_kernel_V_ch3:value層的矩陣乘的權值。
  • attr_bias_V:value層的矩陣乘的偏置。
  • attr_output_kernel_ch0:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch1:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch2:attention_output層的矩陣乘的權值。
  • attr_output_kernel_ch3:attention_output層的矩陣乘的權值。
  • attr_output_bias:attention_output層的矩陣乘的偏置。
  • attr_layernorm_beta:attention_output層的矩陣乘的beta。
  • attr_layernorm_gamma:attention_output層的矩陣乘的gamma。
  • inter_kernel_ch0:intermediate層的矩陣乘的權值。
  • inter_kernel_ch1:intermediate層的矩陣乘的權值。
  • inter_kernel_ch2:intermediate層的矩陣乘的權值。
  • inter_kernel_ch3:intermediate層的矩陣乘的權值。
  • inter_bias:intermediate層的矩陣乘的偏置。
  • output_kernel_ch0:output層的矩陣乘的權值。
  • output_kernel_ch1:output層的矩陣乘的權值。
  • output_kernel_ch2:output層的矩陣乘的權值。
  • output_kernel_ch3:output層的矩陣乘的權值。
  • output_bias:output層的矩陣乘的偏置。
  • output_layernorm_beta:output層的矩陣乘的beta。
  • output_layernorm_gamma:output層的矩陣乘的gamma。
  • fix_pos:網絡中所有Matmul和BatchMatMul的position。
  • batch_num:輸入的batch數 。
  • input_seq_len:輸入語句長度。

輸出:

  • start_logits:數據類型為float32,形狀為(8, 128)。
  • end_logits:數據類型為float32,形狀為(8, 128)。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • batch_size的值范圍為 1 - 8。
    • seq_len的值范圍為128 - 512並且 seq_len % 64 的余數為0。
    • batch_size * seq_len 的值應小於或者等於1024。

Box Coder

  • 功能描述

基於PaddlePaddle框架的box_coder()算子。

接收邊界框坐標,先驗框坐標和先驗框坐標的方差,並對邊界框坐標進行編碼。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • row:邊界框的個數。
    • col:邊界框類別的個數。
    • len:邊界框坐標的維度,必須是4。
    • axis:先驗框形狀的參數。
    • normalized:輸出結果是否需要歸一化的標志位。
    • float_presicion:浮點數數據類型。
    • code_type:編碼的方式。
    • core_version:運行的硬件平台。
    • input_tensors:一組四維輸入張量。張量的個數為3,順序為:target_box_tensor(邊界框坐標), prior_box_tensor(先驗框坐標),prior_box_var_tensor(先驗框坐標方差)。

輸出:

  • output_tensors:一組思維輸出張量。張量的個數是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Clip Boxes

  • 功能描述

對超出邊界的框進行裁剪。

支持型號:MLU220和MLU270系列。

  • 參數限制

參數

  • normalized:bool類型,表示是否對框進行歸一化。
  • num_boxes: int類型,表示框的數量。
  • data_type:int類型,表示輸入的數據類型。取值2代表half,取值4代表float。
  • core_num:int類型,表示可用的硬件核數。
  • core_version:硬件平台。

輸入:

  • boxes:輸入框,形狀是[num_boxes, 4]。
  • image_shape:圖片形狀,形狀是[4]。

輸出:

輸出形狀是[num_boxes, 4]的四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Combined NMS

  • 功能描述

支持多batch多class的NMS。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • box:一個3維tensor,描述輸入的box。
  • score:一個3維tensor,描述輸入的score。
  • 參數:
    • max_size_per_class:每個label的最大輸出size。
    • total_size_per_batch:每個batch的最大輸出size,為-1時等於num_boxes。
    • nms_topk:控制NMS前面的topk。
    • score_threshold:分數閾值。
    • iou_threshold:iou閾值。
    • pad_per_class:是否對每個class做pad。
    • clip_boxes:是否進行ClipToWindow。
    • normalized:是否正則化。
    • nms_eta:動態調整iou閾值。
    • background_label:背景的label。
    • batch_size:batch大小。
    • num_classes:輸入class的數量。
    • num_boxes:輸入box的數量。
    • box_size:box的維度。
    • data_type:數據類型,支持half和float32。

輸出:

  • output_box:一個3維張量,描述輸出box。
  • output_score:一個2維張量,描述輸出box的score。
  • output_class:一個2維張量,描述輸出box的class。
  • output_valid:一個1維張量,描述各bacth輸出的有效box的數量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Conv3d

  • 功能描述

五維(NDHWC)卷積運算。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • input_n:輸入張量的batch維度。
    • input_d:輸入張量的depth維度。
    • input_h:輸入張量的height維度。
    • input_w:輸入張量的weight維度。
    • input_c:輸入張量的channel維度。
    • output_d:輸出張量的depth維度。
    • output_h:輸出張量的height維度。
    • output_w:輸出張量的weight維度。
    • output_c:輸出張量的channel維度。
    • kernel_d : 卷積核的depth維度。
    • kernel_h : 卷積核的hight維度。
    • kernel_w : 卷積核的weight維度。
    • stride_d: 卷積核在depth維度的步長。
    • stride_h: 卷積核在hight維度的步長。
    • stride_w: 卷積核在weight維度的步長。
    • dilation_d: 卷積核在depth維度的膨脹大小。
    • dilation_h: 卷積核在hight維度的膨脹大小。
    • dilation_w: 卷積核在weight維度的膨脹大小。
    • pad_d1: 輸入在depth維度起始處的填充大小。
    • pad_d2: 輸入在depth維度終末處的填充大小。
    • pad_h1: 輸入在hight維度起始處的填充大小。
    • pad_h2: 輸入在weight維度終末處的填充大小。
    • pad_w1: 輸入在weight維度起始處的填充大小。
    • pad_w2: 輸入在weight維度終末處的填充大小。
    • groups: 卷積在channel維度分組大小。
    • has bias:是否具有bias。
    • in_oc_pos:輸入張量的量化position。
    • in_oc_scale:輸入張量的量化scale。
    • filter_pos:權值的量化position。
    • filter_scale:權值的量化scale。
    • compute_dtpe :輸入張量的片上計算類型。
    • input_tensors:輸入數據的描述符,個數必須是1。
    • filter_tensors:權值數據的描述符,個數必須是1。
    • bias_tensors:bias數據的描述符,個數必須是1。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Conv3d Bn Scale Active

  • 功能描述

在conv3d的輸出上進行bn scale active運算。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體。
    • input_n:輸入張量的batch維度。
    • input_d:輸入張量的depth維度。
    • input_h:輸入張量的height維度。
    • input_w:輸入張量的weight維度。
    • input_c:輸入張量的channel維度。
    • output_d:輸出張量的depth維度。
    • output_h:輸出張量的height維度。
    • output_w:輸出張量的weight維度。
    • output_c:輸出張量的channel維度。
    • kernel_d : 卷積核的depth維度。
    • kernel_h : 卷積核的hight維度。
    • kernel_w : 卷積核的weight維度。
    • stride_d: 卷積核在depth維度的步長。
    • stride_h: 卷積核在hight維度的步長。
    • stride_w: 卷積核在weight維度的步長。
    • dilation_d: 卷積核在depth維度的膨脹大小。
    • dilation_h: 卷積核在hight維度的膨脹大小。
    • dilation_w: 卷積核在weight維度的膨脹大小。
    • pad_d1: 輸入在depth維度起始處的填充大小。
    • pad_d2: 輸入在depth維度終末處的填充大小。
    • pad_h1: 輸入在hight維度起始處的填充大小。
    • pad_h2: 輸入在weight維度終末處的填充大小。
    • pad_w1: 輸入在weight維度起始處的填充大小。
    • pad_w2: 輸入在weight維度終末處的填充大小。
    • groups: 卷積在channel維度分組大小。
    • has bias:是否具有bias。
    • in_oc_pos:輸入張量的量化position。
    • in_oc_scale:輸入張量的量化scale。
    • filter_pos:權值的量化position。
    • filter_scale:權值的量化scale。
    • compute_dtpe :輸入張量的片上計算類型。
    • input_tensors:輸入數據的描述符,個數必須是1。
    • filter_tensors:權值數據的描述符,個數必須是1。
    • bias_tensors:bias數據的描述符,個數必須是1。
    • bn_mean_tensor:bn_mean數據的描述符,個數必須是1。
    • bn_mean_tensor:bn_varn數據的描述符,個數必須是1。
    • scale_alpha_tensor:scale_alpha數據的描述符,個數必須是1。
    • scale_beta_tensor:scale_beta數據的描述符,個數必須是1。
    • active_type: 激活類型,只能是CNML_ACTIVE_RELU。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Continuation Indicator

  • 功能描述

提供0或者1的輸出數據。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • batch_size: 輸出的通道數。
    • time_step: 輸出的batch數。

輸出:

無。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Convolution Forward

  • 功能描述

用於進行卷積計算。

支持型號:MLU270。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • pad_top: h維度的起始處的pad size。
    • pad_bottom: h維度終止處的pad size。
    • pad_left:w維度的起始處的pad size。
    • pad_right: w維度的終止處的pad size。
    • kh:kernel在h維度的大小。
    • kw:kernel在w維度的大小。
    • sh:在h維度的stride大小。
    • sw:在w維度的stride大小。
    • dh:在h維度的dilation大小。
    • dw:在w維度的dilation大小。
    • input_pos:輸入的position量化參數。
    • weight_pos:權值的position量化參數。
    • input_scale:輸入的scale量化參數。
    • weight_scale:權值的scale量化參數。
    • input_tensors: 輸入數據的描述符,一共兩個。輸入第一個輸入規模必須是 [batch_num, hi. wi, ci],layout為NHWC。 第二個輸入規模必須是[1, 1, 1, 136],layout為NHWC。0-7的元素為 [batch_num, hi, wi, ci, ho, wo, co],8-134的元素為block_info的數據, 135的元素為kernel_type。block_info和kernel_type都通過調用接口獲得。

輸出:

  • output_tensors: 輸出數據的描述符,一共一個輸出。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入類型-權值類型-偏移類型-輸出類型分別支持 float16、int8、float16、float16或者float16、int8、float16、uint8。
    • ci和co只能為3和64的排列組合。
    • pad size只能在ci = co =3 時,等於0。

Crop And Resize

  • 功能描述

從輸入圖片中裁剪出小圖再調整尺寸到指定大小,實現過程如下:

  1. roiNums決定一張圖片裁剪多少次。
  2. cropParams 決定每次裁剪的坐標(x y w h)。
  3. 將各個裁剪得到的小圖片調整到指定大小。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • PluginCropAndResizeOp參數結構體:
    • src:四維張量用於描述原始圖像。
    • cropParams:四維張量用於描述所有的分割參數和roi參數。
    • roiNums:四維張量用於描述每張圖片的roi個數。

輸出:

  • dst:四維張量用於描述目標圖像。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。若返回異常則至少以下兩項中有一項不滿足要求:

  • 參數與輸入張量相對應。
  • cropParams和roiNums一致。
  • 規格限制
    • 輸入圖像的寬度不超過8,192像素。
    • 輸出圖像的寬度不超過2,048像素(MLU270系列)。
    • 放大模式下的倍率不超過50(MLU270系列)。
    • 輸入的batch數必須是1。
    • cropParams中儲存的roi框描述方式均為左上角坐標以及框的寬和高,依次為roi_x、roi_y、roi_w、roi_h。

Crop Feature And Resize

  • 功能描述

對輸入的feature map(N C H W),根據檢測出的bbox的坐標位置,將對應位置的feature map(N C H W)片段截取出來,然后所有截取的feature map都改變大小為固定的大小。

  • box_number表示對feature map進行多少次剪裁。
  • boxes_gdrm表示每次剪裁的坐標(x, y, w, h)。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

PluginCropFeatureAndResizeOp參數結構體:

  • src_gdrm:四維張量用於描述輸入feature map。
  • boxes_gdrm:四維張量用於描述輸入剪裁的坐標。
  • box_index_gdrm:四維張量用於描述輸入boxes的索引。
  • batchNum:batch的大小。
  • depth:輸入的channel。
  • image_height:輸入feature map的高度。
  • imgae_width:輸入feature map的寬度。
  • crop_height:調整的高度。
  • crop_width:調整的寬度。
  • box_number:需要對輸入的feature map進行多少次剪裁,即bbox的個數。

輸出:

  • dst_gdrm:四維張量用於描述輸出的feature map。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。若為異常至少以下兩項中有一項不滿足要求:

  • 參數與輸入張量相對應。
  • boxes_gdrm 和box_number應該一致。
  • 規格限制
    • 輸入圖像的寬度不超過8,192像素。
    • 輸出圖像的寬度不超過2,048像素。
    • 放大模式下的倍率不超過50。
    • 輸入的batch數必須是1。

Ctc Greedy Decoder

  • 功能描述

此算子用於推理過程,對輸入的序列進行解碼:對出入的序列數據中的每個序列單元查找概率最大的索引,然后按照分隔符的位置對得到的索引序列進行去重,輸出去重后的標簽結果。

支持型號:MLU270系列。支持caffe。

  • 參數限制

輸入:

  • param: 輸入參數結構體,包括:
    • batch_size: 輸入張量的batch維度。
    • seq_len:輸入數據時間序列的長度,對應輸入張量的H維度。
    • class_num:輸入數據類別的個數,對應輸入張量的W維度,也是一個單元數據的個數。
    • merge_repeated:表示是否進行重復數據歸並的標志位。false代表不歸並,true代表歸並。
    • input:唯一輸入張量的描述符,形狀為[batch_size, seq_len, class_num, 1]。

輸出:

  • output:唯一輸出數據的描述符,形狀為[batch_size, seq_len, 1, 1]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入輸出tensor數據類型只支持float16。

Deconv3d

  • 功能描述

五維(NDHWC)反卷積運算。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • input_n:輸入張量的batch維度。
    • input_d:輸入張量的depth維度。
    • input_h:輸入張量的height維度。
    • input_w:輸入張量的weight維度。
    • input_c:輸入張量的channel維度。
    • output_d:輸出張量的depth維度。
    • output_h:輸出張量的height維度。
    • output_w:輸出張量的weight維度。
    • output_c:輸出張量的channel維度。
    • kernel_d : 卷積核的depth維度。
    • kernel_h : 卷積核的hight維度。
    • kernel_w : 卷積核的weight維度。
    • stride_d: 卷積核在depth維度的步長。
    • stride_h: 卷積核在hight維度的步長。
    • stride_w: 卷積核在weight維度的步長。
    • dilation_d: 卷積核在depth維度的膨脹大小。
    • dilation_h: 卷積核在hight維度的膨脹大小。
    • dilation_w: 卷積核在weight維度的膨脹大小。
    • pad_d1: 輸入在depth維度起始處的縮減大小。
    • pad_d2: 輸入在depth維度終末處的縮減大小。
    • pad_h1: 輸入在hight維度起始處的縮減大小。
    • pad_h2: 輸入在weight維度終末處的縮減大小。
    • pad_w1: 輸入在weight維度起始處的縮減充大小。
    • pad_w2: 輸入在weight維度終末處的縮減大小。
    • groups: 卷積在channel維度分組大小。
    • out_padding_d:輸出張量在depth維度的填充大小。
    • out_padding_h:輸出張量在hight維度的填充大小。
    • out_padding_w:輸出張量在weight維度的填充大小。
    • has bias:是否具有bias。
    • in_oc_pos:輸入張量的量化position。
    • in_oc_scale:輸入張量的量化scale。
    • filter_pos:權值的量化position。
    • filter_scale:權值的量化scale。
    • compute_dtpe :輸入張量的片上計算類型。
    • input_tensors:輸入數據的描述符,個數必須是1。
    • ilter_tensors:權值數據的描述符,個數必須是1。
    • ias_tensors:bias數據的描述符,個數必須是1。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Deconv3d Bn Scale Active

  • 功能描述

在deconv3d的輸出上進行bn scale active運算。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體。
    • input_n:輸入張量的batch維度
    • input_d:輸入張量的depth維度
    • input_h:輸入張量的height維度。
    • input_w:輸入張量的weight維度。
    • input_c:輸入張量的channel維度。
    • output_d:輸出張量的depth維度。
    • output_h:輸出張量的height維度。
    • output_w:輸出張量的weight維度。
    • output_c:輸出張量的channel維度。
    • kernel_d:卷積核的depth維度。
    • kernel_h:卷積核的hight維度。
    • kernel_w:卷積核的weight維度。
    • stride_d:卷積核在depth維度的步長。
    • stride_h:卷積核在hight維度的步長。
    • stride_w:卷積核在weight維度的步長。
    • dilation_d:卷積核在depth維度的膨脹大小。
    • dilation_h:卷積核在hight維度的膨脹大小。
    • dilation_w:卷積核在weight維度的膨脹大小。
    • pad_d1:輸入在depth維度起始處的縮減大小。
    • pad_d2:輸入在depth維度終末處的縮減大小。
    • pad_h1:輸入在hight維度起始處的縮減大小。
    • pad_h2:輸入在weight維度終末處的縮減大小。
    • pad_w1:輸入在weight維度起始處的縮減充大小。
    • pad_w2:輸入在weight維度終末處的縮減大小。
    • groups:卷積在channel維度分組大小。
    • out_padding_d:輸出張量在depth維度的填充大小
    • out_padding_h:輸出張量在hight維度的填充大小。
    • out_padding_w:輸出張量在weight維度的填充大小。
    • has bias:是否具有bias。
    • in_oc_pos:輸入張量的量化position。
    • in_oc_scale:輸入張量的量化scale。
    • filter_pos:權值的量化position。
    • filter_scale:權值的量化scale。
    • compute_dtpe:輸入張量的片上計算類型。
    • input_tensors:輸入數據的描述符,個數必須是1。
    • filter_tensors:權值數據的描述符,個數必須是1。
    • bias_tensors:bias數據的描述符,個數必須是1。
    • bn_mean_tensor:bn_mean數據的描述符,個數必須是1。
    • bn_mean_tensor:bn_varn數據的描述符,個數必須是1。
    • scale_alpha_tensor:scale_alpha數據的描述符,個數必須是1。
    • scale_beta_tensor:scale_beta數據的描述符,個數必須是1。
    • active_type:激活類型,只能是CNML_ACTIVE_RELU。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Density Prior Box

  • 功能描述

基於PaddlePaddle框架的desity_prior_box()算子。

基於輸入參數 densities、fixed_size,以及 fixed_ratio,為輸入圖片生成density prior box。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • feat_width:特征圖寬度。
    • feat_height:特征圖高度。
    • image_width:網絡輸入圖片寬度。
    • image_height:網絡輸入圖片高度。
    • variances_ptr:先驗框坐標方差數據指針。
    • variances_num:先驗框坐標的維度,必須是4。
    • densities_ptr:密度數據指針。
    • densities_num:密度數據的維度。
    • fixed_sizes_ptr:fixed_size數據指針。
    • fixed_size_num:fixed_size數據的個數。
    • fixed_ratio_ptr:fixed_ratio數據指針。
    • fixed_rario_num:fixed_ratio數據個數。
    • clip:是否對邊界框坐標進行[0,1]區間內的裁剪。
    • step_w:先驗框W方向的步長。
    • step_h:先驗框w方向的步長。
    • offset:先驗框中心相對於網格框中心的偏移。
    • float_precision:浮點數數據類型。
    • core_version:運行的硬件平台。
    • input_tensors:一組四維輸入張量。張量的個數為2,順序為:feat_tensor,img_tensor。

輸出:

  • output_tensors:一組思維輸出張量。張量的個數是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Depth to Space

  • 功能描述

將輸入的depth維度(C)按照 block_size 的尺寸重新排列到 spatial 維度(HW)。

支持型號:MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • input:一個擺數為NHWC的四維張量。
  • block_size:HW維度的塊狀尺寸。
  • input_n/input_h/input_w/input_c:輸入張量的形狀。其中,input_c必須是 block_size 的平方的整數倍。

輸出

  • output:一個擺數為HHWC的四維張量,形狀是[N, H*block_size, W*block_size, C/(block_size*block_size)]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Depthwise Conv

  • 功能描述

用於深度可分卷積(Depthwise-Separable Convolution)第一部分的計算,相較於通常的卷積,不會在channel維度上進行累加。

支持型號:MLU220和MLU270系列。僅支持4核(Union1)的運行場景。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • kernel_h:權值的height維度。
    • kernel_w:權值的width維度。
    • stride_h:權值在height方向上的stride大小。
    • stride_w:權值在width方向上的stride大小。
    • dilation_h:權值在height方向的dilation大小。
    • dilation_w:權值在width方向的dilation大小。
    • pad_h_back:在height維度末尾額外補充的0的個數。
    • pad_h_front:在height維度開頭額外補充的0的個數。
    • pad_w_back:在width維度末尾額外補充的0的個數。
    • pad_w_front:在width維開頭額外補充的0的個數。
    • group_count:channel維度進行group拆分的個數。
    • bias_flag:標識Convolution算子計算后是否加上權值的標志位bias。false代表不加bias,true代表加上bias。
    • input_tensors:輸入張量的標識符數組,包含三個張量的標識符,存放順序為:
  1. input:輸入張量的標識符,形狀為[input_n, input_h, input_w, input_c]。
  2. filter:輸入權值的標識符,形狀為[output_co, kernel_h, kernel_w, input_c]。
  3. bias:輸入偏置的標識符,形狀為[output_c, 1, 1, 1]。

輸出:

  • output_tensor:輸出張量的標識符,形狀為[output_n, output_h, output_w, output_c]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • kernel_h * kernel_w 不能超過1024。
    • dilation_h 和 dilation_w必須是1。
    • 輸入-權值-輸出的數據類型組合目前只支持:
      • float16-float16-float16
      • float32-float32-float32

Det Retina Detection Output

  • 功能描述

Det網絡后處理算子。

  1. 接收坐標、類別、置信度和topk的框索引號四個輸入張量以及張量的形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標。左上角位置的xy坐標以及框的長寬。
  3. 最后算子會對解碼后生成的邊界框進行非極大值抑制(NMS)操作,將不符合要求的邊界框篩除,並輸出剩余的邊界框。

支持型號:MLU220和MLU270系列。支持PyTorch。

  • 參數限制

輸入:

  • inputs:一組detretina的輸入張量,維度是四維。
  • detretina_static_tensors:當標志位 CONST_PRIOR_TENSOR 為true時,需要傳入先驗框張量的指針(priorbox and variance),否則置為nullptr即可。

輸出:

  • outputs:一組retina的輸出張量,維度是四維,形狀是 [batchNum, 64 + 7 * numMaxBox, 1, 1](NCHW)。目前僅支持FLOAT16類型。每個batch的前兩個數字存儲檢框,每個檢測框的數據從第65個數字開始,以[batchId, classId, score, x1, y1, x2, y2]的順序存儲,(x1, y1) 和(x2, y2)代表左上和右下檢測框的坐標值。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Faster Rcnn Detection Output

  • 功能描述

對Faster-RCNN全連接層產生的數據進行處理,實現過程如下:

  1. 對於每個roi,根據bbox_pred進行坐標變換,得到真正的框的坐標。
  2. 對於每個類別,篩除score小於閾值的框,將其概率置為0。
  3. 按照類別,對剩下的框進行NMS操作。
  4. 按照類別,輸出篩選得到有效的含有該類別物體的所有框的坐標及其分數。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • PluginFasterRcnnDetectionOutput參數結構體:
    • bbox_pred:一組四維張量,形狀是[num_class * 4, box_num, 1, 1](NCHW),支持類型是FLOAT16和FLOAT32。
    • scores_pred:一組四維張量,形狀是[num_class, box_num, 1, 1](NCHW),支持類型是FLOAT16和FLOAT32。
    • rois_pred:一組四維張量,形狀是[1, box_num, 1, 5](NCHW),支持類型是FLOAT16和FLOAT32。
    • batch_num:batch的個數。
    • box_num:檢測框個數。
    • im_h:backbone網絡的輸入圖像的高度。
    • im_w:backbone網絡的輸入圖像的寬度。
    • score_thresh:得分的閾值。
    • fix8:輸入張量的類型是否為int8。如果該參數設為1,輸入張量的類型是int8類型。如果該參數設為0,輸入張量的類型是FLOAT或者HALF類型。
    • scale:圖片的縮放比例。

輸出:

  • new_box:一組四維張量,形狀是[1, box_num * num_class, 1, 6](NCHW),支持類型是FLOAT16和FLOAT32。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Gemm Topk

  • 功能描述

對量化后的特征查詢向量與底庫進行矩陣乘,求得內積相似度,再輸出相似度的topk以及索引。

支持型號:MLU270和MLU220系列。支持PyTorch。

  • 參數限制

輸入:

  • Param參數結構體包括:
    • m:查詢特征向量的batch數。
    • k:特征向量的特征長度。
    • n:底庫中向量的數量。
    • topk:輸出相似度最高的特征向量的個數。
    • recip_scale: 數據的量化參數Scale的數據。
    • pos:數據的量化參數Position的數據。
    • input_tensors:輸入數據的描述符,個數必須為2。第一個張量代表查詢向量,形狀為 [m, k, 1, 1]。第二個張量代表庫向量,形狀為 [k, n, 1, 1]。

輸出:

  • output_tensors:輸出數據的描述符個數必須為3,第一個張量代表查詢向量與所有庫向量的相似度,形狀為 [m, n, 1, 1]。第二個張量代表前topk個內積相似度的值,形狀為 [m, topk, 1, 1]。第三個張量代表前topk個內積相似度的索引,形狀為 [m, topk, 1, 1]。
  • 規格限制

無。

Grid Sample

  • 功能描述

此算子需要輸入一個input以及對應的flow-filed網格,比如光流、體素流等,根據流場grid中每個位置提供的坐標信息(這里指input中的pixel坐標),將input中對應位置的像素值雙線性插值到grid指定的位置,得到最終輸出。

支持型號:MLU270和MLU220系列。

  • 參數限制

輸入:

  • Param參數結構體包括:
    • batch_size:輸入batch的數目。
    • channels:輸入c維度的大小。
    • input_width:輸入width的大小。
    • input_height:輸入height的大小。
    • output_width:輸出width的大小。
    • output_height:輸出height的大小。
    • input_tensors:包含兩個tensor,存放順序為:
  1. 輸入tensor,layout為[N,H_in,W_in, C]。
  2. grid tensor,layout為[N,H_out,W_out,2]。

輸出:

  • output_tensors:輸出tensor,共一個,layout為[N,H_out, W_out,C]。
  • 規格限制
    • 支持float和half兩種數據類型,但是精度會隨着輸入shape的增長而下降,因此建議使用float模式(half模式與float模式性能一致,且精度較差)。
    • float模式:支持1080P以下常用規模,channels需要小於30,batch_size需要小於15。
    • half模式:不建議使用。

Gru

  • 功能描述

GRU (Gated Recurrent Unit) 是 LSTM 網絡的一種效果很好的變體,算子根據時間循環,每個時間片對 input 和 state 分別進行三次矩陣乘和激活,計算得到新的 state,作為下一個時間片的state。同時支持多層與雙向功能。

支持型號:MLU220和MLU270系列。支持pytorch。

  • 參數限制

輸入:

  • Param參數結構體包括:
    • batch:輸入的 N 維度大小。
    • time:輸入的 T 維度大小。
    • input_size:輸入的 C 維度大小。
    • hidden_size:state 和輸出的 C 維度大小。
    • algo:計算模式。
    • num_layer:層數。
    • layout:數據擺放格式。取值1表示NTC;取值0表示TNC。
    • input_tensors:是一組輸入數據的描述符,存放順序為:
  1. 輸入數據維度為[batch, time, input_size]。
  2. 隱藏層的描述,維度為[num_layer, batch, hidden_size]。
  3. 權重的描述符,其順序為[num_layer, bidirectional, 6]。
  4. 張量的偏移,其順序和權重順序相同。
  • gru_static_tensors:用於存儲權重量化的poition和scale參數。

輸出:

  • output_tensors:三個輸出數據的描述符,第一個是workspace描述符,第二個為每個時間片的輸出,規模為[batch, time, bi * hidden_size],第三個為每層每個方向最后一個的state,規模為[num_layer, bi * hidden_size],其中bi = is_bidirectional ? 2 : 1。
  • 規格限制
    • 對於time或者num_layer太大有可能導致累積誤差過大,精度越界的問題。

Lstm

  • 功能描述

LSTM是一類用於處理序列數據的神經網絡,它解決了傳統神經網絡不能從數據中共享位置的特征的問題。

支持型號:MLU270系列。支持pytorch。

  • 參數限制

輸入:

  • Param參數結構體包括:
    • t_max:最大RNN輸入輸出序列的長度。
    • n:輸入輸出序列的數量。
    • input_size:輸入張量的大小。
    • hidden_size:隱藏層的大小。
    • layer_num:堆疊層的數量。
    • direction:選擇的循環模式(0表示單向網絡,1表示輸出壓縮在一層)。
    • bias_mode:RNN偏移向量的數據。
    • x_order:RNN輸入數據的順序。
    • y_order:RNN輸出輸入的順序。
    • x_qt:RNN輸入數據量化的數據類型。
    • x_pos:RNN對應輸入數據類型的量化參數position。
    • x_scale:RNN對應輸入數據類型的量化參數scale。
    • hx_qt:隱藏層的量化數據類型(目前僅支持與RNN輸入數據量化類型相同)。
    • hx_pos:隱藏層的量化參數position。
    • hx_scale:隱藏層的量化參數scale。
    • input_tensors:一個tensor數組,數組個數為五個或四個(無bias時為四個)。
    • static_tensors:一個tensor數組,個數為兩個,第一個只支持為整形,第二個只支持為浮點型。

輸出:

  • output_tensors:一個tensor數組,個數為四個。數據類型只支持浮點型。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • Weight bytes = qtp_dw * 4 * ALIGN_UP(hidden, 64) * (ALIGN_UP(hidden, 64) + ALIGN_UP(vector_size, 64)) <= 4MB。
    • ALIGN_CI = (128 / out_dw) >= (64 / qtp_dw) ? (128 / out_dw) : (64 / qtp_dw)。 當權重大小小於1M時,需要滿足:
    • 374KB <= n * (CEIL_ALIGN(hidden_size, ALIGN_CI) * (out_dw + qtp_dw) +
    •          CEIL_ALIGN(vector_size, ALIGN_CI) * (out_dw + qtp_dw) +
    •          CEIL_ALIGN(hidden_size, ALIGN_CO) * (out_dw * 6))
    •          + 8 * CEIL_ALIGN(hidden_size, ALIGN_CO) * out_dw。

當權重大小大於1M且小於4M時,需要滿足:

temp = CEIL_ALIGN(CEIL_ALIGN(hidden_size, 64) / 64, 4) / 4。

374KB <= batch * (temp * (out_dw + qtp_dw) +

         ALIGN_UP(vector_size, 64) * (out_dw + qtp_dw) +

         temp * (out_dw * 6)) + 8 * temp * out_dw  < 374KB。

Mean Std

  • 功能描述

對於輸入進行減均值除方差。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • input_tensors:輸入數據的描述符,個數必須為1,形狀是[n,h,w,c]。
  • static_tensors: 輸入的常量數據描述符,個數為2。第一個代表均值,形狀是[1, 1, 1, c * 64]。第二個代表方差,形狀是[1, 1, 1, c * 64]。

輸出:

output_tensors:輸出數據的描述符個數必須為1,形狀為 [n, h, w, c],

  • 規格限制
    • 輸入數據是UINT8的時候,(w + 64) * c < 224 * 1024。
    • 輸入數據是INT16的時候,(w + 64) * c < 112 * 1024。

Mean Variance Normalize

  • 功能描述

按照一定規則計算輸入數據的均值和方差,並使用均值和方差對相應的數據進行歸一化。該算子相較於普通的歸一化,不使用訓練時學習到的mean和std,而是使用輸入數據的mean和std進行歸一化。

支持型號:MLU270系列和MLU220系列,使用的核數必須是4。

  • 參數限制
    • across_channels:是否分通道進行歸一化。當取值為0是,對每一個通道的數據進行歸一化,當取值為1時,對整個batch的數據進行歸一化。當前僅支持取值為0。

輸入:

  • input_tensor:四維非零張量,輸入數據的描述符。數據類型必須是UINT8,數據排布順序必須是NCHW。

輸出:

  • output:輸出數據的描述符。維度和輸入張量相同的輸出張量,數據類型必須是FLOAT32,數據排布順序必須是NHWC。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 256 <= h * w <= 57600。
    • h * w * c < 524288。

Mish

  • 功能描述

Yolov4特有算子,等價於x*tanh(ln(1+exp(x)))。

支持型號:MLU270系列。支持TensorFlow。

  • 參數限制

參數

  • len:輸入數據長度。
  • data_type:輸入數據類型,2表示half,4表示float。
  • core_version:硬件平台。
  • precision_level: 算子精度水平,可設置0和1,默認是0。

輸入:

  • input_tensor:任意維度非零張量。

輸出:

  • output:維度等於輸入維度的輸出張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入張量任意維度非零。

Nms

  • 功能描述

MXNet框架NMS (Non Maximum Suppression)算子。對監測網絡中bounding box進行預選框的篩選。

根據overlap_thresh和valid_thresh來對score降序排列的前K個items進行NMS操作。

支持型號:MLU270系列。支持MXNet。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • input:輸入數據。一個3維張量。形狀為[batch_size, num_items, item_size]。其中每個item中必會包含box坐標和score,也可能包含class_id和其他元素。
  • tmp_buff:存放中間結果的張量,形狀為(num_items, topk)。
  • score_buff:存放中間結果的張量,形狀為(core_num * ALIGN_SIZE)。
  • batch_size(n):batch數。
  • num_items(c):每個batch中item個數。
  • item_size(h):每個item中元素個數,最大支持16個。
  • overlap_thresh:IOU閥值。
  • valid_thresh:分數閥值,會篩選出大於該閥值的item。
  • topk:按分數排序,選取前k個,進行NMS操作。
  • coord_start:box坐標開始的下標,box坐標應該是連續存放的。
  • score_index:score下標。這里的下標都是在item中的下標。
  • id_index:class_id下標。
  • background_id:背景的class_id。
  • force_suppress:bool類型。設為True時,會對所有item進行NMS操作。設為False時,只會對同種類別的item進行NMS操作。
  • in_format:輸入box坐標數據格式。
  • out_format:輸出box坐標數據格式。0表示corner(xmin,ymin,xmax,ymax),1表示center(x, y, w, h)。

輸出:

  • output:輸出數據。一個3維張量。與輸入數據有相同形狀。每個batch前面有效數據是篩選后留下的數據,其余部分置位-1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • item_size不可超過16。

Non Max Suppression

  • 功能描述

按照參數scores的降序來選擇邊界框的子集。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • boxes:一個2維張量,描述輸入的box。
  • scores:一個1維張量,描述輸入的score。
  • len:一個整型值,表示輸入box數量。
  • max_num:一個整型值,表示可以利用NMS選中的最大邊框數。
  • iou_threshold:一個float值,表示選中框的IOU閾值。
  • score_threshold:一個float值,表示選中框的分數閾值。

輸出:

一個描述選中框索引的一維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

OneHot

  • 功能描述

One-Hot編碼算子,用N位狀態寄存器對N個狀態進行編碼。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • indices:需要進行編碼的目標張量。
  • N、H、W、C:indices的維度信息。
  • depth:編碼的深度。
  • onvalue:編碼的開值。
  • offvalue:編碼的閉值。
  • axis:輸出矩陣的擴充軸。

輸出:

  • 編碼之后的張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 最高支持四維輸入。

Op Tensor

  • 功能描述

用於進行簡單雙目類型的計算。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • alpha1: input1的標量縮放系數。
    • alpha2: input2的標量縮放系數。
    • beta: output的標量縮放系數,該算子的輸出矩陣同時也作為輸入使用。
    • op_type: 用於指定算子模式的標志位,0:加法模式;1:減法模式;2:乘法模式。
    • input_tensors: 輸入數據的描述符,個數必須是3,前兩個分別為兩個形狀一致的輸入矩陣 (即input1,input2)。最后一個輸入矩陣用於儲存上述兩個輸入數據的形狀,即形狀為 [4,1,1,1]的向量,按照NCHW的順序進行儲存。

輸出:

  • output_tensors: 輸出數據的描述符,個數必須是1,形狀必須和兩個輸入矩陣相同。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入數據支持float32/float16。
    • 輸入輸出張量的元素個數分別不能超過UINT32數據的上界。

Pad

  • 功能描述

pad算子的功能是將給定值填充到張量外圍,其中張量擴展大小是由paddings參數指定的。paddings是形狀為[n,2]的整數張量,其中n為張量的秩。對於輸入的每個維度dim,paddings[dim, 0]表示的是在張量的dim維度的前端添加的數值個數。paddings[dim, 1]表示的是在張量的dim維度的后端添加的數值個數。因此輸出的第k維大小是:paddings[k,0] + tensor.dim_size(k) + paddings[k,1]。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • input_tensor:一個N維的的張量,1-8維。
  • paddings(dims,2):一個2維const tensor,dims和input_tensor的dims保持一致。

輸出:

  • output_tensor:維度和input_tensor保持一致。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Post Process Rpn

  • 功能描述

根據rpn的輸出生成region proposal的算子,實現過程如下:

  1. 將輸入的anchor解碼,得到cy cx h w。
  2. 根據box encoding微調 解碼后的anchor坐標。
  3. 計算修正后的框的最大最小值,刪掉面積為0的框。
  4. 對分數做softmax。
  5. 去掉softmax后物體概率小於0.01的框。
  6. 剩下的框即是輸出。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • rpn_box_encodings_batch:描述bounding box的張量。
  • rpn_objectness_predictions_with_background_batc:預測前景和背景的分數值。
  • anchors:描述anchor的張量。
  • tmp_tensor:用於在MLU上分配臨時空間的張量。

輸出:

  • proposal_box:輸出張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Proposal

  • 功能描述

根據anchor和feat map經過NMS操作得到框。

兩個主要輸入anchors和feat map:

  • anchors是anchor generators算子的輸出。對於一個固定網絡,anchors是常數,所以也可以用CPU生成后作為const張量傳入。
  • feat map一般是從卷積中得到,包含對anchor的微調信息。

實現過程如下:

  1. feat map經過解碼得到對x、y、w、h 的微調信息。
  2. 將微調信息應用到anchors上得到算子輸出。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • param:ProposalOp參數結構體。
  • cnml_input_tensor:兩個四維張量組成的數組:
    • bbox:[batch_size,AHW, 1, 4](NCHW)。
    • score:[batch_size,AHW, 1, 4](NCHW)。

輸出:

  • cnml_output_tensor:兩個四維張量組成的數組,
  • 第一個是算子的正式輸出:[batch_size,nms_num, 1, 5](NCHW)
  • 第二個是算子使用的臨時空間:[batch_size,AHW * 6, 1, 1](NCHW)

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

PS ROI Pool

  • 功能描述

position sensitive的roi pooling算子。該算子接收代表score與bbox的特征圖以及對應的ROI信息,對於每一個ROI,輸出一個由所有grid cell平均池化的結果堆疊而來的特征圖。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

PluginPsRoiPoolOp參數結構體:

  • proposal_input_tensors:一組四維張量,長度為2。輸入張量bbox的形狀是[batchNum,AWH, 1, 4](NCHW)、ROI框的形狀是[batch_num, num_rois, rois_offset, 1]。支持類型是FLOAT16。

輸出:

  • proposal_output_tensors:一組四維張量,形狀是[batchNum * num_rois, outputdim, pooled_height, pooled_width](NCHW)。如果需要轉數輸出,那么就需要初始化該向量的position和scale。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回。

Pyramid ROI Align

  • 功能描述

根據rois的面積,對roi進行分級,不同級的roi選擇不同的feature輸入進行CropAndResize操作。

支持型號:MLU220和MLU270系列。

  • 參數限制

參數

  • batch_size:當前實現僅支持batch_size=1。
  • roi_nums:roi框的數量。
  • roi_cols:表示每個roi框所使用的數字個數。
  • features_channel:輸入特征的channel數。
  • feature_1_height和feature_1_width:第一個特征張量的height和width。
  • feature_2_height和feature_2_width:第二個特征張量的height和width。
  • feature_3_height和feature_3_width:第三個特征張量的height和width。
  • feature_4_height和feature_4_width:第四個特征張量的height和width。
  • image_meta_len:描述輸入圖片的元數據長度。
  • crop_height和crop_width:crop框的height和width。
  • data_type:輸入數據的字節數,取值2代表half,取值4代表float。

輸入:

  • boxes:存儲roi框的張量,形狀是(batch_size, roi_nums, roi_cols]。
  • input_image_meta:存儲描述圖片元數據的張量,形狀是(1,14)。
    • 形狀為[0]:表示圖片ID。
    • 形狀為[1:4):表示原始圖片形狀。
    • 形狀為[4:7):表示圖片形狀。
    • 形狀為[7:11):表示圖片窗口。
    • 形狀為[11):表示規模。
    • 形狀為[12:]:表示前景類別序號。
    • featrue_map_fp1:一共四組feature輸入,該輸入保存第一組feature,形狀是(batch_size, feature_1_height, feature_1_width, feature_channels)。
    • featrue_map_fp2:一共四組feature輸入,該輸入保存第二組feature,形狀是(batch_size, feature_2_height, feature_2_width, feature_channels)。
    • featrue_map_fp3:一共四組feature輸入,該輸入保存第三組feature,形狀是(batch_size, feature_3_height, feature_3_width, feature_channels)。
    • featrue_map_fp4:一共四組feature輸入,該輸入保存第四組feature,形狀是(batch_size, feature_4_height, feature_4_width, feature_channels)。

輸出:

輸出形狀是(batch_size, roi_nums, crop_heitght, crop_width, feature_channels)的一個四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回。

  • 規格限制

當前實現僅支持batch_size等於1。

Range

  • 功能描述

創建數字序列。

支持型號:MLU220和MLU270系列。支持TensorFlow。

  • 參數限制

輸入:

輸入為三個張量,維度為都為1:

  • start:序列范圍的起始值。
  • limit:序列上限。
  • delta:遞增start的數字。

輸出:

  • 生成序列的一維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Refine Detections

  • 功能描述

篩選出每個類別得分最高的框,然后對得分最高的框進行校准。

支持型號:MLU220和MLU270系列。

  • 參數限制

參數

  • batch_size:int類型,目前只支持取值為1。
  • num_boxes:int類型,表示框的數量。
  • num_classes:int類型,表示類別數量。
  • meta_length:int類型,表示輸入圖片的元數據長度。
  • box_std0:float類型,標准差。校准框時乘的一個系數。
  • box_std1:float類型,標准差。校准框時乘的一個系數。
  • box_std2:float類型,標准差。校准框時乘的一個系數。
  • box_std3:float類型,標准差。校准框時乘的一個系數。
  • data_type:int類型,表示輸入的數據類型。取值2代表half,取值4代表float。
  • core_num:int類型,表示可用的硬件核數。
  • core_version:硬件平台。

輸入:

  • boxes:候選框,形狀是[batch_size,num_boxes,4]。
  • probs:候選框對應類別得分,形狀是[batch_size,num_boxes,num_classes]。
  • delta boxes:候選框的偏移值,形狀是[batch_size,num_boxes,num_classes,4]。
  • image_meta:圖片元數據,形狀是[batch_size,14]。
    • 形狀為[0]:表示圖片ID。
    • 形狀為[1:4):表示原始圖片形狀。
    • 形狀為[4:7):表示圖片形狀。
    • 形狀為[7:11):表示圖片窗口。
    • 形狀為[11):表示規模。
    • 形狀為[12:]:表示前景類別序號。

輸出:

  • output_boxes:輸出框,形狀是[batch_size,num_classes,num_boxes,4]。
  • output_probs:形狀是[batch_size,num_classes,num_boxes]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制

當前實現僅支持batch_size等於1。

Reflection Pad

  • 功能描述

鏡像補pad操作,基於PyTorch中的同名接口的實現。

支持型號:MLU220和MLU270系列。支持PyTorch。

  • 參數限制

參數

  • core_version:硬件平台。
  • n:int類型,輸入的batch數。
  • c:int類型,輸入的通道數。
  • h:int類型,輸入的高度。
  • w:int類型,輸入的寬度。
  • pad_left:int類型,左邊補pad的大小。
  • pad_right:int類型,右邊補pad的大小。
  • pad_top:int類型,上面補pad的大小。
  • pad_bottom:int類型,下面補pad的大小。
  • dtype:int類型,表示輸入的數據類型。0表示half類型,1表示float類型。

輸入:

  • input_tensor:一個四維張量,各個維度均為非零正整數。

輸出:

  • output_tensor:一個四維張量,各個維度均為非零正整數,輸出張量的周圍會帶上通過pad_left,pad_right,pad_top,pad_bottom四個參數定義的pad數據。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。如果返回異常,則以下兩種條件至少有一種沒有滿足:

  • 規格限制

輸出的通道co和寬度wo:

  • float 類型:wo * co < 1024 * 112
  • half類型:wo * co <1024 * 224

Residual In Residual

  • 功能描述

RCAN超分網絡的ResidualInResidual模塊的融合算子,融合了兩個ResidualInResidual模塊。

  • 參數限制

輸入:

  • param:輸入參數結構體。
    • input0_pos: conv0輸入數據的Position量化參數。
    • input1_pos: conv1輸入數據的Position量化參數。
    • input2_pos: conv2輸入數據的Position量化參數。
    • input3_pos: conv3輸入數據的Position量化參數。
    • post_pos: 算子輸出數據的Position量化參數。
    • weight0_pos: conv0權值數據的Position量化參數。
    • weight1_pos: conv1權值數據的Position量化參數。
    • weight2_pos: conv2權值數據的Position量化參數。
    • weight3_pos: conv3權值數據的Position量化參數。
    • input0_scale: conv0輸入數據的Scale量化參數。
    • input1_scale: conv1輸入數據的Scale量化參數。
    • input2_scale: conv2輸入數據的Scale量化參數。
    • input3_scale: conv3輸入數據的Scale量化參數。
    • post_scale: 算子輸出數據的Scale量化參數。
    • weight0_scale: conv0權值數據的Scale量化參數。
    • weight1_scale: conv1權值數據的Scale量化參數。
    • weight2_scale: conv2權值數據的Scale量化參數。
    • weight3_scale: conv3權值數據的Scale量化參數。
    • post_cvt: 用於表示是否進行輸出數據量化的標志位,0:不進行輸出量化;1:進行輸出量化。
    • relu_mode: 用於表示激活函數類型的標志位,目前僅支持0,即ReLU激活函數。
    • input_tensors:輸入數據的描述符,包含的描述符個數必須是2。第一個描述符代表輸入數據, 形狀為【N H W 64】,順序是NHWC。第二個描述符代表輸入數據的形狀,形狀為【4 1 1 1】, 並按照NHWC的順序儲存輸入張量的形狀數據。
    • static_tensors: 靜態數據的描述符,包含的描述符個數必須是8。其中第一,三,五, 七個描述符代表conv0到conv3的權值,形狀均為【64 3 3 64】,順序是NHWC。第二,四,六, 八個描述符代表conv0-conv3的偏置,形狀均為【1 1 1 64】,順序是NHWC。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是1。形狀為【N H W 64】的張量。形狀必須和輸入張量相同。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
  • 偏置:數據類型為float16,形狀必須為[1 1 1 64]。
  • 輸出:輸出數據類型為float16。
  • 輸入和輸出:H和W維度都必須大於等於16。H維度必須小於等於1080, W維度必須小於等於1920。C維度必須是64。
  • 權重:形狀必須是[64 3 3 64]。

Resize

  • 功能描述

對四通道圖片RGBA等進行resize。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • param:輸入參數結構體。
  • cnml_input_ptr:一組描述原始圖像的四維張量。

輸出:

  • cnml_output_ptr:一組描述處理后圖像的四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。如果返回異常,則以下兩種條件至少有一種沒有滿足:

  • param與輸入張量一致。
  • 輸入張量沒有滿足YUV420SP格式。
  • 規格限制
    • 輸入圖像的寬度不超過4,096像素。
    • 輸出圖像的寬度不超過2,048像素。
    • 放大模式下的倍率不超過50。

Resize Yuv To Rgba

  • 功能描述

接受YUV圖片(420SP),先轉換成RGBA,再調整到指定大小后輸出。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • param:輸入參數結構體:
    • s_row:原圖像的高(V1接口有效)。
    • s_col:原圖像的寬(V1接口有效)。
    • d_row:目標圖像的高。
    • d_col:目標圖像的寬。
    • roi_x:roi左上角x坐標(V1接口有效)。
    • roi_y:roi左上角y坐標(V1接口有效)。
    • roi_w:roi的寬度(V1接口有效)。
    • roi_h:roi的高度(V1接口有效)。
    • mode:輸入YUV圖像的格式。
    • batchNum:圖像數量。
    • keepAspectRatio:圖像縮放時是否保持縱橫比(V2、V3接口有效)。
    • padMethod:圖像縮放保持縱橫比是,邊界填充的模式,0為兩邊填充邊界,1為右邊或下邊填充邊界(V3接口有效)。
    • cnml_input_ptr:一組描述原始圖像的四維張量:
      • 描述原始圖像Y通道數據的四維張量。
      • 描述原始圖像UV通道數據的四維張量。
      • 描述原始圖像尺寸的四維張量(V2接口有效)。
      • 描述原始圖像roi坐標的四維張量(V2接口有效)。

輸出:

  • cnml_output_ptr:一組描述處理后圖像的四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。如果返回異常,則以下兩種條件至少有一種沒有滿足:

  • param與輸入張量一致。
  • 輸入張量沒有滿足YUV420SP格式。
  • 規格限制
    • 輸入圖像的寬度不超過8,192像素。
    • 輸出圖像的寬度不超過2,048像素。
    • roi的右側邊界不應該超過原圖像的寬度。
    • roi的下方邊界不應該超過原圖像的高度。
    • 在橫向放大倍數不應該超過64。

Resize Yuv To Yuv

  • 功能描述

調整Yuv420SP_NV12/NV21格式圖片的大小。

  1. 接收任意數量的圖片的指針並讀取數據。
  2. 通過雙線性插值將圖片調整到指定大小,支持放大和縮小功能。
  3. 將輸出的圖片按照輸入時的順序連續儲存至DDR的給定位置。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • y_ptr:一組代表了輸入圖片Y通道數據的指針。指針指向的地址空間並不需要連續。Y通道數據的順序必須和UV通道數據的順序一一對應。
  • uv_ptr:一組代表了輸入圖片UV通道數據的指針。指針指向的地址空間並不需要連續。UV通道數據的順序必須和Y通道數據的順序一一對應。
  • s_col:輸入圖片的寬度,必須為8像素對齊。
  • s_row:輸入圖片的高度,必須為8像素對齊。
  • d_col:輸出圖片的寬度,必須為8像素對齊。
  • d_row:輸出圖片的高度,必須為8像素對齊。
  • batch_num:圖片的張數。

輸出:

dst_ptr:一整塊連續排布的數據塊,大小為 batch_num * d_col * d_row。

cnmlCreatePluginResizeYuvToYuvOp_V2和cnmlCreatePluginResizeYuvToYuvOpParam_V3接口支持算子的放大和縮小功能:

  • 輸入:
    • param:cnmlPluginResizeAndColorCvtParam_t參數結構體
    • cnml_input_ptr:5個四維度張量組成的數組,大小都是[batchNum, 1, ,1 ,1],
    • Ysrc_gdram:用於存儲Y通道輸入數據的二級指針,第一維度是batchId,第二維度是每一個batch的Y通道的數據。
    • UVsrc_gdram:用於存儲UV通道輸入數據的二級指針,第一維度是batchId,第二維度是每一個batch的UV通道的數據。
    • srcWH_gdram:用於存儲原始圖片的寬度和高度的數據的二級指針,第一維度為batchId,第二維度兩個數分別是當前batch的width,heigth
    • roiRect_gdram:用於存儲roi描述的二級指針,第一維度為batchId,第二維度為roi_x,roi_y, roi_w, roi_h(每一個batch可以有多個roi)
    • 輸出:
      • Ydst_gdram:用於存儲Y通道結果的二級指針,第一維度是batchId,第二維度是每一個batch的Y通道的結果
      • UVdst_gdram:用於存儲UV通道結果的二級指針,第一維度是batchId,第二維度是每一個batch的Y通道的結果

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 不支持單核情況下運行,最小粒度為1個集群(cluster)。
    • 由於YUV格式的限制,圖片的長寬必須都是偶數,roi_x和roi_y也必須是偶數。
    • roi的右側邊界不應該超過原圖像的寬度。
    • roi的下方邊界不應該超過原圖像的高度。
    • 目前V1和V2接口只支持down scale,有效圖片的有效寬度應小於4096,且只支持MLU270。V3接口支持放大,最大放大61倍,支持MLU220和MLU270。
    • 在一些規模下,如果MLU端用half存儲小數部分,CPU端用double存儲小數部分,會導致雙線性插值的權重計算精度有一定的誤差,最終導致部分像素點結果有所誤差。

Retina Detection Output

  • 功能描述

Retina網絡后處理算子。

  1. 接收坐標、類別、置信度這三個輸入張量及其形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標。左上角位置的XY坐標以及框的長寬。
  3. 算子對解碼后生成的邊界框進行非極大值抑制即NMS操作。將不符合要求的邊界框篩除,並輸出剩余的邊界框。

支持型號:MLU220和MLU270系列。支持Pytorch。

  • 參數限制

參數

  • num_rois:輸入ROI的數量。
  • spatial_scale:原始圖片與特征圖的比值。
  • channels:特征圖通道數。
  • height:特征圖高度。
  • width:特征圖寬度。
  • pooled_height:輸出池化后的高度。
  • pooled_width:輸出池化后的高度。
  • sampling_ratio:每個池化單元划分的格子數。
  • roi_cols:一個ROI單元長度。
  • batch_size:輸入特征圖batch值。

輸入:

  • input_tensors:四維輸入張量,ROIS為2維張量。

輸出:

  • output_tensor:4維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

ROI Align

  • 功能描述

對region of interest (ROI)區域做雙線性插值,然后進行最大池化操作。

  1. ROI數據形狀是 [batch_size, rois_num, 1, roi_cols], 或者 [batch_size, roi_cols, rois_num, 1]。其中roi num表示一個batch經過proposal后生成候選框的個數;roi_cols包含框的x1、y1、x2、y2(可能是經過歸一化的)。
  2. 從ROI中獲取的框的坐標在特征圖上均分為畫成pooled_height、pooled_width大小的區域,對區域內的值做雙線性插值,然后進行最大池化操作得到算子的輸出。

支持型號:MLU220和MLU270系列。支持PyTorch。

  • 參數限制

輸入:

  • param:RoiPoolOp參數結構體。
  • roiPool_input_tensors:兩個四維張量組成的數組,一個形狀是[batch_size, channels, height, width](NCHW)。另一個形狀是[batch_size, rois_num, 1, roi_cols](NCHW)。支持FLOAT32 和 FLOAT16。
  • roiPool_output_tensors:一組四維張量,形狀是[batch_size * rois_num, channels, pooled_height, pooled_width](NCHW)。

輸出:

指向BaseOp的指針。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 當前只支持batch=1。

ROI Align For Fpn

  • 功能描述

根據rois的面積,對roi進行分級,對不同級的rois區域分別做雙線性插值,然后進行max pooling。最后得到一組尺度統一的歸一化后的特征圖。

支持型號:MLU220和MLU270系列。

  • 參數限制
    • channels: 輸入特征圖的通道數。
    • pooled_height: 輸出池化后的高度。
    • pooled_width: 輸出池化后的寬度。
    • sampling_ratio: 每個池化單元划分的格子數。
    • num_rois: 輸入的roi的數量。
    • roi_offset: 每個roi的尺寸,目前必須是4。roi表示形式為[x1,y1,x2,y2]。
    • batch_size: batch size大小。
    • canonical_scale: roi正則面積,用於划分每個roi屬於哪一級的特征圖。由網絡訓練時得到的參數。
    • canonical_level: roi正則級數,用於划分每個roi屬於哪一級的特征圖。由網絡訓練時得到的參數。
    • num_level: 輸入的特征圖的級數,根據官網模型文檔和該算子接口設計,最大不能超過7。
    • img_h: 輸入圖片的高度。
    • img_w: 輸入圖片的寬度。

輸入:

  • input_tensors: 輸入數據的描述符,個數為num_level加1:
    • 前num_level個為不同級數的特征圖, 形狀分別是[batch_size, channels, H(n), W(n)],n為第幾級的特征圖。
    • 最后一個為rois, 形狀為[batch_size*num_rois, roi_offset, 1, 1]。
    • static_tensors: 輸入的常量數據描述符,個數為1。該常量數據表示了每個級數的特征圖的寬高信息。形狀為[1, num_level*2, 1, 1],數據排布是[h1, w1, h2, w2, …, hn, wn]。

輸出:

  • output_tensors: 輸出數據的描述符,個數為1。形狀為 [batch_size * rois_num, channels, pooled_height, pooled_width]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

ROI Pool

  • 功能描述

對region of interest區域進行最大池化,實現過程如下:

  • roi數據的形狀為[batch_size, rois_num, 1, roi_cols]。其中roi_num表示一個batch經過proposal后生成候選框的個數,roi_cols包含框的x1 y1 x2 y2(可能是經過歸一化的)。
  • 從roi中獲取的框的坐標在feature map上均分為pooled_height、pooled_width大小的區域,進行最大池化得到算子的輸出。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • param:RoiPoolOp參數結構體。
  • roiPool_input_tensors:兩個四維張量組成的數組,一個形狀是[batch_size, channels, height, width](NCHW)。另一個形狀是[batch_size, rois_num, 1, roi_cols](NCHW)。支持FLOAT32 和 FLOAT16。
  • roiPool_output_tensors:一組四維張量,形狀是[batch_size * rois_num, channels, pooled_height, pooled_width](NCHW)。

輸出:

指向BaseOp的指針。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

ROI Pool For Fpn

  • 功能描述

多尺度RoIPooling。用於特征金字塔網絡(FPN),對不同尺度中感興趣區域(region of interest)進行最大池化(max pooling)。

  1. roi數據形狀是 [batch_size, rois_num, 1, roi_cols],其中roi_num表示一個batch經過proposal后生成候選框的個數,roi_cols包含框的x1、y1、x2、y2(可能是經過歸一化的)。
  2. 根據roi坐標信息計算出其對應尺度的特征圖(feature map)。
  3. 將roi中獲取的框的坐標在上一步中所得到的feature map上均分為畫成pooled_height和pooled_width大小的區域,進行最大池化得到算子的輸出。

支持型號:MLU270系列。支持PyTorch。

  • 參數限制

輸入:

  • param:RoiPoolForFpnOp參數結構體。
  • roiPoolForFpn_input_tensors:八個四維張量組成的數組。前七個張量的形狀是[batch_size, channels, height, width](NCHW)。不同尺度對應不同的height和width,最多支持7個尺度輸入。另一個形狀是:[batch_size, rois_num, 1, roi_cols](NCHW)。支持FLOAT32和FLOAT16數據類型。
  • roiPoolForFpn_static_tensors:兩個四維張量組成的數組。一個張量用於存放圖像信息,形狀是[batch_size, 3, 1, 1]。另一個張量存放多尺度feature map的高和寬,形狀是[1, 2 * num_level, 1, 1]。

輸出:

  • roiPool_output_tensors:一組四維張量,形狀是[batch_size * rois_num, channels, pooled_height, pooled_width](NCHW)。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Scatter

  • 功能描述

將src中的數據根據index中的索引按照dim方向填進輸入中。

支持型號:MLU220和MLU270系列。支持PyTorch。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • core_version:運行的硬件平台。
    • input_n:輸入input的batch。
    • input_h:輸入input的height。
    • input_w:輸入input的width。
    • input_c:輸入input的channel。
    • index_n:輸入index的batch。
    • index_h:輸入index的height。
    • index_w:輸入index的width。
    • index_c:輸入index的channel。
    • src_n:輸入src的batch。
    • src_h:輸入src 的height。
    • src_w:輸入src的width。
    • src_c:輸入src的channel。
    • axis:scatter的參數表示軸。
    • scalar:表示src是否是標量。src是表示標量,設置為1。否則設置為0。
    • dtype:輸入的類型。支持的值:
      • 1:表示float32。
      • 0:表示float16。
      • input_tensors:輸入數據的描述符,個數必須是1。

輸出:

output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入的index類型是int32, 輸入input和src是float32或float16。
    • 輸入和輸出的tensor_shape為NHWC。。

SR Basic Block

  • 功能描述

輸入特征地圖、權值以及量化參數,輸出新的特征地圖。支持輸入可變。

支持型號:MLU270系列。支持PyTorch。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • weight_tensor:輸入權值的描述符。
    • weight_float:輸入權值的數據,類型是FLOAT32。
    • bias_tensor:輸入偏置的描述符。
    • bias_tensor:輸入偏置的數據,類型是FLOAT32。
    • input_pos_tensor:輸入數據的量化參數Position的描述符。
    • input_pos:輸入數據的量化參數Position的數據。
    • input_scale_tensor:輸入數據的量化參數Scale的描述符。
    • input_scale:輸入數據的量化參數Scale的數據。
    • weight_pos_tensor:權值數據的量化參數Position的描述符。
    • weight_pos:權值數據的量化參數Position的數據。
    • weight_scale_tensor:權值數據的量化參數Scale的描述符。
    • weight_scale:權值數據的量化參數Scale的數據。
    • input_tensors:輸入數據的描述符,個數必須是1。

輸出:

output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入數據形狀必須是[N 64 360 640](對應NCHW)。
    • 輸入權值的形狀必須是[64 64 3 3],[64 64 3 3],[64 4 1 1],[4 64 1 1](對應NCHW)。

SR Last Block

  • 功能描述

基於某公司超分辨率網絡模型的一部分編寫而成的算子。

輸入特征地圖、權值以及量化參數,輸出新的特征地圖。

S實現網絡中最后的conv+add+deconv模塊。實現運算:

output = deconv(conv(input1, weight1) +input2, weight2)

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • weight_tensor:輸入權值的描述符,個數必須是3。
    • weight_float:輸入權值的數據,類型是FLOAT32。
    • bias_tensor:輸入偏置的描述符,個數必須是3。
    • bias_tensor:輸入偏置的數據,類型是FLOAT32。
    • input_pos_tensor:輸入數據的量化參數Position的描述符。
    • input_pos:輸入數據的量化參數Position的數據。
    • input_scale_tensor:輸入數據的量化參數Scale的描述符。
    • input_scale:輸入數據的量化參數Scale的數據。
    • weight_pos_tensor:權值數據的量化參數Position的描述符。
    • weight_pos:權值數據的量化參數Position的數據。
    • weight_scale_tensor:權值數據的量化參數Scale的描述符。
    • weight_scale:權值數據的量化參數Scale的數據。
    • num_conv:由於deconv會被拆成2個conv,所以num_of_conv必須為3。
    • batch_num:輸入的batch大小。
    • hi:輸入的height大小。
    • wi:輸入的width大小。
    • ho:輸出的height大小。
    • wo:輸入的width大小。
    • input_tensors:輸入數據的描述符,個數必須是2。

輸出:

output_tensors:輸出數據的描述符,個數必須是1。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • weight的權值大小固定[co, kh, kw ,ci]:

[64, 3, 3, 64 ]

[128, 3, 3, 64 ]

[128, 3, 3, 64 ]

  • bias大小固定分別為:64、128、128。
  • ho = 2 * hi並且wo = 2 * wi。
  • wi <= 1096。

SSD Detection Output

  • 功能描述

Ssd網絡后處理算子,實現過程如下:

  1. 接收坐標、類別、置信度這三個輸入張量及其形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標,左上角位置的xy坐標以及框的長寬。
  3. 最后算子會對解碼后生成的邊界框進行非極大值抑制(NMS操作),將不符合要求的邊界框篩除,並輸出剩余的邊界框。

支持型號:MLU220和MLU270系列。僅支持Caffe和Pytorch框架。

  • 參數限制

輸入:

  • inputs:一組ssd的輸入張量,維度是四維,形狀為[batchNum, (5 + classNum) * numMaskGroup, inputH, inputW](NCHW)。目前僅支持FLOAT16類型。
  • ssd_static_tensors:當標志位 CONST_PRIOR_TENSOR 的值為真時,用戶需要在計算前設置 ssd_static_tensors 參數的值為prior_tensor,否則 ssd_static_tensors 參數會被設為空指針。prior_tensor包括priorbox和variance。

輸出:

outputs:

  • 一組yolov3的輸出張量,維度是四維,形狀是 [batchNum, 64 + 7 * numMaxBox, 1, 1](NCHW)。
  • 僅支持FLOAT16類型。
  • 每個batch的前兩個數字存儲檢框的個數,每個檢測框的數據從輸出張量中每個batch的第65個數字開始,以[batchId, classId, score, x1, y1, x2, y2]的順序存儲,(x1, y1) 和(x2, y2)代表左上和右下檢測框的坐標值。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Topk

  • 功能描述

獲取每一個Batch的前k個最大值以及該數據在原始數據中對應的下標,最大值按照從大到小的順序進行排列。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • batch_size:輸入的batch數。
    • channels:每一個batch中channel的個數。
    • topk_num:每一個batch中選出前topk_num個最大值。
    • topk_data_type:表述數據輸入類型,0:float32,1:float16。
    • topk_index_type: 輸入數據下標的類型,0:int32,1:uint32。
    • input_tensors:輸入數據的描述符,個數必須是1,只包含輸入數據,數據維度只有NC。
    • static_tensors:輸入的數據下標描述符,個數必須是1包含輸入數據的下標,每一個batch都是從[0,1,…,channels-1]。

輸出:

  • output_tensors:輸出數據的描述符,個數必須是2。其中的一個tensor為每一個batch中前topk_num個最大值。另一個tensor為每一個最大值對應在原始數據中的下標,兩個tensor的維度必須都是NC。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。如果返回異常,則以下至少有一種沒有滿足:

  • param與輸入張量一致。
  • input_tensors的個數為1。
  • static_tensors個數為1。
  • output_tensors個數為2。
  • topk_num <= channels。
  • channels大於等於1,小於int32的最大數據表示范圍。
  • 規格限制
    • batch_size支持任意非零整數。
    • channels支持任意非零整數。

Transformer Enc Attn

  • 功能描述

Transformer或Bert網絡中的self-atten模塊,通俗稱為注意力層。實現運算如下:

  1. 生成QKV向量,QKV分別為Query、Key、Value,例如:

x=input,w=weight Q = matmul(x,w) K、V類似。

  1. 計算attention score:Z=QK^T。
  2. 歸一化得分:S=softmax(Z)。
  3. Z歸一化得分去聯合Value:P=matmul(S, transpose(V))。
  4. 尾部接全連接層:F=FullyConnect(P)。
  5. 后置layernorm歸一化:Result = Layernorm(P)。

支持型號:MLU270系列。

  • 參數限制

輸入:

  • cnml_static_ptr:一組描述輸入權值的四維張量,具體如下:
    • 0-layernormbias。
    • 1-layernormscale。
    • 2-QKV權值偏置。
    • 3-尾部權值偏置。
    • 4-Q權值。
    • 5-K權值。
    • 6-V權值。
    • 7-尾部權值。
    • cnml_intput_ptr:一組描述輸入數據的四維張量,其中0-輸入,1-mask輸入。
    • query_factor:Q因子系數。
    • Normalization:是否進行layernorm,0不進行,1進行。
    • batch_size:輸入batch數。值必須大於0。
    • token:token數目,支持值在[1, 128]區間內。
    • seq_len:詞典長度,僅支持512。
    • dim_k:K向量維度,僅支持64。
    • dim_v:V向量維度,僅支持64。
    • head_size:頭部數據,僅支持8。
    • q_weight_pos:Q權值量化pos值。
    • k_weight_pos:K權值量化pos值。
    • v_weight_pos:V權值量化pos值。
    • out_fc_weight_pos:尾部權值量化pos值。
    • q_weight_scale:Q權值量化scale值。
    • k_weight_scale:K權值量化scale值。
    • v_weight_scale:V權值量化scale值。
    • out_fc_weight_scale:尾部權值量化scale值。
    • MASK:是否進行詞典掩蓋,0不進行,1進行。
    • is_input_quant:輸入是否量化。
    • is_input_online_quant:輸入是否在線量化。
    • qkv_online_quant:qkT結果是否在線量化。
    • isZout_online_quant:softmax dot v結果是否在線量化。
    • qkv_out_type:QKV輸出類型。

輸出:

cnml_output_ptr:一組描述處理后數據的四維張量。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

Transformer FFN

  • 功能描述

Transformer或Bert網絡中的FFN模塊。實現運算如下:

Y=active(X*W1+b1)*W2+b2

active的激活類型一般包括ReLU和GELU。

該算子中還集成了layernorm,包括前置layernorm和后置layernorm。

后置運算為:Y=Layernorm(X + FFN(X))

前置運算為:Y=X+FFN(Layernorm(X))

支持型號:MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體:
    • batch_num:batch數量。支持任意非零整數。
    • seq_len:句子長度。支持任意非零整數。
    • hidden_size:編碼向量長度。支持值為256、512、768、1024。
    • filter_size:FFN中間擴維長度。支持值為1024、2048、4096、5120、6144、7168、8192。
    • online_quantify:是否采用在線量化。
    • output_quantify:輸出是否提前轉數。
    • add_flag:前置layernorm時后面是否采用相加操作。
    • active_mode:激活函數類型。
    • layernorm_mode:采用什么形式的layernorm。
    • input_quantify_pos:輸入數據的pos量化參數。
    • input_quantify_scale:輸入數據的scale量化參數。
    • inter_quantify_pos:中間結果的pos量化參數。
    • inter_quantify_scale:中間結果的scale量化參數。
    • output_quantify_pos:輸出結果的pos量化參數。
    • output_quantify_scale:輸出結果的scale量化參數。
    • inter_weights_quantify_pos:內側權值的pos量化參數。
    • inter_weights_quantify_scale:內側權值的scale量化參數。
    • outer_weights_quantify_pos:外側權值的pos量化參數。
    • outer_weights_quantify_scale:外側權值的scale量化參數。
    • cnml_input_ptr:一組描述輸入數據的四維張量。描述輸入句子的四維張量[batch_num, seq_len, hidden_size]。

輸出:

cnml_output_ptr:一組描述輸出數據的四維張量。描述輸入句子的四維張量[batch_num, seq_len, hidden_size]。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。返回為異常值的時候,至少有一下兩種中的一種情況沒有滿足:

  • param與輸入張量一致。
  • 輸入張量沒有滿足YUV420SP格式。
  • 規格限制
    • batch_num支持任意非零整數。
    • seq_len支持任意非零整數。
    • hidden_size支持256、512、768、1024。
    • filter_size支持1024、2048、3072、4096、5120、6144、7168、8192。

Warp Affine

  • 功能描述

對輸入張量進行仿射變換(warp-affine),輸入為輸入張量以及仿射變換矩陣,輸出為仿射變換后的張量。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:輸入參數結構體,包括:
    • src:輸入張量數據。
    • mat:仿射變換矩陣。
    • batch_size:輸入的batch數。
    • dst_h:輸出圖片的高。
    • dst_w:輸出圖片的寬。
    • src_h:輸入圖片的高。
    • src_w:輸入圖片的寬。
    • c:輸入圖片以及輸出圖片的通道數。

輸出:

dst:輸出tensor數據。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制

輸入和輸出數據類型必須為uint8_t類型。輸入和輸出的tensor_shape為NHWC。仿射矩陣的數據類型為float32。

Yolov2 Detection Output

  • 功能描述

Yolov2網絡后處理算子:

  1. 接收包含坐標、類別對應置信度、objscore和bias這些信息的輸入張量及其形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標。即bbox的中心點坐標和bbox的寬度與高度。
  3. 算子會對解碼后生成的邊界框進行非極大值抑制(NMS操作)。將不符合要求的邊界框篩除,並輸出剩余的邊界框。
  4. 算子支持輸入的特征圖寬度和高度不同。

支持型號:MLU220和MLU270系列。支持Caffe。

  • 參數限制

輸入:

  • paramYolov2DetectionOutput:參數結構體。
  • inputs:Yolov2的輸入四維張量,形狀是 [batchNum,5*width*height , 1,5 + classNum](NCHW),支持FLOAT32和FLOAT16。

輸出:

  • outputs:兩個四維張量,分別為:
    • outputs[0]:yolov2的輸出四維張量,形狀是[batchNum, 256, 1, 7](NCHW)。每個batch存儲在7*256長度的數據塊中:
      • 0*256范圍內存放batch id。
      • 1*256范圍內存放class id。
      • 2*256范圍內存放confidence。
      • 3*256范圍內存放xc。
      • 4*256范圍內存放yc。
      • 5*256范圍內存放w。
      • 6*256范圍內存放h。
      • outputs[1]:臨時空間,維度四位,形狀是[batchNum, anchornum * width * height, 1, (paramnum + 5)](NCHW)。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制

使用share memory的時候,默認每個核計算decode box之后數量不多於256個框。如果空間不夠,可以通過宏文件里面的 SM_BOSNUM_PER_CORE 來配置大小。

Yolov3 Detection Output

  • 功能描述

yolov3網絡后處理算子,實現過程如下:

  1. 接收不超過七個的輸入張量及其形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標,左上角位置的xy坐標以及框的長寬。
  3. 最后算子會對解碼后生成的邊界框進行非極大值抑制(NMS操作)。將不符合要求的邊界框篩除,並輸出剩余的邊界框。

支持型號:MLU220和MLU270系列。支持Caffe和PyTorch。

  • 參數限制

輸入:

paramYolov3DetectionOutput 參數結構體:

  • inputs:一組yolov3的輸入張量,維度是四維,形狀是 [batchNum, (5 + classNum) * numMaskGroup, inputH, inputW](NCHW),目前僅支持FLOAT16類型。

輸出:

  • outputs:一組yolov3的輸出張量,維度是四維,形狀是[batchNum, 64 + 7 * numMaxBox, 1, 1](NCHW),目前僅支持FLOAT16類型。每個batch的第一個數字存儲檢框,每個檢測框的數據從第65個數字開始,以[batchId, classId, score, x1, y1, x2, y2]的順序存儲,(x1, y1) 和(x2, y2)代表左上和右下檢測框的坐標值。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入張量的HW乘積之和不超過32,768。
    • 輸入張量使用相同數量的anchor。
    • 輸入的confidence_thresh可以篩去絕大部分的非物體邊界框。
    • 輸入輸出張量的數據類型支持FLOAT16和FLOAT32。

Yolov5 Detection Output

  • 功能描述

yolov5網絡后處理算子,實現過程如下:

  1. 接收不超過七個的輸入張量及其形狀參數。
  2. 將相應位置的數據解碼成邊界框的坐標,左上角位置的xy坐標以及框的長寬。
  3. 最后算子會對解碼后生成的邊界框進行非極大值抑制(NMS操作)。將不符合要求的邊界框篩除,並輸出剩余的邊界框。

支持型號:MLU220和MLU270系列。支持Caffe和PyTorch。

  • 參數限制

輸入:

paramYolov5DetectionOutput 參數結構體:

  • inputs:一組yolov5的輸入張量,維度是四維,形狀是 [batchNum, (5 + classNum) * numMaskGroup, inputH, inputW](NCHW),目前僅支持FLOAT16類型。

輸出:

  • outputs:一組yolov5的輸出張量,維度是四維,形狀是[batchNum, 64 + 7 * numMaxBox, 1, 1](NCHW),目前僅支持FLOAT16類型。每個batch的第一個數字存儲檢框,每個檢測框的數據從第65個數字開始,以[batchId, classId, score, x1, y1, x2, y2]的順序存儲,(x1, y1) 和(x2, y2)代表左上和右下檢測框的坐標值。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制
    • 輸入張量的HW乘積之和不超過32,768。
    • 輸入張量使用相同數量的anchor。
    • 輸入的confidence_thresh可以篩去絕大部分的非物體邊界框。
    • 輸入輸出張量的數據類型支持FLOAT16和FLOAT32。

Yuv To Rgb

  • 功能描述

接收yuv圖片(420SP),輸出RGBA等四通道類型的圖片。

支持型號:MLU220和MLU270系列。

  • 參數限制

輸入:

  • param:PluginYuvToRgbOp參數結構體。
  • yuv2rgb_input_tensors:一組四維張量,形狀是[batchNum, channelIn, rows, cols](NCHW),支持類型是FLOAT16和UINT8。

輸出:

  • outputs:一組四維張量,形狀是[batchNum, channel, rows, cols](NCHW),支持類型是FLOAT16和UINT8。

返回值:

正常返回值是CNML_STATUS_SUCCESS,其他為異常返回值。

  • 規格限制

輸入圖像寬度不超過32,768像素。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM