Tic商业评论

关注微信公众号【站长自定义模块】,定时推送前沿、专业、深度的商业资讯。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

  • QQ空间
  • 回复
  • 收藏

Caffe Makefile配置

lijingle 环境搭建 2022-1-26 10:38 2526人围观

# Always start a new build with
$ make clean
Makefile.config
Makefile.config 包含所有 Caffe 安装信息。 设置正确,编译 Caffe 就很容易了。
GitHub 存储库中没有 Makefile.config。 相反,有几个例子。 文件名表示安装类型。 它遵循 TensorFlow 的命名约定; Makefile.config.cpxx_operating-system_example。 cpxx 代表 Python3 版本。 操作系统不言自明。 复制与你的设备匹配的那个并使用 nano 编辑器进行检查。 我们在这里使用 nano 是因为它比 gedit 更好地突出语法。 按照如下所示的命令进行操作。 最好打开第二个终端,用于收集系统信息。 屏幕转储来自 Ubuntu 20.04 桌面,但其他系统具有类似的命令和屏幕。
$ cd ~/caffe
# Choose the appropriate config for instance, Raspberry Pi with Raspbian 32-bit OS
$ cp Makefile.config.cp37_arm-linux-gnueabihf_example Makefile.config
# Or this one with CUDA on a desktop Ubuntu 20.04 machine
$ cp Makefile.config.cp38_x86_64-linux-gnu_CUDA_example Makefile.config
# After you select one open it with nano
$ nano Makefile.config


图片 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 时。在另一个平台的情况下,不需要调整。
#ifndef CAFFE_CUDNN_CONV_LAYER_HPP_
#define CAFFE_CUDNN_CONV_LAYER_HPP_

#include <vector>

#include "caffe/blob.hpp"
#include "caffe/layer.hpp"
#include "caffe/proto/caffe.pb.h"

#include "caffe/layers/conv_layer.hpp"

namespace caffe {

#ifdef USE_CUDNN
#include "cudnn.h"    //add this line only in case of a Jetson TX2
/*
 * @brief cuDNN implementation of ConvolutionLayer.
 *        Fallback to ConvolutionLayer for CPU mode.
 *
 * cuDNN accelerates convolution through forward kernels for filtering and bias

图片 9。
opencv4 位置是通过 pkg-config --cflags 命令找到的,另外两个是通过搜索命令找到的。 注意使用路径的哪一部分。

为了清楚起见,下面再次给出命令。
# To get OpenCV version
$ python3
>>> import cv2
>>> cv2.__version__
# To get the configuration package
$ pkg-config --cflags opencv4
# To get CUDA loation
$ which nvcc
# To get python lib and numpy location
$ python3 -m site
$ find /usr -name numpyconfig.h
# To get boost-python version
$ ldconfig -p | grep boost_python3
# To get hdf5
$ find /usr -name H5Classes.h
$ find /usr -name libhdf5.so

Protobuf
Caffe 依赖于 protobuf。 使用以下命令检查是否存在正确的 (python3) 库。 如果找不到该库,请无论如何安装它。
# Check python3 protobuf
$ pip3 list | grep protobuf
# If the above command doesn't show
# a protobuf version, please install it now
$ sudo pip3 install protobuf
Skimage
Skimage 依赖于 numpy。 过去,不同版本的 scikit-image (skimage) 和 numpy 不能很好地协同工作。 例如,请参阅 GitHub 上的此问题。 在 Python 中启动 Caffe 时抛出的错误是 cannot import name '_validate_lengths'。 要解决此问题,您需要强制升级 scikit-image。 使用下面的命令。 在 Raspberry Pi 上可能需要一段时间,一个多小时。 几个大型库,例如 scipy,现在也被迫重建。
# upgrade skimage
$ sudo pip3 install --upgrade scikit-image




路过

雷人

握手

鲜花

鸡蛋
我有话说......
电话咨询: 135xxxxxxx
关注微信