|
Python是当前图像处理领域的主打语言之一。在计算机视觉(特别是深度学习图片预处理、模型训练)等复杂度较高,技术迭代速度快的领域,用Python快速开发出算法原型、验证效果是许多研发人员的首选方案。著名图像处理库OpenCV就提供了完整的Python封装,用户可以书写Python调用底层的C++实现来获得不错的性能。
" W& ]) M A& J* ^* L( {& r. z, i 理想很丰满,现实很骨感。在实际的研发任务中,仅仅使用OpenCV的Python接口往往是不够的:当某些处理算法OpenCV没有提供,需要用户亲自实现时,Python的性能就比较尴尬了。图像通常是以NumPy数组的形式存储在内存中的,当需要逐个遍历像素处理时,Python的for循环效率很低。在需要实时处理的场景(比如摄像头传回的画面)或者数据量较大的时候,Python的解释器开销会是个很大的性能瓶颈。
( F/ `9 |9 |7 P3 i Taichi在这一点上恰好可以帮到大家:
7 e! l& j" u; F7 s @3 s Taichi kernel里的顶层for循环是自动并行的,用户无需分配和管理线程;
5 S+ @8 Z! \+ P7 `. g Taichi的即时编译(JIT)机制可以把Taichi代码编译成高效的机器码,并通过指定后端跑在多核CPU或GPU等不同的后端上,用户无需担心编译和环境适配; 8 q* h' h$ z& c3 K6 K
Taichi可以在CPU、GPU执行中无缝切换,对于计算量特别大的部分可以一键切换到GPU计算; * {' \5 H8 X* j; F% Z! S4 \
在同一份程序中用户可以在调用OpenCV和调用自己的Taichi实现中来回切换,所有工作都在同一份Python程序中完成。这和在Python外独立写一份C++/CUDA代码再用ctypes/pybind11等工具桥接比起来,使用和移植都方便很多。
9 a9 Z5 }& a$ @1 @/ V! v! t taichi以上几点可以让用户在享受Python便利的同时,获得媲美C++/CUDA的运行效率。taichi https://taichi-lang.cn/
1 Q8 M( _8 g3 G/ l |