Try   HackMD

go-onnxruntime-example 範例程式的執行與常見問題

此筆記用於解決執行github上 go-onnxruntime-example 的常見問題

STEP1: 下載 go-onnxruntime-example-main 壓縮檔並解壓縮

連結: https://github.com/yam8511/go-onnxruntime-example
點開連結後,可於 <>code 內找到"Download ZIP"的選項,
點選後即可下載壓縮檔

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

STEP2: 執行 go-onnxruntime-example

打開剛剛解壓縮的資料夾,可以看見作者提供了README.md檔案,點開依照指令執行程式即可。(常見問題在下方)

onnxruntime.dll 安裝

如果你的電腦內沒有onnxruntime.dll,那程式在第二步便無法成功運行

安裝方法:

  1. 到連結內下載需求版本 ( windows/linux )
    連結:https://github.com/microsoft/onnxruntime/releases/tag/v1.16.3
  2. 建立onnxruntime資料夾並將剛剛的檔案解壓縮至此即可
  3. 將onnxruntime.dll檔案路徑設為環境變數

常見問題

1. <opencv.hpp> 檔案路徑找不到

程式報錯如下

fatal error: opencv2/opencv.hpp: No such file or directory
  • STEP1:打開 go-onnxruntime-example-main\pkg\gocv\cgo.go 檔案

程式碼內提供了路徑參數顯示如下:

/*
#cgo !windows pkg-config: opencv4
#cgo CXXFLAGS:   --std=c++11
#cgo windows  CPPFLAGS:   -ID:/tools/opencv-4.7.0/install-cpu/include
#cgo windows  LDFLAGS:    -LD:/tools/opencv-4.7.0/install-cpu/x64/mingw/lib -lopencv_core470 -lopencv_face470 -lopencv_videoio470 -lopencv_imgproc470 -lopencv_highgui470 -lopencv_imgcodecs470 -lopencv_objdetect470 -lopencv_features2d470 -lopencv_video470 -lopencv_dnn470 -lopencv_xfeatures2d470 -lopencv_plot470 -lopencv_tracking470 -lopencv_img_hash470 -lopencv_calib3d470 -lopencv_bgsegm470 -lopencv_photo470 -lopencv_aruco470 -lopencv_wechat_qrcode470 -lopencv_ximgproc470
*/

在編譯程式中 (C 或 Go 甚至其他語言), -I 跟 -L 是指定路徑用的
例如:-ID:/tools/opencv-4.7.0/install-cpu/include
代表OpenCV的include裝在 D:/tools/opencv-4.7.0/install-cpu/include

  • STEP2:修改路徑

有了以上了解,我們只需要將路徑修改為本機內OpenCV的include及lib位置即可 (以我本機路徑為例)

/*
#cgo !windows pkg-config: opencv4
#cgo CXXFLAGS:   --std=c++11
#cgo windows  CPPFLAGS:   -IC:/opencv/build/install/include
#cgo windows  LDFLAGS:    -LC:/opencv/build/lib -lopencv_core490 -lopencv_face490 -lopencv_videoio490 -lopencv_imgproc490 -lopencv_highgui490 -lopencv_imgcodecs490 -lopencv_objdetect490 -lopencv_features2d490 -lopencv_video490 -lopencv_dnn490 -lopencv_xfeatures2d490 -lopencv_plot490 -lopencv_tracking490 -lopencv_img_hash490 -lopencv_calib3d490 -lopencv_bgsegm490 -lopencv_photo490 -lopencv_aruco490 -lopencv_wechat_qrcode490 -lopencv_ximgproc490
*/

如果路徑正確,再次執行程式應該不會有錯。

2. 找不到 zlibwapi.dll 檔案位置

程式報錯如下

use CUDAExecutionProvider
Could not locate zlibwapi.dll. Please make sure it is in your library path!

這是因為 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin 內缺少了zlibwapi.dll導致

註:網路上會建議你去Nvidia官網下載檔案,但現在官網已經不提供下載了

  • STEP1:在 C:\Program Files 搜尋 zlibwapi.dll
  • STEP2:找到檔案位置後,複製一份至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x\bin 資料夾內

重新整理後,再執行一次程式應該就不會報錯了。