赞
踩
TVM | OpenVino | TNN | NCNN | |
---|---|---|---|---|
API友好 | ★★☆☆☆ | ★★★★★ | ★★★★☆ | ★★★★☆ |
社区 | ★★★☆☆ | ★★★★★ | ★★★☆☆ | - |
开发难度 | ★★★★★ | ★★★☆☆ | ★★★☆☆ | ★★★☆☆ |
速度性能 | ★★★★★ | ★★★★☆ | ★★★☆☆ | - |
硬件支持 | ★★★★★ | ★★★☆☆ | ★★★★☆ | - |
我用的是tvm0.6, 在使用tvm开发时需要具备的知识体量还是比较大的,但是在能成功运行第一个demo以后就算突破一个瓶颈.个人感觉TVM的设计上比较偏向"开发者",而非"函数接口调用者",比如在开发过程中我想得到RetinaFace算法结果输出landmark的数值, 我找了很久都没有找到直接获取的函数,只能通过index间接获取( 或许是存在一个比较好的函数而我没有找到), 这index对于不了解算法的工程组同志就就太难了,RetinaFace有9个输出,把index对应上都得蜕层皮.
m_get_output = mod.GetFunction("get_output");
landmark_output = m_get_output(index);
而openvino这个方面就方便太多了,直接输入名字便可以获取
Blob::Ptr output = infer_request->GetBlob(name);
相关讨论:TVM发展最大的瓶颈是不是易用性?
但是,熟练掌握TVM的套路以后你会发现-------真香!!!
各方面都是相当的均衡,充分的文档、友好的API使得新手非常容易上手,项目周期变得可控,但是intel出品的openvino是针对自家硬件产品(intel-cpu)的,可以部署的硬件就有一定的限制,当然也可以选择intel有神经网络加速棒(Stick 2, 可以理解为插在USB上的显卡),如下图所示:
tnn是在ncnn基础上进行的改良,文档、社区、API、都非常的赞,并且在编译时可以选择openvino、TensorRT的编译选项.
ncnn我使用的并不多,在生产开发时,主要是给手机端的算法进行加速,
TVM:带来的加速效果非常的可观,对硬件的支持非常宽泛, 但是对新手不友好, 需要熟练掌握算法输入输出结构,并且熟知TVM API函数的情况下,可以使用TVM对算法进行加速,否则项目周期会变得不可控.
OpenVino:对新手友好,但对部署的硬件有一定的要求,如果算法可以在intel-cpu、神经网络加速棒(Stick 2)上部署,那么OpenVino是一个不错选择.
TNN:对新手友好,单纯使用TNN加速带来的加速效果一般,可以按照TNN的文档对算法进行一次优化;在编译时可以选择openvino、TensorRT编译选项,对硬件的支持就宽泛.
NCNN:加速PC端加速效果并不理想,手机端的使用比较多一些.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。