树莓派安装caffe2的坑

  1. 按照官方的教程编译源码,注意./scripts/build_raspbian.sh文件不在caffe2目录下,而在pytorch的根目录(caffe2源码已经合并如pytorch)。看脚本中开了两个线程进行编译,编译到83%左右出现过一次错误,原因是内存超限,不要紧,重新编译一次就好了。

  2. 需要的话要到pytorch/build目录下执行sudo make install。这一步是将编译好的库、可执行文件等放到系统目录等,不太记得make阶段是否做了,反正再执行一次也无害。

  3. 在python下执行import caffe2成功,证明安装成功。(我用的是系统自带的python,不是Anaconda安装的,自己编译库,感觉Anaconda坑会比较多,因为Anaconda自己维护了一个lib目录,经常因为和系统带的库版本不一样而出各种问题)

  4. 执行import caffe2.python.predictor.predictor_exporter as pe报错

Import pycaffe lead to `__new__() got an unexpected keyword argument 'file'` Problem

原因是编译caffe2用的是系统的protoc,而在python中执行时会用python中用pip安装的protoc,两个protoc版本不同,因而导致该错误。可以用如下命令验证

pkg-config --modversion protobuf # 我的系统的protoc是3.5.0版本
pip list | grep protobuf # pip安装的版本是3.0.0版本

需要执行

sudo pip install --upgrade protobuf
# 没有指定版本,发现更新后是3.5.1,和系统的也不一样,但是不要紧,两者兼容,重新执行上面的命令发现OK了
  1. 执行import caffe2.python.predictor.predictor_exporter as pe报错
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/local/lib/python2.7/dist-packages/caffe2/python/predictor/predictor_exporter.py", line 10, in 
    from caffe2.python import workspace, core, scope
  File "/usr/local/lib/python2.7/dist-packages/caffe2/python/workspace.py", line 15, in 
    from past.builtins import basestring
ImportError: No module named past.builtins

这个是因为缺个库,装上就好了sudo pip install future

  1. 如果更新protoc失败则有可能是pip版本太旧,可以先执行
pip install --upgrade pip
sudo pip install --upgrade pip

注意此处两条命令都需要执行,此处还没太搞明白为什么,只执行第一条的话,再次使用pip会报错如下:

Import Error:cannot import name main

网上有教程告诉你怎么改这个错,是pip版本问题引起的,需要修改pip源文件,但是改了会发现sudo pip不能用了,pip和sudo pip版本必须一样,所以都更新了就好了。

你可能感兴趣的:(树莓派安装caffe2的坑)