背景
最近想測試一個目標檢測模型CBNet,該模型是基於Detectron改寫的,但是又不是最新的Detectron,屬於歷史版本。
衆所周知,Detectron基於caffe2,所以先得安裝caffe2。官網有多種安裝方式,常用 源碼安裝或者conda預構建包安裝。
遇到的問題
因爲以前源碼編譯過,這次想偷個懶用conda直接安裝caffe2(其實就是安裝pytorch,後來整合進去了),然後按Detectron的官方安裝教程把Detectron也裝好了,最後卡在測試的時候,總是報下面那個錯誤:
AssertionError: Detectron ops lib not found; make sure that your Caffe2 version includes Detectron module
分析
錯誤讓我很納悶,都是按照官方教程一步一步配置的怎麼會出問題,一直懷疑是我中間搞錯了,還重來了一遍,依舊有問題。後來反應過來去查錯誤,發現是小bug,最新版本的Detectron不會有這個問題(自己還傻愣測試了一下!)。
根本原因是conda直接安裝的pytorch包的libcaffe2_detectron_ops_gpu.so
在torch/lib
目錄下,而老版本的Detectron只檢索了lib
目錄,所以根本找不到,但源碼構建caffe2不會出這個問題。
解決方案
把新版本的代碼替換老版本,參考Link。
總結
一些基於老框架的代碼,多多少少會有版本問題。當遇到的錯誤,你有點不解時,趕緊到相關repo的issues下面去找,一般都能找到解決方案,節省時間!!!