|
|
发表于 2023-6-11 22:45:57
|
显示全部楼层
|阅读模式
来自 中国–浙江–温州–平阳县
Python是当前图像处理领域的主打语言之一。在计算机视觉(特别是深度学习图片预处理、模型训练)等复杂度较高,技术迭代速度快的领域,用Python快速开发出算法原型、验证效果是许多研发人员的首选方案。著名图像处理库OpenCV就提供了完整的Python封装,用户可以书写Python调用底层的C++实现来获得不错的性能。
理想很丰满,现实很骨感。在实际的研发任务中,仅仅使用OpenCV的Python接口往往是不够的:当某些处理算法OpenCV没有提供,需要用户亲自实现时,Python的性能就比较尴尬了。图像通常是以NumPy数组的形式存储在内存中的,当需要逐个遍历像素处理时,Python的for循环效率很低。在需要实时处理的场景(比如摄像头传回的画面)或者数据量较大的时候,Python的解释器开销会是个很大的性能瓶颈。
Taichi在这一点上恰好可以帮到大家:
Taichi kernel里的顶层for循环是自动并行的,用户无需分配和管理线程;
Taichi的即时编译(JIT)机制可以把Taichi代码编译成高效的机器码,并通过指定后端跑在多核CPU或GPU等不同的后端上,用户无需担心编译和环境适配;
Taichi可以在CPU、GPU执行中无缝切换,对于计算量特别大的部分可以一键切换到GPU计算;
在同一份程序中用户可以在调用OpenCV和调用自己的Taichi实现中来回切换,所有工作都在同一份Python程序中完成。这和在Python外独立写一份C++/CUDA代码再用ctypes/pybind11等工具桥接比起来,使用和移植都方便很多。
taichi以上几点可以让用户在享受Python便利的同时,获得媲美C++/CUDA的运行效率。taichi https://taichi-lang.cn/
|
|