Deformable Part Model are Convolution Neural Network
可变形部件模型即卷积神经网络,大神rbg咋论文里,对这个观点进行了阐述,用cnn feature map
代替hog特征,进行latent svm的训练,从而将DPM扩展为cnn
在编译dp-dpm的caffe代码时,由于matlab的gcc版本较低,而linux系统是Ubuntu14.04, gcc4.8, 所以在运行的时候会出错,如下:
Invalid Mex File : caffe.mexa64 , sys/os/glnxa64/libgcc_s.so.1 GCC4.3 not found云云
解决方法如下:
将matlab下的libstdc++.so.6链接到系统用的那个库的文件去export LD_LIBRARY_PATH=/usr/local/MATLAB/R2013a/sys/os/glnxa64
export LD_PRELOAD=/lib/x86_64-linux-gnu/libgcc_s.so.1
有篇帖子对gcc进行了降级,此处并没有采用;
原方法帖子如下:
本节内容主要是实现,利用matlab调用caffe中的matlab接口,实现matlab环境下caffe 的使用
GCC降级
编译matlab
运行demo
(一)matlab支持gcc较低版本,而ubuntu14.04支持gcc4.8,所以要先将gcc降级
我的是matlab2013a,支持的是gcc4.4.x系列,所以我就安装gcc4.4,然后降级
1.安装gcc4.4
- sudo apt-get install -y gcc-4.4
- sudo apt-get install -y g++-4.4
2.降级
- cd /usr/bin
- sudo rm gcc
- sudo ln -s gcc-4.4 gcc
- sudo rm g++
- sudo ln -s g++-4.4 g++
3.验证版本
- gcc -v
(二)编译matlab
cd 到caffe目录下
- sudo make matcaffe
测试
- <span style="font-family:SimSun;font-size:18px;"><strong>make mattest</strong></span>
出现问题
出现问题的原因:编译caffe时候的库与编译matlab相关的库版本不一样
有一个会在matlab目录下/usr/local/MATLAB/R2013a/sys/os/glnxa64;另外一个在/usr/lib/x86_64-linux-gnu/libstdc++.so.6
解决措施:
1.(推荐)将matlab下的libstdc++.so.6链接到系统用的那个库的文件去
- export LD_LIBRARY_PATH=/usr/local/MATLAB/R2013a/sys/os/glnxa64
- export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
2.(不推荐)将matlab下的libstdc++.so.6 更改名称为libstd++.so.6_back(让matlab找不到这个,但是为了安全还是备份一下吧),这样在执行matlab编译的时候会自动去找系统用的库
执行测试
- make mattest
(三)caffe中提供了matlab的demo
An ILSVRC image classification demo is in caffe/matlab/demo/classification_demo.m (you need to download BVLC CaffeNet from Model Zoo to run it).
打开matlab,切换目录到caffe-master/matlab/demo目录下,拷贝cat.jpg到此目录下
运行classification_demo.m,得到1000*1的输出 因为imagnet一共1000类,输出的1000维就是每一类的输出,最大值就是对应的类别
- <span style="font-family:SimSun;font-size:18px;">run('classification_demo.m')</span>