MatConvNet使用入门之基础篇

深度学习在object tracking中的使用也越来越多,从去年的VOT结果来看,很多tracker都应用了convolution feature,整体效果都比之前的方法提高了一大截,所以学习deep learning需要提上日程了。看了HCF以及C-COT的源码,都运用到了matlab的深度学习工具---MatConvNet,所以关于它的使用了解了一番。

1、首先是下载,可以到http://www.vlfeat.org/matconvnet/去下载,不过C-COT的作者Martin大神的源码的说明文档readme中也提供了github的下载链接


2、通过执行  mex -setup 来设置matlab的C++编译器(VS2010 or  greater)


3、将MatConvNet的path加到matlab路径中去

cd matconvnet-master
addpath matlab


4、需要Compile MatConvNet。

vl_compilenn


当然,最好是写一个文件,执行3.4步。

比如,CompileCPU.m

% Compiling for CPU
addpath matlab
vl_compilenn

如果想应用GPU计算,需要写成CompileGPU.m

addpath matlab
vl_compilenn('enableGpu', true,... 
               'cudaRoot', '/Developer/NVIDIA/CUDA-6.5', ...%自己安装的CUDA的路径
               'cudaMethod', 'nvcc', ...
               'enableCudnn', true, ...
               'cudnnRoot', 'local/cudnn-rc2') ;
			   

这里需要注意,目前MatConvNet只支持英伟达的显卡,我看了一下我的台式机的显卡是intel的集成显卡,不能用,汗。所以,这里还是先介绍在CPU下进行处理的方式。


5、加载预训练的模型。

需要从官网下载一个network(也就是 a pre-trained CNN)

链接戳 http://www.vlfeat.org/matconvnet/pretrained/



6、setup MatConvNet。

run matlab/vl_setupnn


7、 load the pre-trained CNN。

net = load('D:\MenghanZhou\matlab_work\ToolsBoxes\networks\imagenet-vgg-m-2048.mat');

这里的net是一个预训练模型,是一个线性链组成的网络。它是一个结构体的形式:

其中,layers有21层(不同的预训练模型的卷积层数目不同)

      meta包含3个结构体

classes是已经训练好的模型对事物的1000种分类。



---------------------------我是分割线-----------------------------

来看一个例子,利用VGG已经训练好的模型对这张图片分类。


代码如下:

%将pepper.png这张图按照模型,根据得分确定最应该属于的类别
run matlab/vl_setupnn
net = load('D:\MenghanZhou\matlab_work\ToolsBoxes\networks\imagenet-vgg-m-2048.mat');
im = imread('peppers.png');
im_ = single(im);
im_ = imresize(im_,net.meta.normalization.imageSize(1:2));%缩放到224*224大小
im_ = im_ - net.meta.normalization.averageImage;%减去均值
res = vl_simplenn(net,im_);%res包含了计算结果,以及中间层的输出  最后一层可以用来分类
y = res(end).x;%最后一层
x = gather(res(end).x);
score = squeeze(gather(res(end).x));%分属于每个类别的分数
[bestScore, best] = max(score);
figure(1);
clf;
imshow(im);
title(sprintf('%s %d,%.3f',net.meta.classes.description{best},best,bestScore));%net.meta.classes.description里存放的是很多种类别的名称


这样,我们就可以得到下面的结果:

这说明,这张图片属于1000中类别中的pepper,而且属于这个类别的概率为0.979。




  • 12
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值