caffe+SSD封裝

小魔大樹哥發表於2017-08-09

這幾天新建自己的工程來封裝caffe框架下的ssd測試演算法。

一些步驟及遇到一些問題歸納如下:

1、利用NuGet程式包,進行依賴性的自動設定,自己的工程再加上libcaffe.lib即可。

2、把原來工程下的include和src資料夾都拷到工程下。

3、編譯時碰到GPU模式異常,可能是在工程的c/c++選項的預處理定義中定義了巨集GPU,導致了衝突,去掉後編譯成功。

4、執行時出現下列錯誤

------------------------------------------------------

Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Input (known types: )

則把src/caffe中的layer_factory.cpp新增到專案中,並在src/caffe/layers中尋找input_layer.cpp,新增到專案中,重新編譯後執行,後面顯示找不到那個layer就去新增相應的cpp檔案即可


------------------------------------------------------

錯誤 104 error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h.

在專案屬性的c/c++選項的預處理定義中新增即可

GLOG_NO_ABBREVIATED_SEVERITIES

加入後如果出現

error C2838: “add_data”: 成員宣告中的非法限定名

100多個錯誤,嘗試再預定義中加入

NOMINMAX
WIN32_LEAN_AND_MEAN //可不加試試能否編譯成功
NO_STRICT

----------------------------------------------------

編譯出現錯誤 119 error LNK2038: 檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項:  值“0”不匹配值“2”(concat_layer.obj 中)

很可能你現在是在Debug模式下呼叫release模式下生成的libcaffe

注意如果工程是在release下編譯,一定要用原工程release模式下生成的libcaffe.lib,Debug模式下也類似。


-----------------------------------------------------

5、轉換為CPU模式,只需要在屬性中的預定義中加入CPU_ONLY即可


相關文章