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文件,開始安裝

(普通運行只是單純的運行程序,不能進行更改程序和附加程序,而用管理員身份運行程序將會有更多權限,比如更新,修改等.)   

   

(2)激活VS2015

    打開vs2015,點擊幫助->註冊產品,輸入激活碼(激活碼.txt在安裝包中可以找到)。

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

    VS2015專業版:HMGNV-WCYXV-X7G9W-YCX63-B98R2

(3)啓動VS2015,安裝適用於C++

        文件->新建->項目,在線安裝適用於Windows桌面的Visual C++ 2015工具。

       

                              

又是下面的安裝界面,大約需要幾分鐘。

       

(4)重新啓動VS2015,新建VS空項目,Hello World驗證。

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

               

           選擇 Debug x64,運行代碼。

             

            運行成功,則VS2015安裝成功。

                 

    血淚教訓:建議大家安裝完畢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庫目錄及依賴項是需要添加。

              

開始提取,大約需要50秒左右:

                    

     安裝完成後,目錄爲這個樣子。 

(2)配置opencv環境變量

     右鍵點擊我的電腦->屬性->高級系統設置->環境變量,雙擊系統變量->PATH

                         

                                              

        點擊新建,加入安裝opencv的bin目錄,注意是  D:\Sense's_Software\opencv\build\x64\vc14\bin,而不是D:\Sense's_Software\opencv\build\bin。

     設置系統環境變量後,需要重啓系統生效。                  

  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版本,不同的電腦配置所需的版本是不一樣的。

                           

我的環境爲配置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中配置需要此路徑。

                                    

 

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空項目,打開屬性管理器(視圖-其它窗口-資源管理器)。

                                                      

    選擇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。

                    

      隨後,在鏈接器->輸入->附加依賴項中,添加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通常稱爲發佈版本,是爲用戶使用的,一般客戶不允許在發佈版本上進行調試。所以不保存調試信息,同時,它往往進行了各種優化,以期達到代碼最小和速度最優。爲用戶的使用提供便利。**

                                                                                                  

至此,opencv添加至VS2015中。(這樣的配置方式,需要爲每個新建項目執行同樣的操作,在本文的最後tips有一勞永逸的方法,有興趣的同學可以嘗試一下)。

(2)驗證opencv安裝成功

         測試工程下載地址:鏈接:https://pan.baidu.com/s/13zUdhhCwn3T2COqDrLsKhg ,提取碼:6kat

         雙擊打開test.sln

   看見女神的照片就說明opencv導入成功了。

                             

   如果此處出現加載不到opencv包的情況,即下面幾行代碼出現紅線,則說明添加的包含目錄以及庫目錄不正確。重新去選擇文件夾路徑添加,不要手動輸入添加。

#include <opencv2\core.hpp>
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>

(3)將libtorch添加到VS2015

          找到libtorch解壓後的位置。我的環境中,libtorch位於D:\libtorch。此處,libtorch下載的是release發佈版本,debug版本步驟基本相同。

          開始配置

          同樣,新建一個VS空項目,打開屬性管理器(視圖-其它窗口-資源管理器),選擇Release|X64進行配置屬性頁。(如果下載的是Debug版本的libtorch,則像opencv配置時一樣,選擇Debug | X64)。

          ,在VC++ 目錄->包含目錄中,添加D:\libtorch\include(不要複製粘貼路徑,去選中添加)

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

           ,在C/C++ -> SDL檢查中,設置爲否。

         ④,鏈接器->常規->添加庫目錄中,添加D:\libtorch\lib。

        ⑤,在鏈接器->輸入->附加依賴項,

        方法一:添加絕對路徑D:\libtorch\lib\c10.lib,D:\libtorch\lib\torch.lib

        方法二:添加相對路徑c10.lib,torch.lib

         二者的區別在於下一步驟,是否需要把庫.lib文件複製到現有項目工程中。視自身需要而定。

       

,對應於⑤方法一,將libtorch的lib目錄下的.dll文件全部複製到VS項目中去;對應於⑤方法二,將libtorch的lib目錄下的.dll文件和.lib文件全部複製到VS項目中去。

      放置文件的位置爲與主CPP文件同一目錄下,      

(4)驗證libtorch添加成功

        測試代碼: 導入torch依賴包,選擇release | X64進行測試。(如果在上一步中添加的是libtorch的Debug版本,那麼這個應該選擇Debug | X64)運行。       

    至此,配置成功。

 

  Tips:製作一個屬性表,這樣就不用每次新建項目時,都需要配置庫目錄及依賴項等。(其實VS2015不用這樣操作,每次新建項目,會繼承上次設置的屬性值)

  選擇一個項目,打開屬性管理器,在release| Win x64那一欄右擊添加新項目屬性表。

② 給屬性表命名,設置好存放地址。以後有其他工程項目,只需要把這個屬性表添加到那個工程裏面,就算是配置好LibTorch了,很方便。

③ 開始配置新建的屬性表,雙擊打開,步驟和上述配置庫目錄和依賴項的步驟一致。不再贅述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章