已关闭
[Requirement|需求建议]: 支持算子BlendFaceBgPartTwo的A5版本 #642
zhangyiyi创建于  7月24日关闭于  7月31日
zhangyiyi
zhangyiyi
7月24日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

新增 BlendFaceBgPartTwo 图像算子,支持 Ascend950(arch35 / RegBase / DAV_3510),完成人脸融合背景第二阶段的归一化 + Alpha 合成计算。

计算逻辑(逐元素,无广播):

fusion_face = acc_face / (acc_mask + epsilon)
bg_weight   = 1 - max_mask
fused_img   = fusion_face * max_mask + bg_img * bg_weight

Origin(信息来源)

Benefit / Necessity (价值/作用)

Design(设计方案)

算子规格:

  • 输入(4 个,rank=3,H×W×C):acc_face / acc_mask / max_mask(均 DT_FLOAT),bg_img(DT_FLOAT 或 DT_UINT8)
  • 输出fused_img(DT_FLOAT,固定)
  • 属性epsilon(Float,默认 1e-12,归一化防除零)

实现要点:

  • 双 TilingKey 分支,按 bg_img dtype 选择资源参数:
    • KEY_FP32(bg=float32):bufferDivisor=40、minDtypeBits=32,DIST_NORM 直接载入直算
    • KEY_UINT8(bg=uint8):bufferDivisor=34、minDtypeBits=8,DIST_UNPACK4_B8 载入 + uint8→half→float 两级无损 Cast
  • EleWise 单维线性切分:展平 dim0 = H*W*C,多核按 512 元素对齐切分(每核 ≥ 4KB),UB 按 256B 对齐分块,首/尾 block 尾块独立处理;核数取 VectorCore、UB 取运行时 GetCoreMemSize,无硬编码。
  • 三级双缓冲流水:CopyIn(DataCopyPad) → asc_vf_call → CopyOut(DataCopyPad)。
  • InferShape / InferDataType 拆分:形状推导(含 unknown-rank 透传、图模式 shape 一致性校验)落在 op_host,数据类型推导落在 op_graph,符合 to_absolute_b_box 参考架构。
likedislike
zhangyiyizhangyiyi
7月24日 关联了pull request:feat: support /blend_face_bg_part_two(Ascend950/arch35)
liu-weiliu-wei成员
7月25日 将 ugzhangyiyi 设为负责人
CANN-robotCANN-robot成员
7月31日 关闭了 issue
CANN-robotCANN-robot成员
7月31日 添加了label:resolved