1. 程式人生 > >Openpose——windows編譯(炒雞簡單)

Openpose——windows編譯(炒雞簡單)

前言

最近準備看看rtpose的程式碼,發現已經由openpose這個專案維護著了,由於經常在windows下除錯程式碼,所以嘗試了一下如何在windows下編譯openpose原始碼,結果發現,我靠,炒雞簡單,Cmake一步搞定。

寫部落格的目的在於,為了避免後續openpose的專案組各種維護各種加新內容的時候又改變了很多庫什麼的,比如升級CUDA版本、Opencv之類的,所以這裡記錄一下當前配置的環境和所需載入內容。 其實部落格壓根不用看,直接下載zip然後丟進cmake編譯完事。

國際慣例,參考部落格:

【注】強烈建議解壓目錄路徑不要太長,比如解壓在E:\code下,不要解壓在E:\code\xx\xx\xx\xx_xxx

之類的,我自己嘗試的時候給我彈一堆問題。

準備工作

使用工具

CMakeVisual StudioCUDAcudnn

具體地,我用的具體版本是:

CMake: 3.9.0

Visual Studio:建議2013以上,我用的2015

CUDA: 9.0,下載戳這裡

cudnn:cudnn-9.0-windows10-x64-v7,戳這裡

關於CUDA的安裝就不說了,可以看別人部落格,也可以看我配置caffe的時候配置CUDA的方法

【注】無需再下載opencv、caffe之類的東東了

下載模型

也可以不下載,在CMake的時候自動下載,但是會很慢,所以提前下載放好可以加快編譯速度

三方庫(放到\openpose-1.3.0\3rdparty\windows,解壓方式選擇解壓到當前資料夾):

編譯VS工程

\openpose-1.3.0資料夾中建立一個build資料夾:

這裡寫圖片描述

開啟CMake,這樣設定路徑

這裡寫圖片描述

直接點選下方的Configure

這裡寫圖片描述

依據自己的電腦環境選擇VS版本,我選擇是的2015,版本儘量高一點吧,可能有些C++ 11的特性在低版本支援不太好。

【注】這裡會下載三方庫,庫裡包含opencvcaffe

編譯日誌如下:

Windows OS support currently is experimental.
Feel free to send us any suggestion or
bug you encounter. Building with CUDA. Downloading windows dependencies... opencv_310.zip already exists. caffe3rdparty_2018_02_13.zip already exists. caffe_2018_01_18.zip already exists. Windows dependencies downloaded. Adding Example OpenPoseDemo Adding Example 1_custom_post_processing Adding Example 1_extract_from_image Adding Example 2_extract_pose_or_heatmat_from_image Adding Example 1_openpose_read_and_display Adding Example 2_user_processing_function Adding Example 3_user_input_processing_and_output Adding Example 4_user_input_processing_output_and_datum Adding Example 1_user_asynchronous_output Adding Example 2_user_synchronous Adding Example 3_user_asynchronous Download the models. Downloading body (COCO) model... Model already exists. Not downloading body (MPI) model Downloading face model... Model already exists. Downloading hand model... Model already exists. Models Downloaded. Configuring done

再點一次Configure,我也不知道為什麼,反正看很多時候使用CMake最好點兩次,如果框中有紅色的條目就得注意了,肯定出錯了,建議貼在評論區大家討論,不要貼什麼cuda之類的錯誤,自己看cuda的安裝方法。

分析這個日誌可以發現很多Download,都是自動下載的,我提前下載好了,所以就提示exists

最後generate一下完事。

這裡寫圖片描述

用VS2015開啟這個工程檔案,生成解決方案:

這裡寫圖片描述

等一會就完成了,但是執行的時候發現很對dll找不到,可以選擇新增新增電腦環境變數Path的方法,也可以將缺的dll複製到C:\Windows\System32或者C:\Windows\SysWOW64或者是E:\openpose\openpose-1.3.0\build\x64\Release中,我是直接複製到當前的編譯目錄,也就是可執行檔案存在的目錄中了,好像缺的挺多的,編譯完的時候只有openpose.dll,但是執行的時候還需要

這裡寫圖片描述

這些dll都能在E:\openpose\openpose-1.3.0中找到,複製過去就行了

執行測試

通過VS工程中的解決方案資源管理器中可以發現,提供的例項還是挺多的

這裡寫圖片描述

在屬性頁選擇當前選定內容後,可以針對每個案例執行看看結果,我就執行第一個了,預設有圖片,也可以自己選擇圖片,不要問怎麼改,自行分析原始碼,理論很複雜,但是僅僅更改圖片是很容易分析出來的:

這裡寫圖片描述

錯誤資訊

上面說過,如果解壓路徑太長,CMake可能出現的錯誤是:

Windows dependencies downloaded.
CMake Error at src/openpose/CMakeLists.txt:14 (if):
  if given arguments:

    "NOT" "FILE" "MATCHES" "E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"

  Regular expression
  "E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"
  cannot compile

還有記得拷貝完那個三方庫記得解壓哈,不過是自動下載的就不需要了

後記