apt-get install gcc-5,g++-5
import pyximport
pyximport.install()
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
sudo apt-get install python-numpy
CPU:
光改 setup.py 不行。下面是我改的步骤,在 OSX 10.11.2 上测试成功,可以在 CPU 模式下跑 faster_rcnn,在 Ubuntu 下应该也没问题。
--------------------------------------
1)首先,我的 python 版本是 anaconda ,这决定了后面修改代码的方式。原版 python 我平时不用,所以没法测试。
2)修改 lib/fast_rcnn/config.py
找到 196 行 `__C.USE_GPU_NMS = True`。将 `True` 改为 `False`, 关闭 gpu nms 代码。
3)修改 lib/fast_rcnn/nms_wrapper.py
将第 9 行 `from nms.gpu_nms import gpu_nms` 注释掉。其余不用改。虽然 nms_wrapper.py 下面也包含了些 gpu_nms 代码。但是因为第 2)步已将 `USE_GPU_NMS` 改成 `False` 了,所以下方的代码保持原样就行。
4)修改 lib/setup.py
1. 将 `def locate_cuda()` 整个函数定义都注释掉;
2. 注释 57 行 `CUDA = locate_cuda()` ;
3. 注释 77 行 `self.src_extensions.append('.cu')`;
4. 注释 87 行` if os.path.splitext(src)[1] == '.cu':` 到 94 行 `else:`,只保留 `postargs = extra_postargs['gcc']`, 注意注释后的代码缩进;
5. 注释 125 行 `Extension('nms.gpu_nms',` 到 141 行 之间的代码。
5)修改 tools/demo.py
1. 删除第 1 行 `#!/usr/bin/env python` ,如果不删除这一行,则在运行 demo.py 时会使用原版的 python 而不是 anaconda python。一旦如此,跑 demo 的时候会直接显示 segmentation fault !;
2. 注释 116 行 `parser.add_argument.......` 这一段;
3. 143 行到 148 行之间的代码 只保留一个 `caffe.set_mode_cpu()`
4. 注释 153 到 158 行 之间的 `# Warmup on a dummy image` 一段代码。如果不注释,会在运行到 lib/faster_rcnn/test.py 下 的 net.forward(**forward_kwargs) 函数时直接出现 segmentation fault !
6) 下面是 编译 caffe,填写 Makefile 文件时,注意使用 CPU 模式,使用 anaconda 库,打开 WITH_PYTHON_LAYER。
7) 到 lib 下 make;然后回到 faster_rcnn 根目录下输入 python tools/demo.py
上述步骤或许可以做简化,但我没那么多时间测试,题主可以自己试试。