读取cc.matlab建立mex,ubuntu16.04 cuda10.1+matlab2014b+opencv3.3.1+caffe

背景介绍:由于实验对比需求,要在titan rtx 24g对比DRRN和MemNet超分结果,然而令人头大的是这两个模型采用caffe框架【配置之复杂早有耳闻,一直不敢碰】不仅如此,测试还要编译matcaffe【一个头两个大...】现在没办法了,只能硬gan了。

本人比较愚笨,花了一天多的时间才配置好opencv3.。。。后来突然想起来还要编译matcaffe。。。看知乎有个教程讲matcaffe编译步骤采用opencv2.4.9,这里的意思感觉好像也不一定要用opencv3,所以再caffe的makefile.config中没有取消opencv_version := 3的注释,所幸结局还是好的,没有影响caffe安装和matcaffe的使用。

1. cuda10.1

cuda10.1安装参见这里

2. matlab2014b安装

2.1 到这里下载 【提取码: isqn】

2.2 随便找个教程即可安装

3. opencv3.3.1安装

安装依赖项

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

创建编译文件夹,进入

mkdir release

cd release

cmake配置编译

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

make编译

make -j$(nproc) #nproc是读取CPU的核心数量

安装

sudo make install

sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境

首先将OpenCV的库添加到路径,从而可以让系统找到

#方式一

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

#方式二

sudo gedit /etc/ld.so.conf.d/opencv.conf

#打开后可能是空文件,在文件内容最后添加

/usr/local/lib

#使路径生效

sudo ldconfig

配置bash

sudo gedit /etc/bash.bashrc

#在末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

#使其生效

source /etc/bash.bashrc

sudo updatedb

测试一下

【注意】安装过程极其坎坷,所遇bug不计其数,稍安勿躁,要相信自己没那么好运独得bug恩宠,耐心百度/谷歌/必应,总会找到解决方案

4. caffe及其接口安装

4.1 caffe安装

依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev 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

sudo apt-get install git cmake build-essential

git将仓库clone下来

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

进入caffe文件夹,将样例配置文件复制一份,并进行更改

cp Makefile.config.example Makefile.config

(1)使用cudnn

bcfd3a1f8929e7c65da14972585c8636.png

(2)修改python路径

74c42e409f3f507dd2af7ec4326035bb.png

(3)CUDA architecture setting,由于我装的cuda10.1,所以需要注释\删除 *_20, *_21

5a29b1eb795297e8aa3fc812029b17c4.png

(4)matlab路径

65728b1b780dde097f8bfe0eb6ec2a57.png

【我没有用opencv3,所以没有取消opencv_version=3的注释】

修改makefile文件

#将

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 opencv_imgcodecs

#将:

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

#修改为:

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

配置完成,接下来即可编译【短短的一行指令,鬼知道我中间经历了什么。。。】

make all -j32

成功,继续,测试

make test

make runtest -j32

9dfeb75ad88544adef2f85173aecdd7e.png

当你看到这个画面时,恭喜你,测试通过

距离python调用训练,matlab调用测试,emmm我算一下emmm,还有五万四千里,别灰心,继续gan

4.2 pycaffe编译

上面只是安装好了caffe,但是python下还是不能调用的,需要首先将其添加至环境变量:

# 在.bashrc文件添加如下指令

export PYTHONPATH=~/caffe/python:$PYTHONPATH

接下来即可编译pycaffe

make pycaffe -j32

成功后,直接 python,import caffe 可能还会遇到几个相似的error  ImportError: No module named xxx,这个直接

sudo apt-get install xxx #也可以其他安装方式,可以百度/必应/谷歌

接下来即可导入成功了

20928abd754deeb8173d75bbeab47ca8.png

可以用caffe训练一下mnist数据集看看【期间遇到了找不到bin文件的错误,解决方案见下方参考】

cd caffe #切换至caffe目录下

sh data/mnist/get_mnist.sh #获取dataset

sh examples/mnist/create_mnist.sh #生成caffe输入的lmdb格式

sh examples/mnist/train_lenet.sh #训练

修改examples/mnist/lenet_solver_prototxt可以更改训练配置,例如用gpu训练,测试精度可达99%以上

1854e42d5c2a737926d1be5f102881ec.png

可以用DRRN的caffe代码测试一下【drrn代码测试数据集路径好像有错误,需要改一下,少了一个点】

4.3 matcaffe编译安装

参考这里,编译之前需要搞定一下编译器版本问题

(1)

cd /usr/local/MATLAB/R2016b/sys/os/glnxa64 #

sudo mv libstdc++.so.6 libstdc++.so.6_back #重命名

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 libstdc++.so.6 #建立软链接

sudo ldconfig

(2)修改matlab编译mex文件所使用到的gcc/g++版本

matlab2014支持4.7,此处安装4.9

sudo apt-get install gcc-4.9 g++-4.9 gcc-4.9-multilib g++-4.9-multilib

由于没有理解原知乎修改方法,此处我自行百度,得知修改/usr/local/MATLAB/R2014b/bin/mexopts.sh

cd /usr/local/MATLAB/R2014b/bin

sudo gedit mexopts.sh

6d5c41e021aaa7cc67515897d4ad77f2.png

0261b2a7ec765514d3b99234b1df3a91.png

搞定完版本问题后,即可编译matcaffe【尽管还是会提醒说gcc版本问题,但是好像没报错,,,所以我没理会它】

make matcaffe -j32

设置opencv软连接【墙裂建议提前备份一下】

cd /usr/local/MATLAB/R2014b/bin/glnxa64

sudo rm libopencv_core.so.2.4

sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9 libopencv_core.so.2.4

sudo rm libopencv_highgui.so.2.4

sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9 libopencv_highgui.so.2.4

sudo rm libopencv_imgproc.so.2.4

sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9 libopencv_imgproc.so.2.4

接下来就可以编译测试了

make mattest -j32

大部分工作已经完成,就差matlab里调用caffe了,需要先将 /home/xxx/caffe/matlab添加至matlab路径【参考】

addpath /home/xxx/caffe/matlab #添加

savepath #保存

查看matlab文件路径,结果如下

50635a00217dbdb2b9d6be2e0ea55229.png

至此,所有工作完成,可以跑一下drrn的matlab测试代码了

6bb5470bcfad124ddc3fafc03dc56691.png

总结:

可喜可贺,可喜可贺,4天的辛苦总算没白费,caffe配置之旅真的是痛苦

安装过程参考链接

(1)cuda10.1 https://blog.csdn.net/He_9520/article/details/99714635

(2)matlab 忘记了,随便百度把

(3)opencv  https://blog.csdn.net/cocoaqin/article/details/78163171

https://blog.csdn.net/Ding_0110M/article/details/88083741

(4)caffe及pycaffe安装  https://blog.csdn.net/qq_33431368/article/details/84717053

(5)matcaffe编译及安装 https://zhuanlan.zhihu.com/p/35182697

所遇问题及参考链接

opencv部分

在ubuntu16.04下安装opencv3.4.5(超详细) https://blog.csdn.net/Ding_0110M/article/details/88083741

ubuntu16.04安装opencv3.4.1教程 https://blog.csdn.net/cocoaqin/article/details/78163171

Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法https://blog.csdn.net/Zafir_410/article/details/74357544

ubuntu16.04 安装opencv 步骤和错误解决 https://blog.csdn.net/weixin_41896508/article/details/80795239

ImportError: /lib/x86_64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by/home/xxx/anaconda3/lib/libpng16.so.16) https://stackoverflow.com/questions/48306849/lib-x86-64-linux-gnu-libz-so-1-version-zlib-1-2-9-not-found

caffe

nvcc fatal : Unsupported gpu architecture 'compute_20'  https://blog.csdn.net/kemgine/article/details/78781377

.build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用  https://blog.csdn.net/jessir/article/details/71195115

/usr/bin/ld: warning: libzstd.so.1.3.7, needed by //home/***/anaconda3/lib/libtiff.so.5, not found (try using -rpath or -rpath-link)

https://blog.csdn.net/akadiao/article/details/79834086

//home/xxx/anaconda3/lib/libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用  https://blog.csdn.net/w5688414/article/details/79482482

ImportError: /lib/x86_64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /home/xxx/anaconda3/lib/libpng16.so.16)  https://blog.csdn.net/makeitperfect/article/details/85036735

import skimage.io ImportError: No module named skimage.io(编译pycaffe报错)https://blog.csdn.net/lwgkzl/article/details/77658200

ImportError: No module named google.protobuf.internal https://blog.csdn.net/quantum7/article/details/83507364

【针对No module named ***类问题,由于我先前安装了anaconda3(装opencv时,其环境变量被注释掉了),导致部分依赖项可能时python3的,所以尽量不要用pip安装】

./examples/mnist/create_mnist.sh: 17: ./examples/mnist/create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found

问题很明显,找不到文件,原因有二:1)网上大多数说的,路径不对,需要进到caffe根目录才可以;2)然而有时候即使进入根目录也不行,很有可能就是压根bin文件就不存在【可能编译失败,或者make clean了】,需要重新编译

make clean

make all -j32

编译完成后,此时python,import caffe可能遇到下面问题

from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ ImportError: No module named _caffe https://blog.csdn.net/jiyangsb/article/details/77724876

即pycaffe没有编译,还需要编译之

make pycaffe -j32

matcaffe安装  https://zhuanlan.zhihu.com/p/35182697

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值