MatConvNet使用入门之基础篇
来源:互联网 发布:剑三成男脸型数据大全 编辑:程序博客网 时间:2024/04/29 10:31
深度学习在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-masteraddpath matlab
4、需要Compile MatConvNet。
vl_compilenn
当然,最好是写一个文件,执行3.4步。
比如,CompileCPU.m
% Compiling for CPUaddpath matlabvl_compilenn
如果想应用GPU计算,需要写成CompileGPU.m
addpath matlabvl_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_setupnnnet = 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。
- MatConvNet使用入门之基础篇
- MatConvNet使用入门之车牌数字字符识别
- 学习MatConvNet之路
- matconvnet 安装与使用
- Matconvnet 的安装以及使用
- matconvnet简介安装与使用
- MatConvNet基础—卷积,激活,池化层操作
- matconvnet中使用fastrcnn遇到的问题
- Eclipse基础入门之安装篇
- 精通系列之入门-基础篇3
- 精通系列之入门-基础篇2
- 精通系列之入门-基础篇
- 精通系列之入门-基础篇(1)
- 精通系列之入门-基础篇(2)
- 精通系列之入门-基础篇(3)
- 读书笔记之《C#入门经典》基础篇
- Javascript入门之基础语言篇
- php 基础入门篇之前言
- 平面上最近点对(计算几何,分治,KDtree)(AOJ 862)(待补)
- showand tell笔记
- DHT协议(官方版本)
- 简单网络管理协议SNMP
- python语言\xe6\x97\xa0\xe6\xb3\x95\xe5\x8a\xa0\xe8乱码字符转换
- MatConvNet使用入门之基础篇
- python--利用PyInstaller打包exe程序
- 4.25+Linux+C
- Memcache同时获取多个键的值
- Node.js 切近实战(八) 之Excel在线(文件权限)
- bzoj 3594 树状数组
- 【Oracle】排序与sort_area_size
- android常用命令
- hibernate学习笔记