• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab进行深度学习MatCovNe

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MatCovNet官网 http://www.vlfeat.org/matconvnet/

 

深度学习12:能力提升, 一步一步的介绍如何自己构建网络和训练,利用MatConvNet - CSDN博客
https://blog.csdn.net/qq_20259459/article/details/65633407

 

深度学习在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路径中去

 

  1.  
    cd matconvnet-master
  2.  
    addpath matlab

 

 

4、需要Compile MatConvNet。

 

 

vl_compilenn

 

 


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

 

比如,CompileCPU.m

 

  1.  
    % Compiling for CPU
  2.  
    addpath matlab
  3.  
    vl_compilenn

 

 

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

 

 

  1.  
    addpath matlab
  2.  
    vl_compilenn(\'enableGpu\', true,...
  3.  
    \'cudaRoot\', \'/Developer/NVIDIA/CUDA-6.5\', ...%自己安装的CUDA的路径
  4.  
    \'cudaMethod\', \'nvcc\', ...
  5.  
    \'enableCudnn\', true, ...
  6.  
    \'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已经训练好的模型对这张图片分类。

代码如下:

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

 

 

 

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

 

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

https://blog.csdn.net/sgfmby1994/article/details/70738883

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如果Delphi控件栏变空,什么都没有怎么办?发布时间:2022-07-18
下一篇:
Delphi中基本控件之SaveDialog控件的使用总结发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap