Mac OSX虚拟机下跑通py-faster-rcnn(CPU)
假期在学校跟着导师做项目,脑子一热想来在自己的电脑上跑深度学习的代码,于是开启了将近半个月的煎熬,真有点怀疑人生了…于是想来还是写一篇博客来纪念一下吧,既是对自己工作的总结,兴许还能帮上别人呢,哈哈
- 前(fei)言(hua)
- Mac安装虚拟机
- Ubuntu下安装caffe
- Ubuntu下跑通py-faster-rcnn
—————————
前言
这是我电脑的配置:
首先我要讲讲为什么不在OSX操作系统上跑代码,因为真心跑不起来,随着Mac版本的更新,好多函数库,依赖什么的与以前的有很大不同,我亲自尝试了网上的很多种方法,总是行不通,配到凌晨三四点,简直要怀疑人生了,主要问题大概总结一下,等以后有时间了在慢慢解决,首先安装opencv,homebrew/science已经被移到homebrew/core/opencv,再者Mac没有Linux的apt-get,不过brew也可以替代,而为Mac安装pip也比较费劲,然后由于C11版本的问题,我在编译的过程中会出现各种各样的错误,主要集中在protobuf上,也许是我路径没有设置好等等,于是我决定安装Ubuntu,考虑到笔记本已经安装了win10,所以我决定在移动硬盘上安装Ubuntu,于是又是各种百度各种博客,镜像啊,启动U盘啊什么都安排上了,又卡在了install上,开机直接进入guib命令行,查询/boot/guib无果,看来是要重新install了,很难受,在同学的建议下,我决定用虚拟机来解决这些问题。 因为这学期操作系统课之前在win10上装过VW,用了一学期的redhat实验一些shall,bash通道,进程,线程什么的乱七八糟的东西,所以多多少少有点基础,不过说实话win10的VM对于我来说体验不是很好,vwtools就是安装不好,分辨率不能调,鼠标切换也挺麻烦的。 OK,说了这么多,开始进入正题。
Mac安装虚拟机
在这里强烈推荐Parallels Desktop,为什么呢,因为它贵,啊不,因为它方便啊。
强调一点,macOS Sierra (10.12)以及之后版本在“安全性与隐私”中不再有“任何来源”选项,因此你需要打开terminal,输入
sudo spctl --master-disable
即可安装来自身(盗)份(版)不(免)明(费)的开发者的app了。
1.安装虚拟机
具体的安装Parallels Desktop过程这里不在赘述,笔者这里给出以下参考,按照里面的步骤安装即可。
https://blog.csdn.net/weixin_41000111/article/details/79428402
2.下载Ubuntu镜像
这里笔者采用的是Ubuntu16.04.4版本,根据自己电脑情况下载对应镜像
64位:ubuntu-16.04.4-desktop-amd64.iso
32位: ubuntu-16.04.4-desktop-i386.iso
这里笔者给出下载链接,以供参考:
http://releases.ubuntu.com/16.04.4/
安装即可
下面给出笔者对虚拟机的配置,仅供参考
注:网络问题,笔者在Mac下链接Wi-Fi,按照如上图配置,虚拟机即可共享网络,不过Ubuntu自带浏览器速度慢,笔者最开始还以为无法联网,直到发现git还可以使用
内存的话最好是分配自己电脑一半内存,笔者这里分配8G,Ubuntu运行流畅
Ubuntu下安装caffe及依赖
打开Ubuntu的terminal
安装Caffe所有依赖包
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libboost-all-dev libatlas-base-dev
sudo apt-get install python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
安装git
sudo apt-get install git
安装OpenCV
git clone https://github.com/jayrambhia/Install-OpenCV
cd ~/Ubuntu/2.4 #按照自己的安装路径cd到该位置
sudo chmod +x *.sh
cd ..
sudo ./dependencies.sh
sudo sh ./opencv2_4_10.sh #安装过程比较长,可能出现warning error 只要最后显示OpenCV 2.4.10 ready to be used 即安装成功
注:到此这部分往下步骤可以略过,因为py-faster-rcnn自带caffe,安装caffe是为了所有项目使用该深度学习框架
配置caffe
git clone https://github.com/bvlc/caffe.git
cd ~/caffe #根据自己的路径
cp Makefile.config.example Makefile.config
修改Makefile.config(CPU_ONLY)
CPU_ONLY :=1
#CUDA_DIR := /usr/local/cuda
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
# -gencode arch=compute_20,code=sm_21 \
# -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
PYTHON_LIB=/usr/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/i386-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
#TEST_GPUID := 0
编译
make all
make test
make runtest
make pycaffe
之后输入
cd ~/caffe/python #根据自己的安装位置
python
>>>import caffe
caffe安装成功
Ubuntu下跑通py-faster-rcnn
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
笔者这里考虑到pip的各种限制,于是采用apt-get的方式安装各种依赖,可行且高效
sudo apt-get install python-pip
apt-get install cython
apt-get install easydict
apt-get install python-opencv
修改 lib 的setup.py文件
#CUDA = locate_cuda()
#self.set_executable('compiler_so', CUDA['nvcc'])
#Extension('nms.gpu_nms',
#['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
#library_dirs=[CUDA['lib64']],
#libraries=['cudart'],
#language='c++',
#runtime_library_dirs=[CUDA['lib64']],
# this syntax is specific to this build system
# we're only going to use certain compiler args with nvcc and not with
# gcc the implementation of this trick is in customize_compiler() below
#extra_compile_args={'gcc': ["-Wno-unused-function"],
# 'nvcc': ['-arch=sm_35',
# '--ptxas-options=-v',
# '-c',
# '--compiler-options',
# "'-fPIC'"]},
#include_dirs = [numpy_include, CUDA['include']]
#),
编译
cd ~/py-faster-rcnn/lib/
make
编译caffe-fast-rcnn
cd ~/py-faster-rcnn/caffe-fast-rcnn
cp Makefile.config.example Makefile.config
修改Makefile.config(CPU_ONLY)
CPU_ONLY :=1
#CUDA_DIR := /usr/local/cuda
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
# -gencode arch=compute_20,code=sm_21 \
# -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
PYTHON_LIB=/usr/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/i386-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
#TEST_GPUID := 0
修改CMakeLists.txt
caffe_option(CPU_ONLY "Build Caffe without CUDA support" ON)
编译
cd ~/py-faster-rcnn/caffe-fast-rcnn
make
make pycaffe
下载测试用的数据集
这里笔者考虑到下载的实际问题,可以使用百度云下载该训练好的模型
链接:https://pan.baidu.com/s/1Rtn-c7cKkcLpEUIShhH9TQ 密码:elnt
解压后将该文件夹放置于/data/scripts/即可
修改/py-faster-rcnn/lib/fast_rcnn/config.py
__C.USE_GPU_NMS = False
修改/py-faster-rcnn/tools/test_net.py和 /py-faster-rcnn/tools/train_net.py
caffe.set_mode_cpu()
修改/py-faster-rcnn/lib/fast_rcnn/nms_wrapper.py
def nms(dets, thresh, force_cpu=True):
#并且将第九行注释掉,不然会报错
最后一步 运行demo.py
cd ~/py-faster-rcnn
./tools/demo.py --cpu
因为cpu_only很慢,耐心等待,即可跑出结果
————
参考资源:
https://blog.csdn.net/qq_27664915/article/details/56673764
https://blog.csdn.net/xinfeng2005/article/details/77478886
https://blog.csdn.net/sinat_17196995/article/details/53410292
https://github.com/rbgirshick/py-faster-rcnn