Pytorch与Tensorflow
两者都是主流的深度学习的框架。(里面有些很好用的库,用来构建自己的深度学习网络框架。)其他的有比如(Keras,甚至万能的MATLAB)
Pytorch - Facebook搞出来的;
Tensorflow - Google搞出来的。
选啥?
特点:
1> Pytorch 只有Python语言的,提供了libTorch,可能也很好用,没试过。
2> Tensorflow 版本比较多Python、C++都有;
所以,前几年有说法:工业界用Tensorflow比较多,科研用Pytorch比较多。但现在,Pytorch也开始逐渐再工业界中取代了Tensorflow。
更详细的区别和分析:https://zhuanlan.zhihu.com/p/466991365
注:限于上述文章写于2022年,有些信息可能不够及时,但大差不差。
问题:有什么方法可以做到使用C++部署你已经训练好的PyTorch模型吗?
方法有很多。
1)可以使用ONNX转tensorRT;
2)可以自己写个脚本把PyTorch模型参数注入tensorflow中,然后用tensorflow的部署工具链来部署。
当然,这些都是非常优秀的部署方法,并且甚至逐步被工业界采用。
这里有个C++的libTorch写Pytorch推理代码的例子,可以参考:
https://zhuanlan.zhihu.com/p/513571175
这里我的项目实时性要求比较高,我用的Detecron2的框架用Mask-RNN训练的图像分割。现在准备部署到本地,因为Detecron2用的Pytorch,我又希望用C++来做推理,所以准备选用Pytorch - ONNX - ONNXRuntime
注:其他的可用方式,这里有个UP主做了实时性的对比视频:
https://www.bilibili.com/video/BV11u411N7ji/?spm_id_from=333.337.search-card.all.click&vd_source=8dcbb855235787c4fe45a84d9f389f30
他也把对比源码开源在Github上:https://github.com/zhangchaosd/ModelInferBench
关于如何用ONNXRuntime推理框架,可以参考这里:
https://www.bilibili.com/video/BV1ym421W71r/?spm_id_from=333.788.recommend_more_video.-1&vd_source=8dcbb855235787c4fe45a84d9f389f30