193、AI降噪在NPU与ISP之间的算子划分——以高通骁龙8 Gen2的Hexagon DSP为例的实时性调优

发布时间:2026/8/29 14:28:28
193、AI降噪在NPU与ISP之间的算子划分——以高通骁龙8 Gen2的Hexagon DSP为例的实时性调优 193、AI降噪在NPU与ISP之间的算子划分——以高通骁龙8 Gen2的Hexagon DSP为例的实时性调优去年年底接手一个项目,平台是骁龙8 Gen2,传感器是IMX989,场景是夜景视频。客户要求4K30的实时AI降噪,不是那种拍完再处理的离线模式,是取景器里就能看到降噪效果的实时管线。第一版方案我们直接把一个U-Net塞进NPU,输入是ISP的YUV输出,输出再送回ISP做后续的色调映射。跑起来一看,NPU占用率飙到85%,帧率只有22fps,功耗直接顶到4.5W。这显然不行,但问题不在模型本身,而在我们压根没想清楚哪些活该NPU干,哪些活该ISP干。先看一个容易被忽略的事实:骁龙8 Gen2的Hexagon DSP里,NPU(实际上叫Hexagon Tensor Accelerator)和标量/向量核心共享同一块内存带宽,但它们的计算特性完全不同。Tensor核心擅长的是大吞吐的卷积和矩阵运算,但它的数据搬运开销极大——每次从DDR读一块tile,哪怕只有几百KB,也要付出微秒级的延迟。而ISP的VFE(Video Front End)里那些硬件模块,比如MCNR(Motion Compensated Noise Reduction)、BPC(Bad Pixel Correction)、WNR(Wavelet Noise Reduction),它们跑的是固定算法,但数据流是纯流式的,从sensor进来直接过硬件管线,不经过DDR,延迟是纳秒级的。所以第一个架构决策就是:凡是能用ISP硬件做的降噪,绝不上NPU。我们当时犯的第一个错误就是把整个降噪任务都丢给NPU。后来拆解了U-Net的每一层,发现真正吃算力的是编码