CAFFE中protobuf版本问题导致draw_net.py使用出现问题(已解决)
最近在学习SSD网络,在进行网络可视化的时候使用draw_net.py出现了诸多问题,查询了几个帖子之后才知道,因为之前安装protobuf时用的pip命令,安装的版本为3.0以上,caffe无法适配,我选择重装protobuf。
配环境嘛,复杂一点是正常的!!!
问题1.AttributeError: ‘google.protobuf.pyext._message.RepeatedScalarConta’ object has no attribute ‘_values’
首先卸载原protobuf
pip uninstall protobuf
我用的版本为2.6.1。下载链接:protobuf2.6.1
然后解压protobuf
tar zxvf protobuf-2.6.1.tar.gz
cd到解压文件夹
./configure
make
make check
make install
安装完成后配置
vim ~/.profile
在文本最后添加如下内容(vim添加文本要先输入i,右下角变为-插入-方可正常输入,输入完成后按ESC可结束输入,之后输入“:”,右下角出现“:”标志,输入"wq"保存并退出):
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
使变动生效
source ~/.profile
查看版本
protoc --version
若出现
libprotoc 2.6.1
则安装成功。
之后重新编译caffe,cd到caffe目录下
make clean
make -j8
make pycaffe
之后检查以下caffe编译情况
python
import caffe
不报错则成功,但由于之前我还用pip命令安装过protobuf2.5.0版本,造成版本混乱问题,具体问题及解决方案如下。
问题2.ImportError: cannot import name symbol_database/ImportError: No module named google.protobuf.inter
手动安装完2.6.1之后还出现问题2的话,建议pip安装一遍2.6.1(两次安装版本要统一)
之前一直用的pip3,报问题二后面的错,后来安装python-pip,使用下面命令解决了问题!
应该是默认使用python2,所以找不到路径。
pip install protobuf==2.6.1
至此我的draw_net.py绘制网络可以正常那个使用了!!
ldconfig
附上我绘制的SSD网络结果
python python/draw_net.py /home/xuejunda/caffe/models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt ./SSD_300.jpg --rankdir=BT
reference
[1]https://www.cnblogs.com/chegnshi-coding/p/4457738.html
[2] https://blog.csdn.net/yiranyhy/article/details/55509304