原因分析
出现该错误的原因是DenseNet-Caffe中用到了ceil_mode操作,由于master版本的caffe中并不支持该操作,而Caffe2中的caffe.proto文件又是直接从caffe-master中拷贝过来的,故产生了该错误。
解决方法
该错误在caffe中也会遇到,在caffe中的解决办法是修改源码,然后重新编译caffe。具体可以参考这篇博客。但caffe2中貌似并没有跟caffe一样的源码文件,不过可以通过将重新编译好的caffe.proto替换caffe2/caffe/proto目录下的同名文件,然后再重新编译caffe2加以解决。
重新编译caffe2之前,最好在caffe2主目录下用rm -rf /build
先将caffe2/build目录下的文件清空,然后在执行下面的编译命令(假定caffe2的相关依赖库已安装好,如未安装好请参考caffe2的安装教程)重新编译caffe2应该就可以支持ceil_mode模式了。
# This will build Caffe2 in an isolated directory so that Caffe2 source is
# unaffected
mkdir build && cd build
# This configures the build and finds which libraries it will include in the
# Caffe2 installation. The output of this command is very helpful in debugging
cmake ..
# This actually builds and installs Caffe2 from makefiles generated from the
# above configuration step
sudo make install
PS:如果有需要DenseNet的pkl权值文件用于在Detectron中使用DenseNet的,可以在这里下载我转换好了的densenet预训练模型,顺便帮忙点个赞^_^