构建基于数据驱动的Halide性能方案研究项目,简称Halide项目,由CVL实验室与华为公司的团队合作开展。该项研究主要是对OpenCV计算机视觉库中常用的图像处理算法,使用Halide进行实现与加速。其中Halide是一种基于C++的DSL编程语言,用于编写高性能、可移植的图像和张量处理代码。该项目的成果可用于支持手机、智能汽车等领域中的图像前后处理,快速使能相关业务,同时反馈于计算机视觉的相关研究任务。
本项目研究的图像处理算法,包括图像双边滤波、分离滤波,图像大小变换、仿射变换、透视变换、颜色空间变换,以及角点检测、光流计算等函数。在项目开展过程中,我们以OpenCV的C++实现源码为参照,在保持原函数功能与接口的基础上,使用Halide编程搭建Generator框架,将算法实现与调度方式分离,研究并比较了不同的人工调度方式,和基于数据驱动的自动调度方式。在封装测试中,我们确保了算法的结果正确和函数的功能完整,并提高了整体的运行性能。同时,在研究过程中,我们发现并总结了Halide编程的常见问题、表达缺陷与优势场景,为后续的深入研究做了一定的铺垫。
图1. Halide项目内容示意图