caffe随记(十)---DeepLabV2安装过程

1.下载DeepLabV2的code

https://bitbucket.org/aquariusjay/deeplab-public-ver2,

这个网址是作者提供的官方页面

进入这个页面之后点击download,然后进入下载页面

下载之后就是这个压缩包

2.下载pretrained model

这个也就在刚刚那个页面就有,点击here进入models的界面,这里面有很多,我选用的是最下面的:

VGG16model,点击进入下载页面,下载之后得:

打开看一下里面的内容

里面就是一些caffemodel和prototxt

这些prototxt你可以用写字板打开看一下熟悉一下里面写的是什么,

根据网页里面的描述应该是在PASCAL VOC 2012的数据上的caffemodel

3. 实验配置

不过好像前两个link现在都失效了,这里我分享一下:

由于我是用windows下载的,所以现在把我下载的东西都用linux的scp命令给copy到服务器上去。scp命令请自行百度,

然后我把aquariusjay…那个名字很长的文件夹顺便改了名字,就叫DeepLabV2

先来安装matio,进入到matio-1.5.2文件夹,(这个文件夹我就是放在我的根目录下的/home/Teeyo /matio-1.5.2)

$ cd matio-1.5.2

$ ./configure

$ make

$ make check

$ make install

我在make和make check的时候遇到了一个问题

就是说 autom4te:command not found, 然后解决方案是:安装autoconf这个包,由于我没有管理员权限,我就让我的师兄给我装了一下:

Dell是师兄的账号,然后给系统里装了autoconf这个包,这个问题就能解决到, make check就能通过

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

make check通过之后,我们继续输入make install,然后又报错:

意我红圈中的内容,告知我没有权限……那么我输入: ./configure --prefix=/home/Teeyo/matio 这句命令就是说我把安装的位置更改为我自己Teeyo的目录下,这样就不需要root权限了

我的这个命令就是让matio安装到Teeyo下matio这个文件夹中,

然后再makeinstall 就ok了,

这是我截取的部分内容,可以看到原来报错的位置,现在没有报错了,因为刚刚这里的文件安装的路径已经改到了/home/Teeyo/matio/lib里面去了

这时候我们再回到Teeyo目录下,发现多了一个matio文件夹,红圈所示:

这因为我刚刚把安装路径设置为这里,那么我们再进去看一下:

那么matio的安装至此就搞定了。

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

要注意的问题,我的matio是安装在  /home/Teeyo/DeepLabV2/matio 所以: 在DeepLabV2 的 Makefile.config 中的INCLUDE_DIRS 中添加 matio 的 src路径, 文件夹本身没有Makefile.config文件,所以就自己把那个example复制并更名 cp Makefile.config.example  ./Makefile.config 

vimMakefile.config

 LIBRARY_DIRS 中添加 引用和库(蓝色字体是我们这次要添加的,直接在原来的后面写就ok)

INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include  /home/Teeyo/ matio/include

LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib  /home/Teeyo/ matio/lib

要注意的第二个问题,环境变量的增加: vim ~/.bashrc  在最后一排打上我图里的这段话

------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

然后matio的编译和安装基本上就ok了,下面开始DeepLabV2的编译:

make clean

make  –j32  //这里的-j32是因为我的计算机支持32线程,一般的话写成-j8就行

make test –j32

make pycaffe

make pytest

在第一次make的时候,会报错:

/include/caffe/common.cuh(9):error: function "atomicAdd(double *, double)" has already beendefined

原因是CUDA 8.0 提供了对atomicAdd函数的定义,但atomicAdd在之前的CUDAtoolkit中并未出现,因此一些程序自定义了atomicAdd函数。

解决方法:打开./include/caffe/common.cuh文件,在atomicAdd前添加宏判断即可。     

#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600

#else

   static __inline__ __device__ doubleatomicAdd(double* address, double val)

   {

      ...

   }

#endif

这个问题就解决了

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

然后再看下面另一个问题:

这是忘了开opencv的开关了,就还是到Makefile.config里面去,打开开关:

(我用的是OPENCV3)

顺便把CUDNN的开关也打开

-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------

然后再来 make clean,再来make all,又出现以下问题:

然后回到DeepLabV2这个根目录下,

cd .build_release/src/caffe/util/  来这个文件夹看看

发现的确是没有找到math_functions.o这个东西,然后我查了很久初步判定是CUDNN兼容的问题

作者配置环境是cuDNN 4.0,但是5.0版本后的cuDNN接口有所变化,

我做了如下改变:

把我的DeepLabV2/include/caffe/util/cudnn.hpp用github上最新的caffe同样目录下的hpp替换了!

即是我去网上github的把 caffe-master/include/caffe/util/cudnn.hpp拿到我的DeepLabV2来替换了刚刚那个文件,然后make clean 然后make all:

当然因为问题还没有解决完,还是没有通过,但是这一次math_functions.o出现了!!!

如图,而在之前我这个里面是没有的,所以我刚刚的改动证明是有用的!!!

最终解决方案:

然后这次进行编译,就不会出现error了,只会出现一些warning,不影响后面的使用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

在.NET平台上运行Java程序-IKVM.NET入门

一、介绍 IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序。它包含了以下的组建: * 一个用.N...

1925
来自专栏开发与安全

linux系统编程之信号(一):信号基本概述

一、为了理解信号,先从我们最熟悉的场景说起: 1. 用户输入命令,在Shell下启动一个前台进程。 2. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断...

2398
来自专栏张善友的专栏

发布基于Orchard Core的友浩达科技官网

2018.9.25 日深圳市友浩达科技有限公司发布基于Orchard Core开发的官网 http://www.weyhd.com/。 本篇文章为你介绍如何基于...

3744
来自专栏me的随笔

.NET中使用NLog记录日志

以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂。下面小编就和大伙分享一下NLog的使用方式。

1144
来自专栏along的开发之旅

win下xamarin和64位Android Studio共存

下了xamarin的installer.exe,打开后提示安装32位jdk1.7,(-。-;),没办法,32位就32位吧,装就装吧。。。。。。。。很长很长时间后...

701
来自专栏CodingToDie

每日推荐

你的桌面还杂乱无章吗?你还在为苦苦搜寻一个文件而劳心费力吗?你还在桌面上建快捷方式吗? 有了它,以上都不是问题.

752
来自专栏ASP.NETCore

ASP.NET Core中如何调整HTTP请求大小的几种方式

一般的情况下,我们都无需调用HTTP请求的大小,只有在上传一些大文件,或者使用HTTP协议写入较大的值时(如调用WebService)才可能会调用HTTP最大请...

2464
来自专栏chafezhou

小说python中的孤儿进程

然而,在实际应用中,孤儿进程虽然不会给系统造成直接性的危害,但更多时候会对业务造成一些影响,如当子进程为一个基于tcp的socket服务时,会造成主进程再次启动...

1001
来自专栏张善友的专栏

使用Combres 库 ASP.NET 网站优化

网站优化理论方面可以看杨正祎同学的文章如何提高网页的效率(上篇)——提高网页效率的14条准则,如何提高网页的效率(下篇)——Use YSlow to know ...

1919
来自专栏张善友的专栏

在Macbook Air上用Boot Camp安装Windows 8

发布了Windows 8消费者预览版,将PC、移动端操作系统合二为一。作为Win8的公开测试版本,它重视平板操作体验、内置应用商店、云服务及社交分享无处不在等等...

2309

扫码关注云+社区