1、进入 pytorch 官网点击C++/java,下载libtorch(CPU)Release 版本,我这里下载的是1.13版本的pytorch,下载链接是https://pytorch.org/。
2、下载完成后,将解压后的包放在固定的位置下面,如图1-2所示,libtorch_CPU文件夹即是我们解压后的libtorch(CPU)包,libtorch_CPU是我自己命名的解压文件名。
3、打开vs2017,新建一个空项目,我这里是Project2。
4、项目配置改为 Release x64环境。
5、打开如下设置:
(1)项目>>>Project2属性>>>VC++目录,分别在包含目录和库目录中添加自己libtorch包的include文件路径和lib文件路径。
(2)项目>>>Project2属性>>>链接器>>>输入,在附加依赖项中添加你需要的库文件名称,如果觉得太麻烦,那么可以像我一样把库目录中的以.lib为后缀名的文件名全部添加上去。
(3)项目>>>Project2属性>>>C/C++,进行两个改动:第一,“常规”目标栏中的“SDL检查”改为“否”;第二,“语言”目标栏中的“符合模式”改为“否”。否则会报错:“std”: 不明确的符号。
包含目录:
D:\VS2017Library\libtorch_CPU\include
D:\VS2017Library\libtorch_CPU\include\torch\csrc\api\include
库目录:
D:\VS2017Library\libtorch_CPU\lib
链接器附加依赖项:
torch.lib
torch_cuda.lib
torch_cuda_cu.lib
torch_cuda_cpp.lib
torch_cpu.lib
c10_cuda.lib
caffe2_nvrtc.lib
c10.lib
kineto.lib
dnnl.lib
fbgemm.lib
asmjit.lib
XNNPACK.lib
cpuinfo.lib
clog.lib
libprotocd.lib
pthreadpool.lib
libprotobufd.lib
libprotobuf-lited.lib
6、把包含目录“D:\VS2017Library\libtorch_CPU\lib”中所有以.dll为后缀的dll文件放入你项目文件夹下有.exe的地方。如图1-12。
至此,vs2017 + libtorch-1.13(CPU)版本环境配置完成,接下来用代码测试一下,代码如下:
#include
#include
using namespace std;
int main() {
torch::Tensor x = torch::rand({ 2,3 });
cout << x << endl;
system("pause");
return 0;
}
若输出如图1-14所示,则环境配置成功!
配置 libtorch 的 GPU 和 CPU 版本其实区别不大,只是下载 GPU 版本需要看你自己电脑的配置是怎么样的,适合下哪一个版本的libtorch。
1、按下 windows + R 键输入 cmd 召唤出命令行,再输入 nvidia-smi 命令查看自己的 GPU 版本,可以看到我的GPU版本是11.6,因此可以下载11.6的libtorch(GPU版本)。
2、进入 pytorch 官网点击C++/java,下载libtorch(GPU)Release 版本,我这里下载的是1.13版本的pytorch,下载链接是https://pytorch.org/。
3、下载完成后,将解压后的包放在固定的位置下面,如图1-2所示,libtorch文件夹即是我们解压后的libtorch(GPU)包。
3、打开vs2017,新建一个空项目,我这里是Project3。
4、项目配置改为 Release x64环境。
5、打开如下设置:
(1)项目>>>Project3属性>>>VC++目录,分别在包含目录和库目录中添加自己libtorch包的include文件路径和lib文件路径。
(2)项目>>>Project3属性>>>链接器>>>输入,在附加依赖项中添加你需要的库文件名称,如果觉得太麻烦,那么可以像我一样把库目录中的以.lib为后缀名的文件名全部添加上去。
(3)项目>>>Project3属性>>>C/C++,进行两个改动:第一,“常规”目标栏中的“SDL检查”改为“否”;第二,“语言”目标栏中的“符合模式”改为“否”。否则会报错:“std”: 不明确的符号。
包含目录:
D:\VS2017Library\libtorch\include
D:\VS2017Library\libtorch\include\torch\csrc\api\include
库目录:
D:\VS2017Library\libtorch\lib
链接器附加依赖项:
torch.lib
torch_cuda.lib
torch_cuda_cu.lib
torch_cuda_cpp.lib
torch_cpu.lib
c10_cuda.lib
caffe2_nvrtc.lib
c10.lib
kineto.lib
dnnl.lib
fbgemm.lib
asmjit.lib
XNNPACK.lib
cpuinfo.lib
clog.lib
libprotoc.lib
pthreadpool.lib
libprotobuf.lib
libprotobuf-lite.lib
6、把包含目录“D:\VS2017Library\libtorch\lib”中所有以.dll为后缀的dll文件放入你项目文件夹下有.exe的地方。如图1-12。
7,最后,还有一个非常重要的设置要做,这就是GPU版跟CPU版配置最大的两个区别之一,在我们的vs2017找到项目>>>Project3属性>>>链接器>>>命令行,输入:
/INCLUDE:"?ignore_this_library_placeholder@@YAHXZ"
如果没有这个命令行设置,那么即使你装的是GPU版本也只能使用CPU。我们先来看看没有这个命令行是个什么情况,测试代码如下:
#include
#include
using namespace std;
int main() {
torch::Tensor x = torch::rand({ 2,3 });
cout << x << endl;
system("pause");
return 0;
}
这是之前测试配置CPU版libtorch用的代码,我们可以看到输出的数据类型是 CPUFloatType{2,3}
现在我们先使用torch::cuda::is_available()函数看看有没有可用的GPU,然后把这输出的张量 x 放到 GPU 上,接着再对这段代码加上异常检测最后改成如下形式:
#include
#include
using namespace std;
int main() {
try
{
cout << "cuda: " << torch::cuda::is_available() << endl;
torch::Tensor x = torch::rand({ 2,3 });
cout << x.to(torch::kCUDA) << endl;
}
catch (const c10::Error& e)
{
cout << e.msg() << endl;
}
system("pause");
return 0;
}
我们得到输出如下:
可以看到程序输出torch::cuda::is_available()函数的结果为0,则说明没有可用的 GPU ,并且下面的把张量 x 放到GPU上还报了个错为:PyTorch is not linked with support for cuda devices。
接着我们把上面的命令添加到链接器的命令行中,再使用同样的代码输出,会发现torch::cuda::is_available()函数结果为1,则说明有可用的GPu,并且报错的张量 x 也可以输出了,类型为 CUDAFloatType{2,3}。
至此,我们libtorch-1.13(GPU)版本才算是真正的配置好了环境。
1、进入到opencv官网,下载windows对应的opencv4.5.5版本的opencv安装程序,并点击选择固定位置进行解压。如图所示。opencv官网下载链接:https://opencv.org/releases/
2、安装完成后,进入vs2017,新建一个空项目Project4,打开并更改一下设置:
(1)项目>>>Project3属性>>>VC++目录,分别在包含目录和库目录中添加自己opencv包的include文件路径和lib文件路径。这里的库文件目录用vc14或者vc15的都可以,没有多大的区别。
(2)项目>>>Project3属性>>>链接器>>>输入,在附加依赖项中添加你需要的库文件名称,如果觉得太麻烦,那么可以像我一样把库目录中的以.lib为后缀名的文件名全部添加上去。这里需要注意的地方是如果你的环境是 Debug 那么 附加依赖项则是 opencv_world455d.lib ,如果是 Release环境的话,那么附加依赖项则是 opencv_world455.lib。我这里是 Release环境,那么就是opencv_world455.lib。
包含目录:
D:\VS2017Library\opencv\build\include
D:\VS2017Library\opencv\build\include\opencv2
库目录:
D:\VS2017Library\opencv\build\x64\vc15\lib
附加包含目录:
opencv_world455.lib
接着找到与lib库目录在一个文件夹下的 bin 文件里的 opencv_world455.dll ,并把它放入到有.exe的项目文件夹下,我的bin文件路径为:D:\VS2017Library\opencv\build\x64\vc15\bin ,如图。
至此,我们在vs2017配置opencv4.5.5版本的环境就完成了,测试代码如下:
#include
using namespace std;
int main() {
cv::Mat image = cv::imread("C:\\Users\\yiyaxin\\Desktop\\1.jpg");
cv::imshow("image", image);
cv::waitKey(0);
return 0;
}
上面cv::imread()函数是自己的图像绝对路径,若输出图像,则opencv4.5.5配置完成。
图3-9 代码输出结果
好了,到这里 libtorch1.13.0 和 opencv4.5.5 第三方库的下载安装和环境配置就完成了,后面我会使用 libtorch 和 opencv 搭建一个深度学习框架,敬请期待!