caffe,運行fast-rcnn出現Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPooling

win10+VS2013+caffe

fast-RCNN 的demo

win10+vs2013+caffe運行fast-rcnn的demo出現很多問題,看來網上很多給的方法都沒有解決,最後自己看代碼解決,希望能給後續的人幫助。其中出現Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPooling 網上的回答沒有解決我的問題,就自己調了一下。

運行fast-rcnn時需要下載新的caffe分支,當然也可以自己重新進行編譯,我選擇的是在自己的caffe上重新編譯,添加了caffe.mamaged項目,我自己下載的版本沒有roi_pooling_layer.cpp和roi_pooling_layer.cu,當然也沒有對應的roi_pooling_layer.hpp。所以我自己在github上可以找到這幾個文件然後放在caffe_root/src/caffe/layers下。中間還出了很多小問題,所以不建議用這種方法,可在https://github.com/Microsoft/caffe下載專用fast-rcnn的caffe,根據之前編譯caffe下windows的文件,重新生成一次。
然後按照流程運行demo發現出了這個Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPooling,如下圖:
這裏寫圖片描述
我在網上找了很久問題的解決方法,發現自己沒用,所以決定自己看代碼解決,主要原因是專用的caffe包含roi_pooling_layer.cpp和roi_pooling_layer.cu文件,但是windows版本根本沒去編譯它們,build的情況下沒有生成,所以說windows版本啥時候都是坑。caffe的windows的項目所有依賴的文件都在libcaffe這個項目裏面,所以我決定從這裏入手,打開libcaffe.vcxproj,發現裏面果然沒有去生成這兩個文件,我在157行加入了

<ClCompile Include="..\..\src\caffe\layers\roi_pooling_layer.cpp" />

在265行加入了

<ClInclude Include="..\..\include\caffe\layers\roi_pooling_layer.hpp" />

在344行加入了

<CudaCompile Include="..\..\src\caffe\layers\roi_pooling_layer.cu" />

同時修改libcaffe.vcxproj.filters文件,在291行加入

<ClCompile Include="..\..\src\caffe\layers\roi_pooling_layer.cpp">
<Filter>src\layers</Filter>
</ClCompile>

在569行加入了

<ClInclude Include="..\..\include\caffe\layers\roi_pooling_layer.hpp">
<Filter>include\layers</Filter>
</ClInclude>

在781行加入了

<CudaCompile Include="..\..\src\caffe\layers\roi_pooling_layer.cu">
<Filter>cu\layers</Filter>
</CudaCompile>

然後重新build下caffe-windows裏的項目。在進行fast-RCNN,錯誤消失。

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