Sparselet Models for Efficient Multiclass Object Detection对应源码配置
来源:互联网 发布:独立域名商城 编辑:程序博客网 时间:2024/06/05 05:02
论文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文件,修改
<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,运行无报错,运行成功。
- Sparselet Models for Efficient Multiclass Object Detection对应源码配置
- OpenCV Latent SVM Discriminatively Trained Part Based Models for Object Detection
- OpenCV Latent SVM Discriminatively Trained Part Based Models for Object Detection
- Object Detection----- Discriminatively Trained Part Based Models
- hsc for object detection
- Regionlets for Generic Object Detection
- regionlets for generic object detection
- Hough Forests for Object Detection
- Selective Search for Object Detection
- DPM2010中文翻译-Object Detection with Discriminatively Trained Part Based Models
- How to train models of Object Detection with Discriminatively Trained Part Based Models
- 在windows下训练models of Object Detection with Discriminatively Trained Part Based Models
- models of Object Detection with Discriminatively Trained Part Based Models中star-cascade级联检测
- How to train models of Object Detection with Discriminatively Trained Part Based Models
- How to train models of Object Detection with Discriminatively Trained Part Based Models
- How to train models of Object Detection with Discriminatively Trained Part Based Models
- How to train models of Object Detection with Discriminatively Trained Part Based Models
- Histograms of Sparse Codes for Object Detection
- Python re 模块使用
- iOS开发网络篇—实现一个视频播放客户端小应用(一)
- Uncaught TypeError: groups[i].removeClass is not a function
- 第5周项目5-复数类模板
- 第六周 阅读程序 (4)
- Sparselet Models for Efficient Multiclass Object Detection对应源码配置
- readelf -h main(查看执行程序的头等信息)。
- 南阳 oj 147
- C#界面美化之美化单个界面2
- vagrant+virtualbox搭建开发环境
- jQuery的总结
- 2015年的9大企业级技术趋势:开源势在必行,读后感 http://sec.chinabyte.com/18/13162518.shtml
- 杭电2023求平均成绩
- 黑马程序员--多线程应用