Pytorch迁移到C++

1. 啰嗦的话

首先说说为什么要用pytorch,现在大家都经常用tensorflow、keras、pytorch来编写神经网络,tensorflow和keras属于一路子,现在keras归tensorflow管了,tensorflow的示例程序都是给的keras。如果想在C++端调用写好的模型,则需要保存成pb格式,keras的h5格式是可以转换成pb格式的。基于tensorflow和keras的模型都需要用bazel编译tensorflow,tensorflow中有官方的编译教程,但是非常的emmmmmm麻烦,如果想编译成功,tensorflow的版本、python版本、编译器、编译工具都得符合要求,况且在我写这篇文章的时候,官网只测试成功到1.13.0。我搞了好久都没搞定,查了一段时间资料,感觉这种编译方法还不太成熟,就转投pytorch了。
编译tensorflow的官方教程:https://tensorflow.google.cn/install/source_windows

2. pytorch踩坑记

Pytorch配置的办法可以参考官网教程:
https://pytorch.org/tutorials/advanced/cpp_export.html
https://pytorch.org/cppdocs/installing.html

需要将模型先转换为Torchscript,有两种写法,参照官网教程即可,最终模型要保存成pt格式。接下来下载libtorch,解压好。然后构建你的C++工程,写好cpp文件后,在cpp同级目录下,新建一个CMakeList.txt文件,内容配置参照官网。之后完成cmake,如果报错找不到torch,在find_package(Torch REQUIRED)前面添加set(CMAKE_PREFIX_PATH “C:\software\pytorch_bag\libtorch\share\cmake\Torch”),后面的路径根据自己pytorch位置修改。通过无误后,执行脚本模块。如果报错,少什么.dll文件,就去libtorch的lib文件夹下拷贝,拷到工程文件生成的\build\Release文件夹下。

3.pytorch迁移到VTM(H.266视频编解码软件)

数这个地方坑多,VTM是个大工程,路径文件互相都是有关系的,最关键的就是之前CMakeList那几句话怎么填。

以下两句话 find_package(Torch REQUIRED) 和 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} KaTeX parse error: Undefined control sequence: \CMakeLists at position 48: …are_VTM-VTM-5.0\̲C̲M̲a̲k̲e̲L̲i̲s̲t̲s̲.txt里; target_…{LIB_NAME} “${TORCH_LIBRARIES}”)可以放在VVCSoftware_VTM-VTM-5.0\source\Lib\CommonLib或者VVCSoftware_VTM-VTM-5.0\source\Lib\EncoderLib或者VVCSoftware_VTM-VTM-5.0\source\App\EncoderApp里的CMakeLists里(取决于你在VTM里哪个位置调用Pytorch);

我是这么改的:我要在Commonlib的LoopFilter中调用神经网络,
VVCSoftware_VTM-VTM-5.0\CMakeLists.txt
注意:因为我要用在Commonlib下的LoopFilter.cpp中,所以我对ConmonlibAnalyserLib中的CMakeList也得修改。
VVCSoftware_VTM-VTM-5.0\source\Lib\CommonLib\CMakeLists.txt
接下来就是解决在VTM生成解决方案时的报错,我的报错是这样子的:
在这里插入图片描述
第一个错误C1083无法打开包括文件,还有后面三个C2365重定义错误,需要在
在这里插入图片描述
这个地方找到这个文件,
在这里插入图片描述
把这三条全删掉,因为它与VTM中定义的ERROR/WARNING/INFO都冲突,也可以去改VTM中的,不过我没试过。
C2220 将警告视为错误,这个点这个地方
在这里插入图片描述在这里插入图片描述
将警告视为错误改成否即可。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值