最近尝试了一些人脸磨皮美白算法,效果都还不错,但移植到嵌入式太慢了。诸如表面模糊,正常流程的双边滤波算法等等。使用这些算法,处理一张1080P图像,在嵌入式(A53上)上通常需要十秒量级的左右。没办法,做2C行业太卷了,用不了高端SOC,只能找找看看有没有加速方法。最终使用Beeps的迭代算法、定点优化、将算法应用在YUV,最终在单核A53上可达到性能:1080P@1.5s,360P@0.15s左右,基本可满足人脸磨皮、美白的后处理需求,以及实时预览需求。若添加人脸检测模块,只针对人脸ROI进行相关处理,则可进一步压缩耗时,下面记个流水账备忘。
开发记录:
一、beeps算法选择
针对当前通用类算法的耗时不理想的问题,结合之前做高斯模糊的经验,在想有没有一种算法向高斯模糊一样,将卷积计算转化为行列上的迭代计算,如此可大幅降低计算量。检索了一下,搜到了Bi-Exponential Edge-Preserving Smoother 这篇文章,实现了期望功能,这个算法相关