天天看點

caffe,運作fast-rcnn出現Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPoolingwin10+VS2013+caffefast-RCNN 的demo

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,運作fast-rcnn出現Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPoolingwin10+VS2013+caffefast-RCNN 的demo

我在網上找了很久問題的解決方法,發現自己沒用,是以決定自己看代碼解決,主要原因是專用的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,錯誤消失。