"我的NVIDIA开发者之旅” | 征文活动进行中.......

接上文:此篇主要为上一篇我的NVIDIA开发者之旅——Caffe教程(1)[Jetson TK1]Caffe工具环境(Linux)搭建-CSDN社区安装过程中容易发生的一些问题和错误提出一些解决方案。

Ubuntu 16.04 下安装配置caffe

这篇教程参考了caffe官方文档,分成两个版本,CPU版本和GPU版本,其实本质上只是配置不同罢了。

首先需要查看默认python(针对Python2与Python3并存的情况):

python --version

如果是python2.7,则以下请遵循python2.7的配置,如果是python3.5以上,则遵循python3.5的配置(最好使用python2.7,因为教程只在2.7环境下编译通过,不保证3.5以上不会出现问题)。

初始配置:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
#下载包管理器pip,如果有可以跳过
sudo apt-get install -y python-pip#如果默认python是Python2.7
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy#如果默认python是Python3.5及以上
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy#如果opencv版本为2.4
sudo apt-get install -y libopencv-dev

安装CUDA 8以及Cudnn(可选)

如果你的显卡是英伟达(NVIDA)的,并且你想使用GPU版本的caffe,那么可以安装Cuda Toolkit 8和CUDNN库,详情请见博主的另一篇文章。

在Ubuntu16.04上安装opencv3.3

如果未安装opencv则可以通过以下方式安装opencv3.3(目前最新版)。

构建opencv 3.3

首先安装依赖关系:

sudo apt-get install --assume-yes build-essential cmake git
sudo apt-get install --assume-yes pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy
sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev
sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils vtk6
sudo apt-get install --assume-yes liblapacke-dev libopenblas-dev libgdal-dev checkinstall

然后从https://github.com/opencv/opencv/archive/3.3.0.zip下载OpenCV 3.3的最新源代码,解压以后进入解压后的目录(一般为opencv-3.3.0),执行:

mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D FORCE_VTK=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -D #如果是CUDA 8.0,则执行以下命令
CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_GDAL=ON -D WITH_XINE=ON -D BUILD_EXAMPLES=ON ..#如果是CUDA 9.0,则执行以下命令
CUDA_NVCC_FLAGS="-D_FORCE_INLINES --expt-relaxed-constexpr"#最后make
make -j $(($(nproc) + 1))

注意:Java 9会导致编译失败。

安装Opencv 3.3

使用make:

sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
sudo apt-get update
#以上完成以后重启
reboot

测试opencv 3.3

进入opencv 3.3目录,执行以下代码:

cd samples/cpp
g++ edge.cpp `pkg-config opencv --cflags --libs` -o test
./test

如图s所示:

说明opencv安装成功。修改gcc和g++版本
在编译caffe之前,先要查看ubuntu下的gcc和g++默认版本,如果是5.0以下(比如4.8),则需要修改。查看:
gcc -v
g++ -v

如果都是5.0以下,则输入以下命令:

sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
sudo ln -s /usr/bin/g++-5 /usr/bin/g++
sudo ldconfig  

然后再次检查gcc和g++版本:

gcc -v
g++ -v

如果都是5.0以上则修改成功。

然后如果进行了修改,则再编辑/usr/local/cuda-8.0/targets/x86_64-linux/include/host_config.h文件,将119行的

error -- unsupported GNU version! gcc versions later than 5 are not supported!

注释掉:

//#error -- unsupported GNU version! gcc versions later than 5 are not supported!

编译caffe

从github上面clone caffe:

cd
git clone https://github.com/BVLC/caffe.git

进入caffe目录下,将Makefile.config.example复制到Makefile.config中:

cd caffe
cp Makefile.config.example Makefile.config

当前路径如图所示:

下面分成两个版本分别编译caffe,请各位读者根据需要选择CPU或者GPU版本。

CPU版本

编辑Makefile.config:

vi Makefile.config

将配置文件里面的#CPU_ONLY:= 1改为CPU_ONLY:= 1,即取消注释。

同理将# WITH_PYTHON_LAYER := 1修改为 WITH_PYTHON_LAYER:=1#USE_OPENCV := 0修改成USE_OPENCV :=1#USE_LEVELDB := 0修改为 USE_LEVELDB:=1,将#USE_LMDB := 0修改成 USE_LMDB :=1

然后修改以下几行(路径根据自己的情况来定):

PYTHON_INCLUDE := /usr/include/python2.7 /usr/local/lib/python2.7/dist-packages/numpy/core/include

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

如果opencv为3以上(本文为3.3),则将OPENCV_VERSION := 3取消注释,然后修改下面一行(opencv中的3rdparty/lib路径根据自己的情况来定):

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/

然后进入Python目录安装依赖关系:

cd python
#默认Python版本为Python2
for req in $(cat requirements.txt); do sudo -H pip2 install $req --upgrade; done

然后返回caffe目录,修改Makefile.config:

cd ..
vi Makefile.config

将这一行:

NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

然后打开CMakeLists.txt,加入下面一行:

# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLINES ${CMAKE_CXX_FLAGS}")

最后编译caffe(在caffe目录下):

mkdir build
cd build
cmake ..
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
make pycaffe -j $(($(nproc) + 1))
#看看是否在caffe目录下,不是就切换到该目录下再执行
make distribute -j $(($(nproc) + 1))

最后为了让Python与Caffe一起工作,编辑文件~/.bashrc:

vi ~/.bashrc

在文件末尾加入这一行:

export PYTHONPATH=/path/to/caffe-master/python:$PYTHONPATH

最后为了使配置立即生效:

source ~/.bashrc 

CPU版本至此编译完成。

GPU版本

和CPU版本很像,只是有些许不同。编译该版本前请保证已经安装CUDA 8和Cudnn。

编辑Makefile.config:

vi Makefile.config

将配置文件里面的# USE_CUDNN := 1 修改成: USE_CUDNN := 1,即取消注释。

同理将# WITH_PYTHON_LAYER := 1修改为 WITH_PYTHON_LAYER:=1#USE_OPENCV := 0修改成USE_OPENCV :=1#USE_LEVELDB := 0修改为 USE_LEVELDB:=1,将#USE_LMDB := 0修改成 USE_LMDB :=1

然后修改以下几行(路径根据自己的情况来定):

PYTHON_INCLUDE := /usr/include/python2.7 /usr/local/lib/python2.7/dist-packages/numpy/core/include

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

CUDA_DIR := /usr/local/cuda-8.0

如果opencv为3以上(本文为3.3),则将OPENCV_VERSION := 3取消注释,然后修改下面一行(opencv中的3rdparty/lib路径根据自己的情况来定):

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/

然后进入Python目录安装依赖关系:

cd python
#默认Python版本为Python2
for req in $(cat requirements.txt); do sudo -H pip2 install $req --upgrade; done

然后返回caffe目录,修改Makefile.config:

cd ..
vi Makefile.config

将这一行:

NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

然后打开CMakeLists.txt,加入下面一行:

# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLINES ${CMAKE_CXX_FLAGS}")
最后编译caffe(在caffe目录下):
mkdir build
cd build
cmake ..
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
make pycaffe -j $(($(nproc) + 1))
#看看是否在caffe目录下,不是就切换到该目录下再执行
make distribute -j $(($(nproc) + 1))

最后为了让Python与Caffe一起工作,编辑文件~/.bashrc:

vi ~/.bashrc

在文件末尾加入这一行:

export PYTHONPATH=/path/to/caffe-master/python:$PYTHONPATH

最后为了使配置立即生效:

source ~/.bashrc 

至此GPU版本编译成功。

测试caffe mnist集

进入caffe目录并测试:

cd ~/caffe
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh  

结果如下:

测试成功,至此,本教程结束。

我的NVIDIA开发者之旅——Caffe教程(2)[Jetson TK1]Caffe工具环境(Linux)搭建实例相关推荐

  1. 我的NVIDIA开发者之旅——NVIDIA云原生技术

    NVIDIA云原生技术:耐心看完受益匪浅 第一篇->NVIDIA云原生技术 [1]NVIDIA容器工具包 [2]GPU操作员 [3]带GPU的Kubernetes [3.1]安装Kubernet ...

  2. 我的NVIDIA开发者之旅-Jetson Nano 2gb教你怎么训练模型(完整的模型训练套路)

    我的NVIDIA开发者之旅" | 征文活动进行中....... 模型的保存和加载 pytorch的安装方法这里就不写了,之前的文章有记录,nvidia官网的资料已经很详细了附上连接(注意你的 ...

  3. 我的NVIDIA开发者之旅——作为一名初学者,我是如何开启 NVIDIA Jetson Nano 开发的

    "我的NVIDIA开发者之旅" | 征文活动进行中- ⭐️ 作者:前端修罗场 ⭐️ 本文名称:我的NVIDIA开发者之旅--作为一名初学者,我是如何开启 NVIDIA Jetson ...

  4. 我的NVIDIA开发者之旅-Jetson在没有显示器的状态下使用Vnc操控GUI界面开发的三种实用技巧

    "我的NVIDIA开发者之旅" | 征文活动进行中....... 首先是因为小编是没有显示器用,想着用vnc操作图形界面,使用了nvidia自带的vnc远程方法是无效的在没显示器的 ...

  5. 我的NVIDIA开发者之旅——利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统

    利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统 实现目标 部署工具:NVIDIA DeepStream SDK 简单设置参数 工作流程 注意事项 GPU深度学习推理 ...

  6. 我的NVIDIA开发者之旅--从CUDA种草AI梦

    我的NVIDIA开发者之旅" | 征文活动进行中....... 一.什么是CUDA? CUDA(Compute Unified Device Architecture),是显卡厂商NVIDI ...

  7. Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe的安装记录

    一.安装环境: 硬件:微星GE70 2PC 089-XCN,14年性价比较高的一款,然而两年多过去后配置已经落伍...当年的价格现在能买到i7+GTX1050了... CPU:intel i5 420 ...

  8. Ubuntu 16.04系统下CUDA8.0配置Caffe教程

    由于最近安装了Ubuntu 16.04,本文教程的特点是不需要降级gcc的版本,毕竟cuda8.0已经支持gcc5以上(默认不支持,实际支持). 本文是在参考caffe官网教程以及http://www ...

  9. 给iOS开发者的Sketch入门教程

    给iOS开发者的Sketch入门教程 作为一名iOS开发者,我经历过几个没有设计师的项目,结果就是,痛苦的一逼. 做这种类型的项目,设计是非常重要的,特别是迭代设计. 在每个项目最开始的时候,客户其实 ...

  10. 给 iOS 开发者的 Sketch 入门教程

    给 iOS 开发者的 Sketch 入门教程 原文出处: raywenderlich   译文出处:Andy矢倉(@Andy矢倉) 作为一名iOS开发者,我经历过几个没有设计师的项目,结果就是,痛苦的 ...

最新文章

  1. 小米副总裁崔宝秋:智能手机是今天AI技术最大的平台,AIoT又让AI无处不在 | MEET 2021...
  2. 面具卡米怎么删模块_魔兽8.3咋肥事——面具带几个收益高?对小怪宝箱水晶有加成吗?...
  3. 敏捷BI的业务模型是怎样的,为何能替代手动建模?
  4. linux桥接设置静态,centos6.10 桥接模式下配置静态ip
  5. ★☆★cf D. Petya and Array
  6. BZOJ1110 : [POI2007]砝码Odw
  7. 2022电大国家开放大学网上形考任务-中华文化概说非免费(非答案)
  8. 简单迅速解决windows电脑下载windows应用商店(Microsoft Store)
  9. php有个schost.exe_windows找不到svchost.exe(附图)
  10. 用scratch编程打字游戏
  11. golang chan
  12. php 漏洞 怎么解决,php安全漏洞怎么修复?
  13. 如何快速完成一份学术型PPT
  14. 微软面试题:红帽子与黑帽子
  15. 计算机组成内存外存,内存和外存
  16. 苏州大学计算机科学考研科目,苏州大学 计算机科学与技术研究生考试科目和考研参考书目...
  17. iOS初级开发学习笔记:微信充值
  18. 【金猿技术展】SSNG多源数据处理技术——运营商手机信令处理系统及平台
  19. java-php-python-ssm如家酒店管理系统计算机毕业设计
  20. 姫野珠世 - can know two close

热门文章

  1. 【游戏引擎Easy2D】场景和文本,不同的输出方式
  2. DirectX Repair
  3. 车型代号对照表_车型代号对照表 2016最新版
  4. 教育OA系统该如何选择?
  5. HBase权威指南中文版pdf
  6. 递归算法经典实例 java_java实现的经典递归算法三例
  7. java递归算法经典实例_java简单编程题问第五个人多少岁?java递归算法经典实例...
  8. Github客户端下载慢的解决方法
  9. kong自定义插件(修改官方插件)
  10. 201632位matlab下载_Matlab R2016a x32|matlab 2016a 32位版下载 完全免费版 - 121下载站