ResizeUpsampleTrilinear【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv产品支持情况产品是否支持Ascend 950PR/Ascend 950DT×Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品√Atlas 训练系列产品×功能说明算子功能对由多个输入通道组成的输入信号应用三线性插值算法进行上采样。计算公式核心算法逻辑将目标图像的每一个点映射回原图得到一个带小数点的坐标。根据这个浮点数坐标计算前后相邻的原始图像的点。分别计算相邻点到对应目标点的权重按照权重相乘累加即可得到目标点值。具体计算逻辑 缩放方式分为角对齐和边对齐角对齐表示按照原始图片左上角像素中心点对齐边对齐表示按照原始图片左上角顶点及两条边对齐在计算缩放系数和坐标位置时存在差异。对于一个三维插值点$(N, C, D, H, W)$则有以下公式$$ scale_d \begin{cases} (self.dim[2]-1) / (outputSize[0]-1) alignCornerstrue \ 1 / scales_d alignCornersfalsescales_d0\ self.dim[2] / outputSize[0] alignCornersfalse \end{cases} $$$$ scale_h \begin{cases} (self.dim[3]-1) / (outputSize[1]-1) alignCornerstrue \ 1 / scales_h alignCornersfalsescales_h0\ self.dim[3] / outputSize[1] alignCornersfalse \end{cases} $$$$ scale_w \begin{cases} (self.dim[4]-1) / (outputSize[2]-1) alignCornerstrue \ 1 / scales_w alignCornersfalsescales_w0\ self.dim[4] / outputSize[2] alignCornersfalse \end{cases} $$因此对于output的某个方向上的点p(x,y,z)映射回原始图像中的点记为q(x,y,z)则有关系$$ x \begin{cases} x * scale_d alignCornerstrue \ MAX(0,{(x0.5)*scale_d-0.5}) alignCornersfalse \end{cases} $$$$ y \begin{cases} y * scale_h alignCornerstrue \ MAX(0,{(y0.5)*scale_h-0.5}) alignCornersfalse \end{cases} $$$$ z \begin{cases} z * scale_w alignCornerstrue \ MAX(0,{(z0.5)*scale_w-0.5}) alignCornersfalse \end{cases} $$记$$ x_{0} int(x),x_{1} int(x)1, lambda_{0} x_{1}-x, lambda_{1} 1-lambda_{0} $$$$ y_{0} int(y),y_{1} int(y)1, lambdb_{0} y_{1}-y, lambdb_{1} 1-lambdb_{0} $$$$ z_{0} int(z),z_{1} int(z)1, lambdc_{0} z_{1}-z, lambdc_{1} 1-lambdc_{0} $$则有以下公式$$ {V(p_{x, y, z})} {V(p_{x0, y0, z0})} * {lambda_{0}} * {lambdb_{0}} * {lambdc_{0}} {V(p_{x0, y0, z1})} * {lambda_{0}} * {lambdb_{0}} * {lambdc_{1}} {V(p_{x0, y1, z0})} * {lambda_{0}} * {lambdb_{1}} * {lambdc_{0}} {V(p_{x0, y1, z1})} * {lambda_{0}} * {lambdb_{1}} * {lambdc_{1}} {V(p_{x1, y0, z0})} * {lambda_{1}} * {lambdb_{0}} * {lambdc_{0}} {V(p_{x1, y0, z1})} * {lambda_{1}} * {lambdb_{0}} * {lambdc_{1}} {V(p_{x1, y1, z0})} * {lambda_{1}} * {lambdb_{1}} * {lambdc_{0}} {V(p_{x1, y1, z1})} * {lambda_{1}} * {lambdb_{1}} * {lambdc_{1}} $$参数说明参数名输入/输出/属性描述数据类型数据格式input输入表示进行上采样的输入张量对应公式中的self。FLOAT32、FLOAT16、BFLOAT16NDoutput_size可选属性表示指定output在D、H和W维度上的空间大小对应公式中的outputSize。size为3且各元素均大于零。默认值为空。LISTINT-align_corners可选属性决定是否对齐角像素点对应公式中的alignCorners。align_corners为true则输入和输出张量的角像素点会被对齐否则输入和输出张量的左上角顶点及两条边对齐。默认值为false。BOOL-scales_d可选属性指定空间大小的depth维度乘数对应公式中的scales_d。默认值为空。FLOAT32-scales_h可选属性指定空间大小的height维度乘数对应公式中的scales_h。默认值为空。FLOAT32-scales_w可选属性指定空间大小的width维度乘数对应公式中的scales_w。默认值为空。FLOAT32-output输出表示采样后的输出张量对应公式描述中的output。数据类型和数据格式与入参input的数据类型和数据格式保持一致。FLOAT32、FLOAT16、BFLOAT16NDAtlas 推理系列产品 输入和输出的数据类型不支持BFLOAT16。入参input不支持输入inf、-inf。约束说明无调用说明调用方式样例代码说明aclnn接口test_aclnn_upsample_trilinear3d通过aclnnUpsampleTrilinear3d接口方式调用ResizeUpsampleTrilinear算子。【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考