Makefile.config Makefile.config 包含所有 Caffe 安装信息。 设置正确,编译 Caffe 就很容易了。 GitHub 存储库中没有 Makefile.config。 相反,有几个例子。 文件名表示安装类型。 它遵循 TensorFlow 的命名约定; Makefile.config.cpxx_operating-system_example。 cpxx 代表 Python3 版本。 操作系统不言自明。 复制与你的设备匹配的那个并使用 nano 编辑器进行检查。 我们在这里使用 nano 是因为它比 gedit 更好地突出语法。 按照如下所示的命令进行操作。 最好打开第二个终端,用于收集系统信息。 屏幕转储来自 Ubuntu 20.04 桌面,但其他系统具有类似的命令和屏幕。
图片 1。 这张图片反映了安装了 CUDA 和 cuDNN 工具包的安装。很明显,它必须是 x86_64-Linux-gnu 机器,因为 Raspberry Pi 不支持 CUDA。如果你只有 CUDA 而没有 cuDNN,则最好先安装 cuDNN,然后再继续。 cuDNN 将张量计算速度提高了约 36%。如果你没有 NVIDIA GPU,请参阅图片 2。 图片 2。 在只有 CPU 的情况下,散列注释禁用 USE_CUDNN 标志。 CPU_ONLY 标志现在处于活动状态。此设置用于 Raspberry Pi 等。 图片 3。 在顶部,你会看到三个第三方库(OpenCV、LevelDB 和 LMDB)都已启用。最好保持这种方式,因为它们会加速你的 Caffe 框架。 接下来,你会看到 OpenCV 版本,假定为版本 4。如果你有旧版本(1、2 或 3),请考虑升级到 4.4.0 版本。 Caffe 最终将与 OpenCV 2.4.13 一起使用,但在这次冒险中你要靠自己。如果你坚持使用低于 3 的版本,请通过在前面放置一个哈希来注释掉 OPENCV_VERSION 和 USE_PKG_CONFIG 行。我们假设你已经按照我们的指南安装了 OpenCV,所以总会有一个可用的包配置。 此图片中最后启用的行是 CUDA_DIR。再次假设你已遵循 NVIDEA 的安装指南,将会有一个符号链接 /usr/local/cuda 指向 CUDA 所在的实际文件夹。 图片 4。 在这里,你可以看到用于为上一张图片收集所有必要信息的命令。你的 OpenCV 版本、OpenCV 包配置和 CUDA 目录的存在(如果你安装了 CUDA)。请注意,给出的 CUDA 目录是物理位置。它将类似于 /usr/local/cuda-6.5/bin。但是,请检查安装是否已在此路径的同一位置 (/usr/local) 上放置了符号链接。最好使用这个链接,因为升级到更新的 CUDA 版本可以让符号链接保持不变。如果没有符号链接,请给出不带子目录的文件夹名称 (/usr/local/cuda-x.y)。 图片 4b。 尽管可用,但 nvcc 不会使用 $ which 返回其位置。在这种情况下最好使用命令 $ ldconfig -p | grep 库达。 图片 5。 在此处选择你最喜欢的基本线性代数子程序。 OpenBLAS 稍微快一些,这就是我们选择这个库的原因。 图片 6。 禁用整个 Python 2 部分,因为我们使用的是 Python 3。不可能同时选择两者。你必须选择一个。 由于停止了对 Python 2 的支持,并且 Ubuntu 20.04 仅附带 Python 3,因此选择并不太难。 这里要说一句。因为 Caffe 第一版是在 2013 年,那个时期 Python 2 仍然是最受欢迎的,所有旧的 Caffe 示例都是在这个版本中编写的。 接下来,给出 libboost_python 和 python 版本。还要检查给定的 Numpy 位置是否存在。下一张图片为你提供有关如何查找此信息的命令。 图片 7。 此处给出了获取 python 和 libboost_python 版本的命令。这台机器安装了 libboost_python38。别人可以有libboost_python3,所以要注意位数。 NumPy 的位置是通过搜索标题之一找到的。请注意将文件夹名称赋予 Makefile.config 时路径。 图片 7b。 这是另一个使用 Ubuntu 18.04.5 的 PC 的示例。如你所见,python 和 libboost_python 版本的名称有些奇怪。省略 lib 前缀后,你应该在 Makefile.config 中指定 python3.6m 和 boost-python3-py36 作为库名称。 图片 8。 使用 WITH_PYTHON_LAYER 标志启用支持层后,在此处提供最后一个目录。 需要两个标头位置,opencv4 和 hdf5。和 hfd5 库文件夹。请参阅图片 9,了解如何获取此信息。 图片 8b(仅限 Jetson TX2)。 对于 Jetson TX2,需要添加两个额外的文件夹。编译时需要的一些宏定义在 cudnn.h 中,位于这些目录中。同时,你需要将 cudnn.h 标头包含到 cudnn_conv_layer.hpp 中。 请打开 /caffe/include/caffe/layers/cudnn_conv_layer.hpp 并在第 15 行添加#include cudnn.h,如下所示。 同样,仅当你拥有 Jetson TX2 时。在另一个平台的情况下,不需要调整。
图片 9。 opencv4 位置是通过 pkg-config --cflags 命令找到的,另外两个是通过搜索命令找到的。 注意使用路径的哪一部分。 为了清楚起见,下面再次给出命令。
Protobuf Caffe 依赖于 protobuf。 使用以下命令检查是否存在正确的 (python3) 库。 如果找不到该库,请无论如何安装它。
Skimage Skimage 依赖于 numpy。 过去,不同版本的 scikit-image (skimage) 和 numpy 不能很好地协同工作。 例如,请参阅 GitHub 上的此问题。 在 Python 中启动 Caffe 时抛出的错误是 cannot import name '_validate_lengths'。 要解决此问题,您需要强制升级 scikit-image。 使用下面的命令。 在 Raspberry Pi 上可能需要一段时间,一个多小时。 几个大型库,例如 scipy,现在也被迫重建。
|