接口功能:ChamferDistance(倒角距离)的反向算子,根据正向的输入对输出的贡献及初始梯度求出输入对应的梯度。
计算公式:
假设有两个点集: xyz1=[B,N,2], xyz2=[B,M,2]
ChamferDistance(倒角距离)正向算子计算公式为:
反向算子即为对该公式求导,计算公式为:
对 的导数
其中:,是根据正向输出的id1的索引值从xyz2中取出距离最小的点的横坐标,单点求导公式如上,因为单点梯度更新的位置是连续的,所以考虑多点并行计算。
的导数
其中,是根据正向输出的id1的索引值从xyz2中取出距离最小的点的纵坐标,单点求导公式如上,因为单点梯度更新的位置是连续的,所以也可以考虑多点并行计算。
对 的导数
其中是根据正向输出的id1的索引值从xyz2中取出距离最小的点的横坐标,单点求导公式如上,因为单点梯度需要根据最小距离值对应的索引值去更新,所以这块无法并行只能单点计算。
对的导数
其中,是根据正向输出的id1的索引值从xyz2中取出距离最小的点的纵坐标,单点求导公式如上,因为单点梯度需要根据最小值对应的索引值去更新,所以这块也无法并行只能单点计算。
对应对 、、 、的导数和上述过程类似,这里不再赘述。
最终计算公式如下,i∈[0,n):
每个算子分为,必须先调用“aclnnChamferDistanceBackwardGetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnChamferDistanceBackward”接口执行计算。
[object Object]
[object Object]
参数说明:
[object Object]
[object Object]返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
[object Object]
- 确定性计算:
- aclnnChamferDistanceBackward默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
[object Object]