CANN/ops-cv ROIAlign反向传播算子

CANN/ops-cv ROIAlign反向传播算子

ROIAlignGrad

【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv

产品支持情况

产品是否支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

  • 算子功能:ROIAlign 的反向传播。ROIAlign 是一种池化层,用于非均匀输入尺寸的特征图,并输出固定尺寸的特征图;本算子将正向输出的梯度y_diff依据感兴趣区域rois反向散射累加回输入特征图梯度x_diff
  • 计算公式:
    • 输入节点:
      • y_diff (shape[K,C,pooled_height,pooled_width], FLOAT32) - 反向传播的输入梯度,K 为 roi 个数。
      • rois (shape[K,5], FLOAT32) - 感兴趣区域坐标 (image_id, x1, y1, x2, y2)。
    • 计算节点:
      • Step1: 依据spatial_scale将 roi 坐标映射到输入特征图尺度;roi_end_mode为 2 时坐标偏移 -0.5 使相邻像素索引更好对齐。
      • Step2: 对每个输出网格 (pooled_height × pooled_width),按sample_num在 bin 内均匀采样,计算双线性插值的 4 个邻点坐标与权重。
      • Step3: 将y_diff上对应位置的梯度按双线性权重散射累加(原子写回)到x_diff的 4 个邻点。
    • 输出节点:
      • x_diff (shape 由xdiff_shape指定 [B,C,inputHeight,inputWidth], FLOAT32) - 反向传播的输出梯度。

参数说明

参数名输入/输出/属性描述数据类型数据格式
y_diff输入反向传播的输入梯度 [K,C,pooled_height,pooled_width]。FLOAT32ND/NCHW/NC1HWC0
rois输入感兴趣区域坐标 [K,5],5 代表 (image_id, x1, y1, x2, y2)。FLOAT32ND
x_diff输出反向传播的输出梯度 [B,C,inputHeight,inputWidth]。FLOAT32ND/NCHW/NC1HWC0
xdiff_shape属性正向输入的 shape,用来指定反向输出 x_diff 的 shape (B,C,inputHeight,inputWidth)。ListInt-
pooled_width属性正向 ROIAlign 池化后输出图像的宽度。Int-
pooled_height属性正向 ROIAlign 池化后输出图像的高度。Int-
spatial_scale属性乘法空间尺度因子,将 roi 坐标从输入空间尺度转换为池化时使用的尺度,需大于 0。Float-
sample_num属性(可选,默认 2)ROIAlign 中每个输出元素在 H 和 W 方向上的采样频率,需大于等于 0。Int-
roi_end_mode属性(可选,默认 1)roi 坐标对齐模式,2 时坐标偏移 -0.5 对齐相邻像素索引。Int-

约束说明

  • 目前只支持 float32 输入。
  • rois 第 1 维固定为 5,且第 0 维需与 y_diff 第 0 维(K)保持一致。
  • image_id 取值范围 [0, B),B 为 xdiff_shape 的第一个值。

调用说明

调用方式调用样例说明
aclnn调用test_aclnn_roi_align_grad通过 aclnnRoiAlignV2Backward 接口方式调用 ROIAlignGrad 算子。

贡献说明

贡献方贡献者贡献时间贡献内容
西北工业大学智能感知交互实验室Xzz2026/7/8ROIAlignGrad 算子适配开源仓

【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考