win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)

C++平台部署(前向预测)pytorch训练好的模型(ResNet50为例)(一)

本文主要进行前期的准备环境搭建,包括VS2015的安装,opencv和libtorch的安装配置,适合新手入门~~。在下篇文章C++平台部署(前向预测)pytorch训练好的模型(ResNet50为例)(二)中,将详细介绍使用C++重写前向,使用pytorch训练好的模型进行预测,有需要的同学可以前往查看。

吐血整理

默认已经安装pytorch1.0以上版本,如果没有安装,可以使用如下命令进行安装(CPU版本,若想安装GPU CUDA版本,可以去官网https://pytorch.org/get-started/locally/选择):

conda install pytorch torchvision cpuonly -c pytorch

1、安装VS2015

安装VS2015专业版,安装包传送门:https://pan.baidu.com/s/1ijH8QYctdjGwYAdeXVDgzw ,提取码:6acd

内含激活码。

(1)安装VS2015,时间保守估计两小时左右。

       将下载好的安装包解压缩,右键管理员运行vs_professional.exe.exe文件,开始安装

(普通运行只是单纯的运行程序,不能进行更改程序和附加程序,而用管理员身份运行程序将会有更多权限,比如更新,修改等.)   

 win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第1张图片  win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第2张图片

(2)激活VS2015

    打开vs2015,点击帮助->注册产品,输入激活码(激活码.txt在安装包中可以找到)。

    VS2015企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

    VS2015专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2

(3)启动VS2015,安装适用于C++

        文件->新建->项目,在线安装适用于Windows桌面的Visual C++ 2015工具。

       win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第3张图片

                              win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第4张图片

又是下面的安装界面,大约需要几分钟。

    win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第5张图片   win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第6张图片

(4)重新启动VS2015,新建VS空项目,Hello World验证。

    在新建项目源文件中,添加cpp文件。

              win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第7张图片 

           选择 Debug x64,运行代码。

             win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第8张图片

            运行成功,则VS2015安装成功。

                 win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第9张图片

    血泪教训:建议大家安装完毕VS2015后,不要卸载重新安装,不要卸载重新安装,不要卸载重新安装。因为在卸载的过程中,会留下残留文件,不知道哪里就出错了。我前前后后重装了三遍,终于才成功,费时费力,历经挫折。遇到的问题①:进入VS2015起始页后,鼠标点击没有反应;问题②:点击帮助->注册产品失败。在网上找了几个方法,删除C:\Users\Sesen\AppData\Roaming\Microsoft\VisualStudio\14.0目录下的Cache缓存文件夹,说是由于缓存文件紊乱引起的。删除之后,在“控制面板”的程序与功能中,更改VS2015,进行修复。(最后,被修复好了)

    如果真的遇到问题需要重新安装,遇到问题的话,最简单粗暴的方法是重装系统(但是大家内心肯定都是拒绝的)。不重装系统也可以,就是卸载VS时,一定要卸载干净。推荐两篇不错的文章,我没有实测,大家有需要的话可以看看。VS2015终极卸载方法(适用于VS各种版本)和超简单的卸载vs2015总结(亲测可用)。

2、安装openCV

(1)安装

安装包:链接:https://pan.baidu.com/s/18VzP_ilsVWEO-3LglfQcCw    提取码:80zn

里面包含Windows,IOS及Android平台的安装包。选择Windows安装包,双击opencv-3.4.5-vc14_vc15.exe进行安装。

选择将要提取安装的路径,记住此路径D:\Sense's_Software\opencv,在后续配置VS库目录及依赖项是需要添加。

              win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第10张图片

开始提取,大约需要50秒左右:

                    win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第11张图片

     安装完成后,目录为这个样子。 

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第12张图片

(2)配置opencv环境变量

     右键点击我的电脑->属性->高级系统设置->环境变量,双击系统变量->PATH

                         win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第13张图片

                                              win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第14张图片

        点击新建,加入安装opencv的bin目录,注意是  D:\Sense's_Software\opencv\build\x64\vc14\bin,而不是D:\Sense's_Software\opencv\build\bin。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第15张图片

     设置系统环境变量后,需要重启系统生效。                  

  3、下载libtorch

      LibTorch是pytorch的c++接口,也就是PyTorch C ++ API。一般来说,常见的模式为(1)用python接口来训练模型(2)转换成c++模型(3)用c++重写前向。Pytorch1.0以上的版本允许Python模型转换为可以加载和执行的序列化表示 纯粹来自C ++,不依赖于Python。即可以只用c++来编写模型的预测阶段(当然使用C++训练也可以,只是开发起来比较慢,,还是推荐python训练,然后转换成c++模型,用c++来写前向)。

安装libtorch开始:在 https://pytorch.org/get-started/locally/下载适合于自己的libtorch版本,不同的电脑配置所需的版本是不一样的。

                           win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第16张图片

我的环境为配置CPU下无CUDA版本的libtorch,可下载release版本或debug版本(release和debug不同的版本在VS2015中调试时有区别)。release版本:https://download.pytorch.org/libtorch/cpu/libtorch-win-shared-with-deps-1.4.0.zip,debug版本:https://download.pytorch.org/libtorch/cpu/libtorch-win-shared-with-deps-debug-1.4.0.zip

下载速度挺慢的,如果跟我需要的release版本一致,可以到这里提取:链接:https://pan.baidu.com/s/1z6WUMjuc5PFxnroNz8-yMA 
提取码:nrut 。

下载好之后解压缩,放在自己方便的路径下。记住路径D:\libtorch,在VS2015中配置需要此路径。

                                    win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第17张图片

 

4、VS2015 配置opencv和libtorch(注意:opencv和libtorch如果联合使用,release或者debug版本需一致)

这个过程有有点像在pycharm中,python语言添加opencv,torch库有点像。

类似地,可以使用conda install cv2,conda install torch添加python语言依赖库,也可以使用cmake来进行添加VS2015(C++)所依赖的opencv及libtorch等(这个方法还没研究明白,后续再学习一下,如这篇博客https://blog.csdn.net/adyf3/article/details/85003893)。

在这里,提供一种对于新手比较友好的方式,采用比较简单的可视化方法添加库,就像在pycharm里面setting导入依赖包一样。

(1)opencv添加到VS2015

    新建一个VS空项目,打开属性管理器(视图-其它窗口-资源管理器)。

                                                      win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第18张图片

    选择Debug x64,进入Microsoft.Cpp.x64.user设置。

    首先,VC++ 目录->包含目录中,添加opencv的三个路径,在我的环境中分别为 

               D:\Sense's_Software\opencv\build\include

               D:\Sense's_Software\opencv\build\include\opencv

               D:\Sense's_Software\opencv\build\include\opencv2

     其次,VC++ 目录-> 库目录中,添加  D:\Sense%27s_Software\opencv\build\x64\vc14\lib。

                    win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第19张图片

      随后,在链接器->输入->附加依赖项中,添加D:\Sense's_Software\opencv\build\x64\vc14\lib\opencv_world345d.lib,这是opencv3.4.5的debug版本,添加D:\Sense's_Software\opencv\build\x64\vc14\lib\opencv_world345.lib,opencv3.4.5的release版本)。**题外话:Debug 和 Release 并没有本质的区别,只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。Debug和Release,主要是针对其面向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。**

                            win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第20张图片                                                                      win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第21张图片

至此,opencv添加至VS2015中。(这样的配置方式,需要为每个新建项目执行同样的操作,在本文的最后tips有一劳永逸的方法,有兴趣的同学可以尝试一下)。

(2)验证opencv安装成功

         测试工程下载地址:链接:https://pan.baidu.com/s/13zUdhhCwn3T2COqDrLsKhg ,提取码:6kat

         双击打开test.sln

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第22张图片

   看见女神的照片就说明opencv导入成功了。

                             

   如果此处出现加载不到opencv包的情况,即下面几行代码出现红线,则说明添加的包含目录以及库目录不正确。重新去选择文件夹路径添加,不要手动输入添加。

#include 
#include 
#include 

(3)将libtorch添加到VS2015

          找到libtorch解压后的位置。我的环境中,libtorch位于D:\libtorch。此处,libtorch下载的是release发布版本,debug版本步骤基本相同。

          开始配置

          同样,新建一个VS空项目,打开属性管理器(视图-其它窗口-资源管理器),选择Release|X64进行配置属性页。(如果下载的是Debug版本的libtorch,则像opencv配置时一样,选择Debug | X64)。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第23张图片

          ,在VC++ 目录->包含目录中,添加D:\libtorch\include(不要复制粘贴路径,去选中添加)

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第24张图片

        ,在VC++ 目录-> 库目录中,添加D:\libtorch\lib。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第25张图片

           ,在C/C++ -> SDL检查中,设置为否。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第26张图片

         ④,链接器->常规->添加库目录中,添加D:\libtorch\lib。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第27张图片

        ⑤,在链接器->输入->附加依赖项,

        方法一:添加绝对路径D:\libtorch\lib\c10.lib,D:\libtorch\lib\torch.lib

        方法二:添加相对路径c10.lib,torch.lib

         二者的区别在于下一步骤,是否需要把库.lib文件复制到现有项目工程中。视自身需要而定。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第28张图片       win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第29张图片

,对应于⑤方法一,将libtorch的lib目录下的.dll文件全部复制到VS项目中去;对应于⑤方法二,将libtorch的lib目录下的.dll文件和.lib文件全部复制到VS项目中去。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第30张图片

      放置文件的位置为与主CPP文件同一目录下,      

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第31张图片

(4)验证libtorch添加成功

        测试代码: 导入torch依赖包,选择release | X64进行测试。(如果在上一步中添加的是libtorch的Debug版本,那么这个应该选择Debug | X64)运行。       

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第32张图片

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第33张图片

    至此,配置成功。

 

  Tips:制作一个属性表,这样就不用每次新建项目时,都需要配置库目录及依赖项等。(其实VS2015不用这样操作,每次新建项目,会继承上次设置的属性值)

  选择一个项目,打开属性管理器,在release| Win x64那一栏右击添加新项目属性表。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第34张图片

② 给属性表命名,设置好存放地址。以后有其他工程项目,只需要把这个属性表添加到那个工程里面,就算是配置好LibTorch了,很方便。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第35张图片

③ 开始配置新建的属性表,双击打开,步骤和上述配置库目录和依赖项的步骤一致。不再赘述。

win10+ VS2015 + opencv3.4 + libtorch C++平台部署pytorch训练模型(ResNet50为例)(一)_第36张图片

你可能感兴趣的:(深度学习C++应用,深度学习)