Sparselet Models for Efficient Multiclass Object Detection对应源码配置
2015-04-16 13:24
330 查看
论文Sparselet Models for Efficient Multiclass Object Detection的源码环境配置
声明:论文对应源码的运行环境为Linux,本文的配置是在Linux下,中文运行环境应该也行,还有待研究试验。
论文对应的源码下载地址为:https://github.com/rksltnl/sparselet-release1
除此之外,还需要下载INRIA的spams-matlab,下载地址为:http://spams-devel.gforge.inria.fr/downloads.html
选择V2.3的Matlab版本,高级版本我试的时候用不了,其下载地址为:http://spams-devel.gforge.inria.fr/hitcounter2.php?file=32609/spams-matlab-v2.3-svn2013-06-20.tar.gz,还需要下载安装的有Intel的编译器,我已经下载了一个月的试用版,下载地址为:http://pan.baidu.com/s/1jGEbLqA,2013年的,其对应的Matlab版本需要是2014年的
环境配置:
1、将解压后的源码和spams-matlab文件放到同一个目录下,打开Matlab,进入到spams-matlab目录,运行compile命令,无错误的编译完成
2、解压Intel的编译器,安装,安装过程很简单,顺序执行即可,在Intel的编译器安装完成之后,需要配置运行环境变量,在当前用户目录下打开.bashrc,即在~/目录下打开.bashrc文件,加入
source /opt/intel/composerxe/bin/compilervars.sh intel64
语句,source 目录 intel64中间的目录需要根据intel编译器安装目录调节,主要是找bin目录下的compilervars.sh文件,否则按照源码中的readme文件过程中运行python语句会有错误,配置后重新打开shell,
输入export命令,发现LD_LIBRARY_PATH,如图,就成功了,否则,可能需要重启系统
3、修改源码下的sparselets文件夹下的compile_blas_singleTH.py文件,修改
修改link_string语句,将其中的libmkl_intel_lp64.a,libmkl_sequential.a,libmkl_core.a前的目录都改为自己的对应目录,本文的系统都指64位系统,32位系统可能需要对应的修改,自己试一下
对于matrix_sparse_ATB_csc_parsed_float.cc也需要进行修改,因为其中的mkl_scscmm函数与intel2013版的MKL库中的函数写法不一致,这是版本问题,将
将
4、进入到源码目录,运行compile,在运行compile文件之前,需要将compile.m中
5、修改voc_config.m文件,将BASE_DIR改为自己的源码的目录
声明:论文对应源码的运行环境为Linux,本文的配置是在Linux下,中文运行环境应该也行,还有待研究试验。
论文对应的源码下载地址为:https://github.com/rksltnl/sparselet-release1
除此之外,还需要下载INRIA的spams-matlab,下载地址为:http://spams-devel.gforge.inria.fr/downloads.html
选择V2.3的Matlab版本,高级版本我试的时候用不了,其下载地址为:http://spams-devel.gforge.inria.fr/hitcounter2.php?file=32609/spams-matlab-v2.3-svn2013-06-20.tar.gz,还需要下载安装的有Intel的编译器,我已经下载了一个月的试用版,下载地址为:http://pan.baidu.com/s/1jGEbLqA,2013年的,其对应的Matlab版本需要是2014年的
环境配置:
1、将解压后的源码和spams-matlab文件放到同一个目录下,打开Matlab,进入到spams-matlab目录,运行compile命令,无错误的编译完成
2、解压Intel的编译器,安装,安装过程很简单,顺序执行即可,在Intel的编译器安装完成之后,需要配置运行环境变量,在当前用户目录下打开.bashrc,即在~/目录下打开.bashrc文件,加入
source /opt/intel/composerxe/bin/compilervars.sh intel64
语句,source 目录 intel64中间的目录需要根据intel编译器安装目录调节,主要是找bin目录下的compilervars.sh文件,否则按照源码中的readme文件过程中运行python语句会有错误,配置后重新打开shell,
输入export命令,发现LD_LIBRARY_PATH,如图,就成功了,否则,可能需要重启系统
3、修改源码下的sparselets文件夹下的compile_blas_singleTH.py文件,修改
<span style="font-size:18px;"><span style="font-size:18px;">mex_filename = filename + '_singleTH.' + "mexa64"</span></span>为:
<span style="font-size:18px;"><span style="font-size:18px;">mex_filename = filename + "<span style="font-family:Helvetica,Tahoma,Arial,sans-serif;">.</span>mexa64"</span></span>修改
<span style="font-size:18px;"><span style="font-size:18px;">matlab_path = "/Applications/MATLAB_R2011b.app" mkl_path = "/Users/song/Documents/Workspace/intel64"<span style="font-family:Helvetica,Tahoma,Arial,sans-serif;"> </span></span></span>将这两个目录修改为自己的安装目录,例如我的是
<span style="font-size:18px;"><span style="font-size:18px;">matlab_path = "/usr/local/MATLAB/R2014b" mkl_path = "/opt/intel/composer_xe_2013/mkl"</span></span>matlab_path是你的Matlab安装之后的目录,mkl_path是Intel编译器安装后的mkl的目录,我们主要是使用intel的MKL库
修改link_string语句,将其中的libmkl_intel_lp64.a,libmkl_sequential.a,libmkl_core.a前的目录都改为自己的对应目录,本文的系统都指64位系统,32位系统可能需要对应的修改,自己试一下
<span style="font-size:18px;"><span style="font-size:18px;">link_string = "g++ -O -pthread -shared -o " + "\"" + mex_filename + "\" " + \ obj_filename + " /Users/song/Documents/Workspace/intel64/libmkl_intel_lp64.a"+\ " /Users/song/Documents/Workspace/intel64/libmkl_sequential.a /Users/song/Documents/Workspace/intel64/libmkl_core.a"+\ " -lpthread"+\ " -L/Applications/MATLAB_R2011b.app/bin/maci64 -lmx -lmex -lmat -lm -lgomp" </span></span>修改后的我自己的是:
<span style="font-size:18px;"><span style="font-size:18px;">link_string = "g++ -O -pthread -shared -o " + "\"" + mex_filename + "\" " + \ obj_filename + " /opt/intel/composer_xe_2013.5.192/mkl/lib/intel64/libmkl_intel_lp64.a"+\ " /opt/intel/composer_xe_2013.5.192/mkl/lib/intel64/libmkl_sequential.a"+\ " /opt/intel/composer_xe_2013.5.192/mkl/lib/intel64/libmkl_core.a"+\ " -lpthread"+\ " -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm -lgomp" </span></span>
对于matrix_sparse_ATB_csc_parsed_float.cc也需要进行修改,因为其中的mkl_scscmm函数与intel2013版的MKL库中的函数写法不一致,这是版本问题,将
<span style="font-size:18px;">extern "C"{ void mkl_scscmm_(char* chn, ptrdiff_t* m, ptrdiff_t* n, ptrdiff_t* k, \ float* alpha, char* matdescra, float* val, int* indx, \ int* pntrb, int* pntre, \ float* b, ptrdiff_t* ldb, float* beta, float* c, ptrdiff_t* ldc); };</span>改为
<span style="font-size:18px;">extern "C"{ void mkl_scscmm(char *transa, MKL_INT *m, MKL_INT *n, MKL_INT *k, float *alpha, \ char *matdescra, float *val, MKL_INT *indx, MKL_INT *pntrb, \ MKL_INT *pntre, float *b, MKL_INT *ldb, float *beta, float *c, MKL_INT *ldc); };</span>将
<span style="font-size:18px;"> ptrdiff_t m = (ptrdiff_t)A_dims[0]; ptrdiff_t k = (ptrdiff_t)A_dims[1]; ptrdiff_t n = (ptrdiff_t)mxGetM(prhs[4]);</span>改为
<span style="font-size:18px;">int m = (ptrdiff_t)A_dims[0]; int k = (ptrdiff_t)A_dims[1]; int n = (ptrdiff_t)mxGetM(prhs[4]);</span>在#include下加上
<span style="font-size:18px;">#ifndef MKL_INT #define MKL_INT int #endif</span>
将
mkl_scscmm_(chn, &m, &n, &k, &one, matdescra, A_val, ja, &ia[0], &ia[1], \ B, &n, &zero, C_out, &n);改为
mkl_scscmm(chn, &m, &n, &k, &one, matdescra, A_val, ja, &ia[0], &ia[1], \ B, &n, &zero, C_out, &n);完成后,在shell下进入sparselets目录输入命令:
<span style="font-size:18px;"><span style="font-size:18px;">进入到的目录:ltc@ltcpc:~/sparselets/sparselet-release1-master/sparselets$ <span style="font-family:Helvetica,Tahoma,Arial,sans-serif;">命令:</span> python compile_blas_singleTH.py matrix_sparse_ATB_csc_parsed_float.cc </span></span>运行后没报错误,有warning没事,linux系统中需要安装了python,成功后可在sparselets目录下看到matrix_sparse_ATB_csc_parsed_float.mexa64文件
4、进入到源码目录,运行compile,在运行compile文件之前,需要将compile.m中
<span style="font-size:18px;"><span style="font-size:18px;"> eval([mexcmd ' gdetect/fconv_sse_single_thread.cc -o fconv']); eval([mexcmd ' gdetect/fconv_var_dim.cc -o fconv_var_dim']);</span></span>改为
<span style="font-size:18px;"><span style="font-size:18px;"> eval([mexcmd ' gdetect/fconv_sse_single_thread.cc -output fconv']); eval([mexcmd ' gdetect/fconv_var_dim.cc -output fconv_var_dim']);<span style="font-family:Helvetica,Tahoma,Arial,sans-serif;"> </span></span></span>主要是将-o改为-output,将
<span style="font-size:18px;"><span style="font-size:18px;"> eval([mexcmd ' gdetect/post_pad_floatin_doubleout.cc']);</span></span>改为
<span style="font-size:18px;"><span style="font-size:18px;"> eval([mexcmd ' gdetect/post_pad.cc']);</span></span>运行compile,无报错
5、修改voc_config.m文件,将BASE_DIR改为自己的源码的目录
<span style="font-size:18px;"><span style="font-size:18px;">BASE_DIR = '/home/ltc/sparselets/sparselet-release1-master';</span></span>6、运行demo_detection之前,先运行startup,然后再运行demo_detection,运行无报错,运行成功。
相关文章推荐
- 3D Object Proposals for Accurate Object Class Detection
- 论文翻译:Multi-View 3D Object Detection Network for Autonomous Driving
- (论文分析) Object Detection -- Class-Specific Hough Forests for Object Detection
- 【论文学习笔记】Class-Specific Hough Forests For Object Detection
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
- OpenCV Latent SVM Discriminatively Trained Part Based Models for Object Detection
- Multi-View 3D Object Detection Network for Autonomous Driving
- [论文笔记]Multi-Channel CNN-based Object Detection for Enhanced Situation Awareness
- DeepID-Net:multi-stage and deformable deep CNNs for object detection
- OpenCV Latent SVM Discriminatively Trained Part Based Models for Object Detection
- [论文解读]Multi-View 3D Object Detection Network for Autonomous Driving
- Deep Saliency:Multi_Task Deep Neural Network Model for Salient object detection
- Histograms of Sparse Codes for Object Detection
- Class-Specific Hough Forests for Object Detection
- [论文解读] 3DOP: 3D Object Proposals using Stereo Imagery for Accurate Object Class Detection
- 【Paper】DeepSaliency: Multi-Task Deep NeuralNetwork Model for Salient Object Detection
- DeepID-Net:multi-stage and deformable deep convolutional neural network for object detection
- 论文笔记:Sparse Matrix Format Selection with Multiclass SVM for SpMV on GPU
- hough forest----Class-Specific Hough Forests for Object Detection
- FPN Feature Pyramid Network for Object Detection