Rockchip · AI & Linux Hub

AI 推理

RKNN2 V2.5.0 · RK3566/RK3568:基础与卷积

RKNN2 V2.5.0 · RK3566/RK3568:基础与卷积 · 完整算子参数与限制,按 V2.5.0 原稿整理。

· ArmSoM Editorial · Rockchip source documentation · 4 分钟阅读

本文为 RKNN2 V2.5.0 对应平台的算子参考,供 ArmSoM 开发者选型与模型适配时查阅。不能据此认定所有 ArmSoM 板卡均支持这些算子;需按板卡 SoC、实际 Toolkit2、Runtime、NPU 驱动及 BSP 版本核对。原稿没有统一指定适用 Linux 内核,本文未进行 ArmSoM 硬件验证。

来源:本地中英文《RKNN2 算子支持与约束参考》V2.5.0。中文依中文稿;英俄德依英文稿。两稿分别为 374/384 页。各平台限制独立保留,不将一个平台的支持结论推广到另一个平台。英文稿 I/O 原图与输出表仍含中文,本文保留其来源并另附可编辑的本地化表格。ConvTranpose 等原稿拼写及 LSTM/GRU 原始公式保留;不要将本文公式视为 SDK 实现修正。

原稿页码: CN 22–30; EN 23–32.

Rockchip RKNN2

算子参考系列目录

RKNN2 V2.5.0 · RK3566/RK3568:基础与卷积

RKNN2 V2.5.0 · RK3566/RK3568:循环网络、运算与池化

RKNN2 V2.5.0 · RK3566/RK3568:形状、切片与转置

RKNN2 V2.5.0 · RK3566/RK3568:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3588:基础与卷积

RKNN2 V2.5.0 · RK3588:循环网络、运算与池化

RKNN2 V2.5.0 · RK3588:形状、切片与转置

RKNN2 V2.5.0 · RK3588:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3562:基础与卷积

RKNN2 V2.5.0 · RK3562:循环网络、运算与池化

RKNN2 V2.5.0 · RK3562:形状、切片与转置

RKNN2 V2.5.0 · RK3562:激活、归一化与扩展算子

RKNN2 V2.5.0 · RV1103/RV1106:基础与卷积

RKNN2 V2.5.0 · RV1103/RV1106:循环网络、运算与池化

RKNN2 V2.5.0 · RV1103/RV1106:形状、切片与转置

RKNN2 V2.5.0 · RV1103/RV1106:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK3576/RV1126B:基础与卷积

RKNN2 V2.5.0 · RK3576/RV1126B:循环网络、运算与池化

RKNN2 V2.5.0 · RK3576/RV1126B:形状、切片与转置

RKNN2 V2.5.0 · RK3576/RV1126B:激活、归一化与扩展算子

RKNN2 V2.5.0 · RK2118:基础与卷积

RKNN2 V2.5.0 · RK2118:循环网络、运算与池化

RKNN2 V2.5.0 · RK2118:形状、切片与转置

RKNN2 V2.5.0 · RK2118:激活、归一化与扩展算子

RKNN2 V2.5.0 · RV1103B/RV1106B:基础与卷积

RKNN2 V2.5.0 · RV1103B/RV1106B:循环网络、运算与池化

RKNN2 V2.5.0 · RV1103B/RV1106B:形状、切片与转置

RKNN2 V2.5.0 · RV1103B/RV1106B:激活、归一化与扩展算子

RKNN2 V2.5.0 · CPU 算子支持与约束

RKNN2 V2.5.0 · GPU 算子支持与约束

RKNN2 V2.5.0 · 模型输入输出、对齐与卷积限制

NPU OPs 规格介绍

RK3566/RK3568

Add

执行元素级二进制加法(C=A+B),支持多向Numpy样式的广播

输入列表

  • A:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子
  • B:T1,T2
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer
    • 广播支持
      • 支持任意维度广播操作
      • 广播约束同Expand算子

输出列表

  • C:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:int8(Tensor),float16(Tensor)
  • T2:float(constTensor)

AddRelu

Add与Relu融合计算,C=Relu(A+B)

输入列表

  • 同Add

输出列表

  • 同Add

其他支持

  • 多核联合:支持

BatchNormalization

按照论文https://arxiv.org/abs/1502.03167中的描述对输入张量进行批量归一化计算

输入列表

  • input:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T1:int8(Tensor),float16(Tensor)

属性列表

  • epsilon:float(默认值=1e-5)
    • 除以标准差时加上防止除0的实数
    • epsilon∈(0,∞]
  • momentum:float
    • 训练时的滑动平均参数

Concat

将一系列向量在axis指定的方向上组合成一个向量,所有向量除axis指定的方向外大小必须相同

输入列表

  • input_tensor:T
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

输出列表

  • output:T
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

数据类型约束

  • T:int8(Tensor),float16(Tensor)

属性列表

  • axisint64
    • axis∈{0,1,2,3}

Convolution

卷积

输入列表

  • input_tensor:T1
    • shape:[batch,channel,height,width]
      • width: 当dilated_kernel_h>1时,width<16383。此外,对首层输入width存在限制,详见模型输入说明。
    • 量化支持
      • per-layer
  • weight:T1
    • shape:[output_channel,input_channel,kernel_h,kernel_w]
      • kernel_h∈[1,31]
      • kernel_w∈[1,31]
    • 量化支持
      • per-layer
      • per-channel

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

属性列表

  • strides:int(strides_h,strides_w)
    • stride_h∈[1,7]
    • stride_w∈[1,7]
  • pads:int(pads_top,pads_left,pads_bottom,pads_right)
    • pads_top∈[0,15]
    • pads_left∈[0,15]
    • pads_bottom∈[0,15]
    • pads_right∈[0,15]
  • group:int
  • dilations:int(dilations_h,dilations_w)
    • dilations_h∈[1,31]
    • dilations_w∈[1,31]

数据类型约束

  • T1:int8(Tensor),float16(Tensor)

Depthwise Convolution

深度可分离卷积

输入列表

  • input_tensor:T1
    • shape:[batch,channel,height,width]
      • width: 当dilated_kernel_h>1时,width<16383。此外,对首层输入width存在限制,详见模型输入说明。
    • 量化支持
      • per-layer
  • weight:T1
    • shape:[output_channel,input_channel,kernel_h,kernel_w]
      • kernel_h∈[1,8]
      • kernel_w∈[1,8]
    • 量化支持
      • per-layer
      • per-channel

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

属性列表

  • strides:int(strides_h,strides_w)
    • stride_h∈[1,7]
    • stride_w∈[1,7]
  • pads:int(pads_top,pads_left,pads_bottom,pads_right)
    • pads_top∈[0,15]
    • pads_left∈[0,15]
    • pads_bottom∈[0,15]
    • pads_right∈[0,15]
  • group:int
  • dilations:int(dilations_h,dilations_w)
    • dilations_h∈[1,32]
    • dilations_w∈[1,32]

数据类型约束

  • T1:int8(Tensor),float16(Tensor)

ConvolutionRelu

Convolution与Relu融合计算,Output=Relu(Conv(Input)) 说明及规格限制同Convolution

ConvolutionClip

Convolution与Clip融合计算,Output=Clip(Conv(Input)) 说明及规格限制同Convolution

ConvolutionPRelu/LeakyRelu

Convolution 与 PRelu/LeakyRelu 融合计算, Output = PRelu(Conv(Input)) 或者 Output =LeakyRelu(Conv(Input)) 说明及规格限制同Convolution

ConvolutionAdd

Convolution与Add融合计算,Output=Add(Conv(Input0),Input1) 说明及规格限制同Convolution

ConvolutionSigmoid

Convolution与Sigmoid融合计算,Output=Sigmoid(Conv(Input)) 说明及规格限制同Convolution

ConvolutionTanh

Convolution与Tanh融合计算,Output=Tanh(Conv(Input)) 说明及规格限制同Convolution

ConvolutionSoftplus

Convolution与Softplus融合计算,Output=Softplus(Conv(Input)) 说明及规格限制同Convolution

ConvolutionHardSigmoid

Convolution与HardSigmoid融合计算,Output=HardSigmoid(Conv(Input)) 说明及规格限制同Convolution

ConvolutionHardSwish

Convolution与HardSwish融合计算,Output=HardSwish(Conv(Input)) 说明及规格限制同Convolution

ConvolutionElu

Convolution与Elu融合计算,Output=Elu(Conv(Input)) 说明及规格限制同Convolution

ConvolutionSwish

Convolution与Swish融合计算,Output=Swish(Conv(Input)) 说明及规格限制同Convolution

ConvolutionMish

Convolution与Mish融合计算,Output=Mish(Conv(Input)) 说明及规格限制同Convolution

ConvolutionAddRelu

Convolution与Add及Relu融合计算,Output=Relu(Add(Conv(Input0),Input1)) 说明及规格限制同Convolution

ConvTranspose

转置卷积

输入列表

  • input_tensor:T1
    • shape:[batch,channel,height,width]
      • width: 当dilated_kernel_h>1时,width<16383。此外,对首层输入width存在限制,详见模型输入说明。
  • 量化支持
    • per-layer
  • weight:T1
    • shape:[output_channel,input_channel,kernel_h,kernel_w]
      • kernel_h∈[1,31]
      • kernel_w∈[1,31]
    • 量化支持
      • per-layer
      • per-channel

输出列表

  • output:T1
    • shape:[batch,channel,height,width]
    • 量化支持
      • per-layer

属性列表

  • strides:int(strides_h,strides_w)
    • stride_h仅支持1,2,4,8
    • stride_w仅支持1,2,4,8
  • pads:int(pads_top,pads_left,pads_bottom,pads_right) 设置pad时注意: 不支持kernel_hdilations_h-dilations_h-pads_top<0 不支持kernel_wdilations_w-dilations_w-pads_left<0 不支持stride_h(height-1)-pads_top+1<output_h 不支持stride_w(width-1)-pads_left+1<output_w
    • pads_top∈[0,15]
    • pads_left∈[0,15]
    • pads_bottom∈[0,15]
    • pads_right∈[0,15]
  • group:int
    • group:仅支持1,当且仅当num_input=num_output时支持num_output
  • dilations:int(dilations_h,dilations_w)
    • dilations_h∈[1,32]
    • dilations_w∈[1,32]
    • 当dilation不等于(1,1)时,只支持kernel=(1,1)

数据类型约束

  • T1:int8(Tensor),float16(Tensor)

ConvTranposeRelu

ConvTranpose与Relu融合计算,Output=Relu(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeClip

ConvTranpose与Clip融合计算,Output=Clip(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposePRelu/LeakyRelu

ConvTranpose与PRelu/LeakyRelu融合计算,Output=PRelu(ConvTranpose(Input))或者Output=LeakyRelu(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeAdd

ConvTranpose与Add融合计算,Output=Add(ConvTranpose(Input0),Input1) 说明及规格限制同ConvTranspose

ConvTranposeSigmoid

ConvTranpose与Sigmoid融合计算,Output=Sigmoid(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeTanh

ConvTranpose与Tanh融合计算,Output=Tanh(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeSoftplus

ConvTranpose与Softplus融合计算,Output=Softplus(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeHardSigmoid

ConvTranpose与HardSigmoid融合计算,Output=HardSigmoid(ConvTranpose(Input))

ConvTranposeHardSwish

ConvTranpose与HardSwish融合计算,Output=HardSwish(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeElu

ConvTranpose与Elu融合计算,Output=Elu(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeSwish

ConvTranpose与Swish融合计算,Output=Swish(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

ConvTranposeMish

ConvTranpose与Mish融合计算,Output=Mish(ConvTranpose(Input)) 说明及规格限制同ConvTranspose

浏览此主题 → · 入门路线 →