caffe中使用python自定義層出現protobuf版本不對

1. 編譯問題 

  1. 先執行  sudo easy_install setproctitlepython

  2. 打開Makefile.config, 反註釋:WITH_PYTHON_LAYER := 1
  3. 執行以下命令,便可從新編譯環境。(支持python自定義層的caffe環境。)
sudo make clean
sudo make -j4
sudo make pycaffe
sudo make distribute

 

2. 可能出現的問題

ImportError: No module named voc_layers

可能緣由及解決方案:git

  a. 編譯問題, 使用上面的命令從新編譯caffe環境。github

  b. 指定的層在PYTHONPATH中找不到ui

    解決方案分兩種,i. 將voc_layers.py 文件複製到PYTHONPATH其中目錄之一下,google

      ii. 將voc_layers.py 所在的目錄添加到PYTHONPATH中。spa

 

 

This program requires version 3.5.0 of the Protocol Buffer runtime library

具體詳細日誌以下:日誌


 

[libprotobuf FATAL google/protobuf/stubs/common.cc:61] This program requires version 3.2.0 of the Protocol Buffer runtime library, but the installed version is 2.5.0. Please update your library. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "google/protobuf/descriptor.pb.cc".)code


日誌說明:即protobuf的版本不對,這裏的protobuf版本只python中的版本和caffe裏面的protobuf版本對不上。和系統中的protobuf 版本無關。 blog

官方issue:https://github.com/BVLC/caffe/issues/5711ip

解決方案: 千萬不能升級!!!千萬不能升級!!!千萬不能升級!!!

   執行以下命令:

sudo pip uninstall protobuf

sudo pip install protobuf==2.5.0 

 

sudo pip2 uninstall protobuf

sudo pip2 install protobuf==2.5.0

python2和python3都須要卸載 上面的4行命令即:卸載python2和python3下的protobuf,同時從新安裝2.5.0版本的protobuf。

能夠到 /usr/local/lib/{pythonVersion}/dist-packages去查看的protobuf的版本,若是不是目標版本,再執行上面的4條命令,不一樣版本下都須要刪掉。

相關文章
相關標籤/搜索