上面这幅图就是使用SharpMask处理后的图片,宣告为期一天的安装过程顺利结束。只不过用来识别的组件还未成功,但是已经算是进展神速,所以这里先记录这两个组件的安装过程。
[title]什么是DeepMask和SharpMask[/title]
DeepMask和SharpMask是Facebook公司开源的,基于深度学习算法实现的图像处理软件,可以用来将图片中的物体标注出来,并给出一定的概率说明该标注包含一个物体的可能性,然后配合Facebook开源的另外一个软件叫做MultiPathNet来识别这个物体。
[title]开发语言是什么[/title]
DeepMask的开发语言是Lua,这是一种较新的脚本语言,主要用来做数据处理等。DeepMask用到了Torch7这个框架,这个框架是一个Lua的编程框架。同时还用到了很多的其他的基于Lua的深度学习和神经网络的包。
Lua这个语言很好用,至少安装起来很简单,因为它把所有的相关的包都放在所谓的Rocks,一个包就是一个Rock。每个Rock中都有一个配置文件,只需要用一行代码执行一下这个文件,即可安装相应的包。
[title]准备过程[/title]
程序的执行需要的环境为:
Linux操作系统,这里我使用的是CentOS7,因为Torch7默认支持CentOS7.
GPU。这里我用了Nvidia的一块显卡,要求NVIDIA GPU with compute capability 3.5+,只要能满足这个需求的显卡应该都可以。
Torch7及相应的包,主要包括:COCO API, image, tds, cjson, nnx, optim, inn, cutorch, cunn, cudnn,看着挺多的,其实安装起来还是很简单的。
Cuda。这是GPU运算的编程框架。我使用的是Cuda8.还有基于Cuda的深度学习开发包CuDNN。
Git环境。几乎所有的代码都在github,所以有一个github的帐号也是先决条件之一。
[title]操作系统安装[/title]
我安装的是CentOS7的Minimal版本,这个版本没有多余的组件,比较轻,速度也快,安装起来很简单,不再赘述。
[title]Git环境[/title]
安装git:
yum install git
因为我们需要大量的从github下载程序,所以可以使用SSH的方式与github交互。
执行下面的命令生成SSH密钥:
ssh-keygen -C 'your@email.address' -t rsa
把其中的邮箱地址换成你注册github的邮箱地址。
此时会让你输入密钥地址,不用管,默认即可。默认地址是在你的根目录下.ssh文件夹中。然后它会让你输入一个密码。
该文件夹下将生成三个文件,其中一个是id_rsa.pub,找打它并打开,将其中的内容复制出来。
cat ~/.ssh/id_rsa.pub
然后,来到github,你的帐号的setting页面,点击SSH and GPG keys,点击New SSH key,将刚才输出的内容粘帖进去即可。
此时就可以访问github进行clone了,clone时需要输入刚才生成密钥时的密码。
[title]安装Cuda8[/title]
Cuda的安装文件到Cuda Download进行下载。
立即下载本来我是采用rpm安装,可是别管是Local还是Network都不成功,Network下载到最后出错,Local文件直接下载不下来。Network的下载错误信息是:
Downloading packages: cuda-visual-tools-8-0-8.0.61-1 FAILED =========================================================-] 1.3 MB/s | 273 MB 00:00:00 ETA http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-visual-tools-8-0-8.0.61-1.x86_64.rpm: [Errno -1] Package does not match intended download. Suggestion: run yum --enablerepo=cuda clean metadata Trying other mirror. Error downloading packages: cuda-visual-tools-8-0-8.0.61-1.x86_64: [Errno 256] No more mirrors to try.
所以只能改用sh的安装方式。
sh cuda_8.0.61_375.26_linux.run
接下来会问你几个问题,都很简单,比如说安装目录啊,是否接受协议啊等等。这里要注意一点,在这个包里面是自带Nvidia的驱动的,因此之前不需要安装Nvidia的驱动,如果安装了,需要卸载掉,否则有可能版本冲突。
接下来安装CuDNN。我本来想下最新版,但是总是下不下来,下载页面会报错,不明白啥原因。官方下载地址在这里。
立即下载因为我下不下来,所以只能去网上找一个,还真让我找到了,这个版本是:cudnn-8.0-linux-x64-v5.1。我放在了百度云上。
[ypbtn]http://pan.baidu.com/s/1hrRSynM[/ypbtn]
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
只需要解压缩,然后将路径加入环境变量即可:
vi /etc/profile
export CUDNN_PATH = "/path/to/cuda/lib64/libcudnn.so.5"
source /etc/profile
[title]Torch7安装[/title]
先安装开发工具包:
yum update
yum groupinstall Development Tools
注意,在CentOS7中,安装软件组的时候不加引号,如果使用CentOS7之前的版本命令:
yum groupinstall "Development Tools"
则会报错:
Error: No packages in any requested group available to install or update
接下来git一下torch7:
mkdir /home/yongquan/torch
git clone https://github.com/torch/distro.git /home/yongquan/torch --recursive
进入目录安装依赖:
cd /home/yongquan/torch
bash install-deps
如果前面都执行成功了,这里应该不会报错。
然后执行安装脚本:
./install.sh
一般来说也不会报错。
这样,Torch7就安装成功了。
[title]安装依赖[/title]
所需要的包主要是:COCO API, image, tds, cjson, nnx, optim, inn, cutorch, cunn, cudnn。
接下来一个一个安装:
git clone https://github.com/pdollar/coco.git
进入coco目录,执行:
luarocks make LuaAPI/rocks/coco-scm-1.rockspec
注意rockspec这个文件,这个就是rock的描述文件,所有的安装都是使用这个文件,再举一个例子:
cjson的安装方法:
git clone https://github.com/clementfarabet/lua---json.git
cd lua---json/
luarocks install json-1.0-0.rockspec
如果有些包,是有多个rockspec文件的,安装那个不带版本号的,比如:
cutorch的安装:
git clone https://github.com/torch/cutorch.git
cd cutorch/
luarocks install rocks/cutorch-scm-1.rockspec
当然,luarocks远比这个要强大,有些包,就在luarocks的目录中,不需要git项目即可安装,比如:
luarocks install image
luarocks install tds
所以在安装时,先看看luarocks默认包里面有没有,没有的,再去git上clone,然后找到rockspec文件进行安装,其他包的安装方法都一样,不再赘述了。
[title]安装DeepMask和SharpMask[/title]
其实DeepMask和SharpMask是一个project,地址是:https://github.com/facebookresearch/deepmask。
安装方法很简单:
git clone git@github.com:facebookresearch/deepmask.git DEEPMASK
其中 DEEPMASK是你自己定义的deepmask的目录。
mkdir -p DEEPMASK/pretrained/deepmask; cdDEEPMASK/pretrained/deepmask
wget https://s3.amazonaws.com/deepmask/models/deepmask/model.t7
mkdir -p DEEPMASK/pretrained/sharpmask; cdDEEPMASK/pretrained/sharpmask
wget https://s3.amazonaws.com/deepmask/models/sharpmask/model.t7
其中下载的时候,因为网络的原因有可能不顺利,可以使用迅雷等工具下载完成后拷贝过去也可以。
上述完成后,就可以运行了。
cd DEEPMASK
th computeProposals.luaDEEPMASK/pretrained/sharpmask -img /path/to/image.jpg
但是它默认的是将结果输出到根目录下一个res.jpg文件,并且会覆盖,太不人性化了,于是我将computeProposals.lua文件进行了修改,将其89行:
image.save(string.format('./res.jpg',config.model),res)
修改为:
image.save(string.format(table.concat({string.sub(config.img,0,string.len(config.img)-4),'_res.jpg'}),config.model),res)
意思是将文件写入到原文件目录并且加上_res作为区分。
最终的效果是:
[title]结语[/title]
DeepMask和SharpMask的结果还是不错的,安装过程也还算简单,只是各种依赖有点烦人,不过慢慢了解了也还好。
希望本文对想要安装该软件的朋友有所帮助。
深度学习是热门,对我来说有点遥远 :surprised: