前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文复现前奏篇:漫漫长路之Caffe-C3D

论文复现前奏篇:漫漫长路之Caffe-C3D

作者头像
公众号guangcity
发布2019-09-20 15:27:44
1.2K0
发布2019-09-20 15:27:44
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

漫漫长路之Caffe-C3D

0.导语1.Caffe源码编译1.0 NVIDIA与Anaconda31.1 GCC与G++降级1.2 cuda 9.01.3 cuDNN1.4 caffe-gpu源码编译1.5 python库安装1.6 编译1.7 环境变量1.8 导包测试2.caffe-cifar10测试2.1 获取数据集2.2 转换数据集格式2.3 训练及测试3.Caffe-C3D3.1 下载及配置3.2 安装库与编译4.C3D-cifar10测试4.1 获取数据集4.2 转换数据集格式4.3 训练及测试

0.导语

我终于复活了,哈哈,好几天没更文了,这次更文内容为:Caffe源码编译及Caffe-C3D搭建及测试!

由于需要复现与C3D相关的论文,所以需要配置Caffe及C3D。这几天折腾了好久,终于解决了。发现了最大的bug在于我没有把cuda装好,痛苦流涕,随后,两次按照网上教程将系统崩溃了,只有重新来过,在然后,就直接看官方的issue,结果搞成功了,于是写出这篇文章,希望对大家有点帮助,欢迎转发,点赞等!

学习本文,需要有足够的毅力与动手能力,否则不要尝试,因为你会碰到各种问题,同时你也可以学到更多内容!学习指导是动起手来!

1.Caffe源码编译

1.0 NVIDIA与Anaconda3

关于NVIDIA显卡驱动与Anaconda3安装,见之前的一篇文章:Ubuntu18.04完美搭建Tensorflow-GPU1.8

1.1 GCC与G++降级

我使用的是Ubuntu18.04系统,该系统默认装的gcc为7.3,而cuda支持的版本是6.0以下,所以我们需要降级,这里选择的版本为gcc5.5。

安装gcc5:

代码语言:javascript
复制
sudo apt-get install gcc-5 g++-5

降级方法:

代码语言:javascript
复制
sudo mv gcc gcc.bak
sudo ln -s gcc-5 gcc
sudo mv g++ g++.bak
sudo ln -s g++-5 g++

测试版本:

代码语言:javascript
复制
gcc --version
g++ --version

输出显示5.5即可!

1.2 cuda 9.0

之前安装的cuda是通过xxx.run安装,并且没有安装补丁,所以先将原先的卸载,卸载方法:

代码语言:javascript
复制
sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

然后下载deb与补丁,如下图:

一定要全部下载并安装,不要只下载第一个,不然后面各种bug!

代码语言:javascript
复制
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb
sudo apt-get update

代码语言:javascript
复制
sudo apt install cuda

问题:

解决:

代码语言:javascript
复制
sudo apt install aptitude
sudo aptitude install cuda

代码语言:javascript
复制
sudo gedit ~/.bashrc
代码语言:javascript
复制
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:$LD_LIBRARY_PATHs
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/lib64"
代码语言:javascript
复制

生效:


source ~/.bashrc

1.3 cuDNN

https://developer.nvidia.com/rdp/cudnn-archive

选择下载最新版本cuDNN v7.4.1 for CUDN 9.0。

解压:

代码语言:javascript
复制
tar -zxvf xxx.tgz

解压后为一个cuda目录:cuda

终端输入:

代码语言:javascript
复制
sudo cp cuda/include/cudnn.h   /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

完成cuDNN配置!

终端输入:

代码语言:javascript
复制
nvcc -V

若显示如下信息:

则成功!

1.4 caffe-gpu源码编译

caffe-cuda安装:

代码语言:javascript
复制
sudo apt install caffe-cuda

依赖库安装:

代码语言:javascript
复制
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev
sudo apt-get install libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

clone源码:

代码语言:javascript
复制
git clone https://github.com/BVLC/caffe.git

配置文件:

代码语言:javascript
复制
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config

如下配置Makefile.config:

(1)CUDA配置

找到CUDA_ARCH,删除前两行(含compute_20的两行)!

(2)去掉注释:

代码语言:javascript
复制
USE_CUDNN:= 1 # CUDNN配置
OPENCV_VERSION := 3 # opencv版本
WITH_PYTHON_LAYER := 1 # python编写layer配置

(3)python配置

关闭默认的python2配置,也就是添加#号即可!

将python环境更换为anaconda3环境:

代码语言:javascript
复制
ANACONDA_HOME := $(HOME)/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
         $(ANACONDA_HOME)/include/python3.6m \
         $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include

修改lib目录,原PYTHON_LIB注释,打开anaconda的PYTHON_LIB,如下所示:

代码语言:javascript
复制
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

(4)修改

找到INCLUDE_DIRS与LIBRARY_DIRS修改为下面配置项:

代码语言:javascript
复制
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

如下配置Makefile:

首先打开该配置文件:

代码语言:javascript
复制
sudo vim Makefile

(1)修改python版本

代码语言:javascript
复制
PYTHON_LIBRARIES ?= boost_python python2.7
修改为:
PYTHON_LIBRARIES ?= boost_python-py36 python3.6m

(2)修改NVCCFLAGS

代码语言:javascript
复制
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
修改为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(3)修改LIBRARIES

代码语言:javascript
复制
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

1.5 python库安装

  • 进入python文件夹
代码语言:javascript
复制
pip install --upgrade python-dateutil
for req in $(cat requirements.txt); do pip install $req; done
  • 问题
  • 解决

修改requirement.txt

代码语言:javascript
复制
sudo vim requirement

1.6 编译

进入caffe根目录:

代码语言:javascript
复制
sudo make clean
sudo make all -j16     

-j16表示使用16核处理器执行当前指令。

test:

代码语言:javascript
复制
sudo make test -j16    

runtest:

代码语言:javascript
复制
sudo make runtest -j16 

配置pycaffe:

代码语言:javascript
复制
sudo make pycaffe -j16         //配置pycaffe

1.7 环境变量

环境变量配置:

代码语言:javascript
复制
vim ~/.bashrc

尾部添加:

这里填写你的caffe下面的python目录

代码语言:javascript
复制
export PYTHONPATH=~/caffe/python:$PYTHONPATH

使环境变量生效:

代码语言:javascript
复制
source ~/.bashrc

1.8 导包测试

输入python进入python环境,然后继续输入

代码语言:javascript
复制
import caffe

报错:

解决:

解决方法,可通过输入:

代码语言:javascript
复制
pip install --upgrade python-dateutil

2.caffe-cifar10测试

在上述源码编译caffe后,对数据集cifar10做测试。

2.1 获取数据集

进入caffe根目录,直接运行下面脚本:

代码语言:javascript
复制
./data/cifar10/get_cifar10.sh

该脚本下载数据集比较慢,可以通过其他方式下载数据集后,直接解压数据集到cifar10文件夹下即可!注:解压是将文件夹下所有文件复制到cifar10目录下!通过这样操作可以不用执行这个脚本,当然也就是这个脚本的作用!

2.2 转换数据集格式

代码语言:javascript
复制
./examples/cifar10/create_cifar10.sh

运行后报错:Cannot create Cublas handle. Cublas won't be available.

解决:

代码语言:javascript
复制
sudo rm -rf ~/.nv/

2.3 训练及测试

代码语言:javascript
复制
./examples/cifar10/train_quick.sh

最后,在测试集上的精度为75%左右!

3.Caffe-C3D

3.1 下载及配置

下载:

代码语言:javascript
复制
git clone https://github.com/facebook/C3D.git

配置:

还是将Makefile.config.example复制为Makefile.config,并配置Makefile.configMakefile!

代码语言:javascript
复制
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config

(1)配置Makefile.config

代码语言:javascript
复制
# CUDA_ARCH修改(去掉前两行)
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode=arch=compute_50,code=sm_50 \
        #-gencode=arch=compute_50,code=compute_50
# opencv配置
OPENCV_VERSION := 3
# open for OpenBlas
BLAS := open
# anaconda环境修改
ANACONDA_HOME := $(HOME)/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
         $(ANACONDA_HOME)/include/python3.6m \
         $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
PYTHON_LIB := $(ANACONDA_HOME)/lib

# INCLUDE与LIBRARY修改
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

(2)Makefile

代码语言:javascript
复制
PYTHON_LIBRARIES ?= boost_python-py36 python3.6m

3.2 安装库与编译

库安装:

代码语言:javascript
复制
cd python/
pip install -r requirements.txt

编译:

代码语言:javascript
复制
sudo make clean
sudo make -j8

4.C3D-cifar10测试

4.1 获取数据集

进入数据集目录:

代码语言:javascript
复制
cd 你的C3D路径/C3D-V1.0/data/cifar10/

运行脚本:

代码语言:javascript
复制
./get_cifar10.sh

这个下载数据集比较慢,具体可以参考上面的方法手动来!

4.2 转换数据集格式

进入脚本目录:

代码语言:javascript
复制
cd 你的C3D路径/C3D-V1.0/examples/cifar10/

运行脚本:

代码语言:javascript
复制
./create_cifar10.sh

报错:

解决:

(1)编辑bashrc

代码语言:javascript
复制
sudo vim ~/.bashrc

(2)尾部添加:

代码语言:javascript
复制
export LD_LIBRARY_PATH="/usr/local/cuda/lib64"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/light/anaconda3/lib"

(3)生效:

代码语言:javascript
复制
source ~/.bashrc

重新运行:

4.3 训练及测试

代码语言:javascript
复制
./train_quick.sh
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漫漫长路之Caffe-C3D
    • 0.导语
      • 1.Caffe源码编译
        • 1.0 NVIDIA与Anaconda3
        • 1.1 GCC与G++降级
        • 1.2 cuda 9.0
        • 1.3 cuDNN
        • 1.4 caffe-gpu源码编译
        • 1.5 python库安装
        • 1.6 编译
        • 1.7 环境变量
        • 1.8 导包测试
      • 2.caffe-cifar10测试
        • 2.1 获取数据集
        • 2.2 转换数据集格式
        • 2.3 训练及测试
      • 3.Caffe-C3D
        • 3.1 下载及配置
        • 3.2 安装库与编译
      • 4.C3D-cifar10测试
        • 4.1 获取数据集
        • 4.2 转换数据集格式
        • 4.3 训练及测试
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档