如下面官方連結,幾乎現在網路教學中多數都是利用cmake的方式進行libtorch與Visual studio連結,透過cmake倒出visual studio 的project檔案。
https://pytorch.org/cppdocs/installing.html
但如果熟悉Visual studio與c++編譯的話,其實是可直接將libtorch當作SDK來做使用 ,本篇將以Visual studio 2015與libtorch 1.1與opencv4.1(opencv-4.1.0-vc14_vc15)做為例子,已讓大家能夠快速上手從pytorch框架上訓練出來的模型,在c++上做inference。建議大家具有下列基礎,在進行本文教程。
1.Pytorch 與 libtorch之間的關係。
2. Pytorch Python框架的使用。
3. 深度學習模型背景常識。
4. 深度學習在 CPU與GPU差異與需求
5. Opencv 相關了解
6. GPU Cuda 10安裝流程
另外特別注意幾件事
1. Visual studio 2015 的朋友可能會有,編譯出錯的問題,麻煩將Visual studio 2015升級至Update3 (可自行google關鍵字 Visual studio 2015 Update3)
2.本篇教程,opencv4.1與 libtorch 1.1 版本純屬範例,兩者為個別SDK,均可個別與Visual studio 2015編譯,並無libtorch 1.1一定要搭載opencv4.1的說法。
3.本篇教程省略了nvidia 顯卡搭載 cuda 10 與 cuDNN安裝 (可自行google關鍵字 顯卡驅動+ cuda 10 +cudnn)
步驟1. 整理SDK資料夾
我常將SDK(Software Development Kit)包在一個資料夾下,以方便多個專案共同連結,如我都把下載的opencv-4.1.0-vc14_vc15與libtorch(libtorch-gpu)解壓縮放置D:/SDK目錄下,檔名也均有重新整理過方便我日後開發,若對不上資料夾檔案名稱是正常的。
備註:
opencv-4.1.0-vc14_vc15.exe 我改名為 opencv
libtorch-win-shared-with-deps-latest.zip (各版本從官網載下來的libtorch,只有網路路徑不同,gpu與cpu版本的libtorch檔名完全一模一樣,如何區分呢? 檔案較大的為 gpu較小的為cpu)
步驟2.開啟Visual studio 2015 C++專案
本邊以空專案為例,File > New> Project... > 後會產生上面表格,並按照下列紅框只是點選,幫專案取名子與路徑等。
產生專案後,自行加入main.cpp,下圖為我 main.cpp的代碼(20行不到)
並在 [專案名稱案點選右鍵] > Properties
在此進入Visual studio 2015 連結我們步驟1準備SDK的重要配置,
步驟3.配置SDK連結
下方兩個圖為此篇我們主要設定SDK連結的設定:
Configuration Properties>VC++ Directories
Executable Directories:
- D:\SDK\libtorch_1.1\lib
- D:\SDK\opencv\build\x64\vc14\bin
Include Directories:
- D:\SDK\libtorch_1.1\include
- D:\SDK\libtorch_1.1\include\torch\csrc\api\include
- D:\SDK\opencv\build\include
Library Directories:
- D:\SDK\libtorch_1.1\lib
- D:\SDK\opencv\build\x64\vc14\lib
Configuration Properties>Linker>Input
Additional Dependencies:
- D:\SDK\libtorch_1.1\lib\torch.lib
- D:\SDK\libtorch_1.1\lib\c10.lib
- D:\SDK\libtorch_1.1\lib\caffe2.lib
- D:\SDK\opencv\build\x64\vc14\lib\opencv_world410.lib
(debug mode 換opencv_world410d.lib)
// 下方為gpu cuda10設定
- C:\Program Files\NVIDIA Corporation\NvToolsExt\lib\x64\nvToolsExt64_1.lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cudart.lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cufft.lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\curand.lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cudnn.lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cublas.lib
- D:\SDK\libtorch_1.1_gpu\lib\caffe2_gpu.lib
- D:\SDK\libtorch_1.1_gpu\lib\caffe2.lib- D:\SDK\libtorch_1.1_gpu\lib\c10_cuda.lib
以上即可編譯成功,但執行還需要做電腦環境變數設定,否則就要將dll貼入此資料夾內
步驟4.我的電腦設定環境變數
[我的電腦]右鍵點選屬性>高級系統配置>環境變亮>Path
加入下列連結
- D:\SDK\opencv\build\x64\vc14\bin
- D:\SDK\libtorch_1.1\lib
設定後點選應用>登出wondows系統>再登入環境變數即可生效