十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

173、视频实时美颜的ISP与NPU协同架构——高通骁龙平台的肤色检测与磨皮算法的DSP/NPU算子分配

173、视频实时美颜的ISP与NPU协同架构——高通骁龙平台的肤色检测与磨皮算法的DSP/NPU算子分配 173、视频实时美颜的ISP与NPU协同架构——高通骁龙平台的肤色检测与磨皮算法的DSP/NPU算子分配去年在骁龙8 Gen1上做前置4K30美颜,画面一开美颜帧率直接掉到22fps,功耗飙到4.5W。当时第一反应是NPU负载太高,把磨皮算子全扔给GPU,结果GPU带宽爆了,温度墙触发降频,画面开始卡顿。后来把整个管线拆开重新做算子分配,才把帧率拉回30fps,功耗压在3.2W以内。这篇笔记就记录一下当时踩过的坑和最终落地的架构。先说清楚高通骁龙平台上的三个计算单元:ISP(Spectra)、NPU(Hexagon)、DSP(也是Hexagon,但和NPU是两码事)。很多人搞混,NPU是专门跑神经网络的张量加速器,DSP是通用数字信号处理器,跑的是向量运算和固定函数。在美颜这个场景里,ISP负责最底层的像素处理,NPU负责肤色检测和语义分割,DSP负责磨皮滤波和细节增强——这个分工不是拍脑袋定的,是实测出来的。从真实问题切入:为什么NPU跑磨皮会卡一开始我把磨皮算法(双边滤波或者引导滤波)直接写成NPU算子,想着NPU算力强,肯定没问题。实测发现NPU跑3x3的双边滤波,单帧1080P要12ms,而DSP只要4ms。为什么差这么多?因为双边滤波本质上是局部窗口的加权平均,每个像素要计算邻域内的权重,这种计算是典型的SIMD向量操作,DSP的HVX向量扩展正好擅长这个。NPU的优势在于卷积和矩阵运算,你把双边滤波硬写成卷积形式,虽然也能跑,但算子内部有大量非规则的内存访问,NPU的硬件调度器处理这种非规则访问效率极低。这里踩过坑:别把NPU当成万能加速器,NPU适合的是"数据复用
返回列表