
matlab
feiyy404
选择往往比努力更重要。
展开
-
K-折交叉验证(k-fold crossValidation)以及在matlab中的实现
转载原文定义: 在机器学习中,将数据集A分为训练集B(training set)和测试集C(test set),在样本量不充足的情况下,为了充分利用数据集对算法效果进行测试,将数据集A随机分为k个包,每次将其中一个包作为测试集,剩下k-1个包作为训练集进行训练。[M,N]=size(data);//数据集为一个M*N的矩阵,其中每一行代表一个样本 indices=crossvalind('转载 2017-05-15 18:56:05 · 29943 阅读 · 18 评论 -
VGG Convolutional Neural Networks Practical(6)learning a tiny CNN
在这部分,我们将学习一个非常简单的CNN。 CNN完全由两层组成:卷积层和最大池层: 任务 打开文件tinycnn.m并检查代码。 说服你自己,代码计算刚刚描述的CNN。 看看代码中使用的paddings。 如果输入图像x1具有尺寸M×N,则输出特征图x3的尺寸是多少?function res = tinycnn(x, w, b, dzdy)% TINYCNN A very simple原创 2016-12-19 15:02:39 · 1436 阅读 · 0 评论 -
VGG Convolutional Neural Networks Practical(5)the theory of back-propagation
第2部分:反向传播和衍生 例如,这是如何查找卷积运算符:y = vl_nnconv(x,w,b) ; % forward mode (get output)p = randn(size(y), 'single') ; % projection tensor (arbitrary)[dx,dw,db] = vl_nnconv(x,w,b,p) ; % backward mode (get pro原创 2016-12-19 14:39:39 · 1688 阅读 · 2 评论 -
VGG Convolutional Neural Networks Practical(4)normalisation
另一个重要的CNN构建块是通道方式归一化。 该算子对输入映射x中每个空间位置处的特征通道的向量进行归一化。 标准化运算符的形式实际上是存疑的:任务:了解此运算符在做什么。 如何设置κ,α和β来实现简单的L平方归一化? 现在让我们试试:rho = 5 ;kappa = 0 ;alpha = 1 ;beta = 0.5 ;y_nrm = vl_nnnormalize(x, [rho kappa原创 2016-12-19 14:08:59 · 1116 阅读 · 0 评论 -
VGG Convolutional Neural Networks Practical(3)pooling
CNN中还有几个其他重要的操作。 其中一个是池化。 池化操作符对各个特征通道进行操作,通过应用合适的算子将附近的特征值合并为一个。 常见的选择包括max-pooling(使用max运算符)或sum-pooling(使用summation)。 例如,max-pooling定义为:最大池由vl_nnpool函数实现。 立即尝试:y = vl_nnpool(x, 15) ;figure(6) ; clf原创 2016-12-19 13:53:19 · 960 阅读 · 0 评论 -
VGG Convolutional Neural Networks Practical(1)convolution
VGG卷积神经网络实践卷积神经网络是可应用于许多计算机视觉问题的可学习表示的重要类别。 特别地,深CNN由多个处理层组成,每个处理层涉及线性和非线性算子,以端对端的方式联合地学习以解决特定任务。 这些方法现在是用于从视听和文本数据中提取特征的主要方法。这个实践探讨了学习(深度)CNN的基础。 第一部分介绍典型的CNN构造块,例如ReLU单元和线性滤波器,特别强调理解反向传播。 第二部分研究学习两个基原创 2016-12-19 13:29:16 · 1966 阅读 · 1 评论 -
VGG Convolutional Neural Networks Practical(2)non-linear activation functions
第1.2部分:非线性激活函数 如我们在介绍中所述,CNN是通过组成几个不同的功能获得的。 除了前面部分所示的线性滤波器之外,还有几个非线性算子。 问题:CNN中的某些功能必须是非线性的。 为什么?(还真回答不了这个问题······大家说说自己的理解呗,共同交流。)通过由非线性激活函数遵循线性滤波器来获得最简单的非线性,该非线性激活函数被相同地应用于特征图的每个分量(即逐点地)。 最简单的这种功能原创 2016-12-19 13:42:29 · 1279 阅读 · 0 评论 -
1-12
对一副图像进行采样之后,可以得到一副M行,N列的图像,我们称这幅图像的大小是M*N。x是从0到M-1的整数,y是从0到N-1的整数。图像处理工具箱中用(r,c)而不是(x,y)来表示行和列。其次,这个坐标系统的原点是在(r,c)=(1,1),r是从1到M的整数,c是从1到N的整数。同时,工具箱使用一种较少的坐标约定,称为空间坐标,以x表示列,以y表示行。图像(image)和像素(pixel)这两个术原创 2016-12-24 14:26:30 · 750 阅读 · 2 评论 -
MATLAB解密阅读笔记二
第四章 统计和matlab编程介绍我们通过bar命令产生柱状图,它就像plot一样工作,我们只需要调用bar(x,y)把x和y这两个数组传递给它。 用barh(a,b)命令来产生水平的柱状图。 可以用bar3或者是bar3h显示奇特的三维图像。通过mean()函数,我们可以知道一组数据的平均数是什么。 我们也可以给mean传递数组,那么matlab将告诉我们每一列的平均数。用disp命令在屏幕原创 2016-12-18 14:44:51 · 847 阅读 · 0 评论 -
MATLAB解密阅读笔记
最近要用matconvnet,发现很多matlab函数和小技巧已经忘记了,(当初为了应付而学,现在只好重新捡起来咯)找了一本比较简单的pdf过一遍,记录一些自己觉得有用的东西。第一章 matlab中运算的优先级与数学中的优先级一致。右除(/)优先于左除()。当我们做很多计算时,结果可能产生大量变量,可以通过在命令窗口输入who来刷新内存,告诉matlab显示目前为止的所有变量名称。 如果输入的是原创 2016-12-18 01:20:29 · 889 阅读 · 0 评论 -
在matlab中获得帮助
获得帮助的主要办法是使用matlab的帮助浏览器(Help Browser),通过单击桌面工具栏的上的问号(?),或者在命令窗口的提示符处键入dos来打开专用窗口。帮助浏览器由两个窗格组成:用于寻找信息的帮助导航窗格,和用于观察信息的显示窗格。在matlab会话打开之后,最好打开帮助浏览器,以便在代码开发或者执行其他Matlab任务时期间获得帮助。针对特定函数得到帮助的另一个方法是在命令提示符处键入原创 2016-12-24 11:53:21 · 1045 阅读 · 0 评论 -
VGG计算机视觉实践
The Oxford Visual Geomery Group Computer Vision Practicals 是基于MATLAB的实践经验的集合,介绍了图像理解中的基本概念(要求和安装说明)。 提供以下实用工具: 1.对象实例识别是在图像中匹配(识别)特定对象或场景的问题,例如由梵高的圣母大教堂或“繁星夜”。 挑战是对尺度,照相机视角,照明条件和部分遮挡的变化是不变的。 本实践包括以下主题翻译 2016-12-24 00:29:22 · 1083 阅读 · 0 评论 -
Part 3.2
Part 3.2: image preprocessing 在我们尝试训练CNN之前,对图像进行预处理以去除其平均值。 它也通过应用标准偏差3个像素的高斯核进行平滑:% Pre-smooth the imageim = vl_imsmooth(im,3) ;% Subtract median valueim = im - median(im(:)) ;我们稍后将回到这个预处理步骤。Part 3翻译 2016-12-24 00:11:08 · 1142 阅读 · 4 评论 -
VGG Convolutional Neural Networks Practical(6)training data and labels
第3.1部分:培训数据和标签 第一步是加载图像data/ dots.jpg并使用提供的extractBlackBlobs函数提取图像中的所有黑点。 % Load an imageim = rgb2gray(im2single(imread('data/dots.jpg'))) ;% Compute the location of black blobs in the image[pos,ne原创 2016-12-19 16:25:15 · 1041 阅读 · 0 评论 -
matlab像素值及统计
1.像素数据值 impixel函数可以返回用户指定的图像像素的颜色数据值,impixel函数可以返回选中像素或者是像素集的数据值,可以直接将像素坐标作为该函数的输入参数,或用鼠标选中像素。imshow trees.tifvals = impixel上面的代码运行后,得到如下图所示的界面, 在界面中用鼠标选取n(我这里选了四个点)个点,按Enter键,则在输出窗口中得到vals = 0原创 2017-01-01 16:08:55 · 29611 阅读 · 6 评论 -
几何变换与图像变换二--仿射变换
对于2D空间,仿射变换可以写成 为了数学和计算方便,仿射变换可用附加坐标的方法写成矩阵相乘的形式。 函数maketform可用语法tform=maketform(‘affine’,T)从仿射矩阵直接创建tform结构,例如:T=[1 0 0;0.4 1 0;0 0 1];tform3 = maketform('affine',T);WZ=[1 1;3 2];XY=tformfwd(WZ原创 2017-03-26 19:47:53 · 2323 阅读 · 0 评论 -
几何变换与图像配准一--点变换
几何变换改变了图像中像素间的空间关系。可以使图像放大或者缩小,可以旋转、移动或用各种方法进行其他扩展。几何变换可用于创建小场景,使之适应从某个重放分辨率到另一个分辨率的数字视频,校正由观察几何变化导致的失真,以及排列有相同场景和目标的多幅图像。几何坐标变换可以定义为从输入空间点到输出空间点的映射。如果这种从输入到输出的变换有逆,那么可以逆映射输出空间点到输入空间点。图像的几何变换被定义为按照几何坐标原创 2017-03-26 14:49:41 · 3417 阅读 · 0 评论 -
用一行matlab代码实现图像翻转
一 灰度图像 1灰度图像的左右翻转I=imread('lena.png');I=rgb2gray(I);figure(1),imshow(I);I2=I(:,end:-1:1);figure(2),imshow(I2);附:用matlab库函数实现:I=imread('lena.png');I=rgb2gray(I);figure(1),imshow(I);I2=flipdim(I,原创 2017-03-26 11:54:36 · 10451 阅读 · 2 评论 -
图像内插
对于数字图像,f的值仅在整数位置是知道的。使用这些已知的值去估计在非整数值位置的f是内插的典型示例——用离散数据构建连续函数的定义的函数。内插具有很长的历史,很多年来,已经提出了众多的内插方法。在信号处理文献中,内插常常被理解为拥有两个设计步骤的重采样过程: (1)把连续变换离散化,把拥有连续定义的函数f’转换为在离散域定义的函数f。 (2)在离散位置估计f’的值。 当知道f的取样是有规律的间原创 2017-03-27 21:37:23 · 3615 阅读 · 0 评论 -
matlab中的图像坐标系统
有时我们的图显示了没有轴标记的图像。这是函数imshow的默认行为。但是几何图像变换的分析和解释是通过显示这些形象的排列来辅助的。开启标记的一种方法是在调用imshow之后调用axis。例如:f=imread('circuit-board.tif');imshow(f)axis onxlabel xylabel y如图,原点在左上角,x轴是水平的,并且向右延伸;y是垂直的,并且向下延伸。这个原创 2017-03-27 16:35:55 · 27662 阅读 · 2 评论 -
matlab均衡化、规定化、滤波处理
一、直方图均衡化处理I=imread('E:\matconvnet-1.0-beta23\fry.jpg');J=rgb2gray(I);H=histeq(J);%计算和显示灰度图像J的直方图subplot(2,2,1),imshow(J);subplot(2,2,2),imshow(H);subplot(2,2,3),imhist(J);subplot(2,2,4),imhist(H)原创 2017-03-05 21:22:12 · 2623 阅读 · 0 评论 -
论文理解:基于卷积神经网络的人脸识别方法
本文是对陈耀丹、王连明的基于卷积神经网络的人脸识别方法的理解。 摘要:实现了一种基于卷积神经网络的人脸识别方法,该网络由两个卷积层,两个池化层、一个全连接层和一个softmax回归层组成,它能自动提取人脸特征并进行分类,网络通过批量梯度下降法训练特征提取器和分类器,各隐层应用“dropout”方法解决了过拟合问题,应用于ORL和AR人脸数据库的人脸识别率分别达到99.50%和99.62%,识别单张翻译 2017-03-03 14:31:38 · 28549 阅读 · 7 评论 -
用matlab批量新建和删除文件夹
clear clc cd('E:\MyData2\test');%设置当前目录:current directory for i = 1 : 100 folderName{i} = ['movie', num2str(i)]; mkdir(folderName{i}); % 新建一个文件夹 end clear clc cd('E:\MyData2\te原创 2017-02-28 19:00:36 · 3204 阅读 · 0 评论 -
matlab二维图形绘制(一)
matlab基本的二维图像包括线型(Line Plots),散点型(Scatter Plots)、条形(Bar Plots)、极坐标型(Polar Plots)以及矢量图型(Vector Plots)等。 1.Plot指令X=-10:10;Y=X.^2;figure(1)subplot(131);plot(X,Y,'LineWidth',2);subplot(132);plot(Y,'Li原创 2017-01-01 20:23:02 · 11295 阅读 · 0 评论 -
matlab图形绘制
1.离散数据以及离散函数 当把两个向量数组在直角坐标系中用点序列来表示时,就实现了离散函数的可视化。这些图像上的离散数列反映的是X所限定的有限点或者是有限区间上的函数关系,matlab是无法实现对无限区间上的数据的可视化的。X1=[1 2 4 6 7 8 10 11 12 14 16 17 18 20];Y1=[1 2 4 6 7 8 10 10 8 7 6 4 2 1];figure(1)原创 2017-01-01 18:56:19 · 2131 阅读 · 0 评论 -
matlab图像平滑
图像平滑的主要目的是减少图像噪声,噪声是普遍存在的额,图像中的噪声也是如此。图像噪声可能来自于很多因素,noise产生的原因决定了噪声分布的特性,由于这些特性的存在,可以有针对性地对noise进行抑制。 1.线性滤波 在matlab中,可以使用imfilter函数来实现线性滤波,originalRGB=imread('peppers.png');subplot(121);imshow(orig原创 2017-01-01 18:02:24 · 20424 阅读 · 0 评论 -
matlab图像调整
图像调整技术用于图像的改善,包括提高信噪比、通过修正图像的颜色和灰度使其某些特征更容易识别等。 1.图像灰度调整 可以直接用imadjust函数直接调整灰度的范围而调整灰度I = imread('pout.tif');J=imadjust(I);subplot(221);imshow(I)subplot(223);imhist(I,64)subplot(222);imshow(J)su原创 2017-01-01 17:18:01 · 3828 阅读 · 0 评论 -
(1)MatConvnet配置
1.下载MatConvNet,MatConvNet是牛津大学视觉组深度学习的工具2.下载完后,解压,移到某处,打开matlab,进入到matconvnet-1.0-beta23目录下。3.在matlab命令窗下输入以下命令进行mex编译:addpath matlabvl_compilenn结果:vl_compilenn: CUDA: MEX config file: 'D:\Program F原创 2016-12-09 11:10:50 · 5692 阅读 · 2 评论 -
用matlab对图像进行批量旋转
%增加数据,通过对图像旋转,并将图像的大小调整回128*128操作来增加数据,****测试数据集close all;clear;%首先创建了5个用来存放旋转后图像的路径,旋转角度分别为0.1,0.5,2.4,4.3和6.3WTR1='I:\手掌静脉图像\data_rotate_small_resize\test\data_rotate_0.1_resize\';WTR2='I:\手掌静脉图原创 2017-01-02 13:48:00 · 3858 阅读 · 0 评论 -
MatConvNet代码梳理3--vl_argparse()
VL_ARGPARSE解析参数值对的列表。OPTS = VL_ARGPARSE(OPTS,ARGS)基于指定的参数 - 值对ARGS = {PAR1,VAL1,… PARN,VALN}更新结构OPTS。如果参数PAR不能与OPTS中的任何字段匹配,则函数会生成错误。在OPTS中具有struct值的参数以递归方式处理,更新各个子字段。可以通过使用VL_ARGPARSE(OPTS,ARGS,’nonre原创 2016-12-16 13:36:55 · 8715 阅读 · 4 评论 -
MatConvNet代码梳理1--vl_rootnn()
VL_ROOTNN获取MatConvNet工具箱的根路径。该文件是VLFeat库的一部分,关于VLFeat库,可以参考这篇博客VLFeat和Piotr’s Image & Video Matlab Toolbox - 风言风语function root = vl_rootnn() root = fileparts(fileparts(mfilename('fullpath'))) ;file原创 2016-12-16 11:16:29 · 2092 阅读 · 0 评论 -
MatConvNet代码梳理2--function vl_setupnn()
VL_SETUPNN设置MatConvNet工具箱。VL_SETUPNN()函数将MatConvNet工具箱添加到MATLAB路径。此文件是VLFeat库的一部分。fullfile是利用文件各部分信息创建合成完整文件名。function vl_setupnn() root = vl_rootnn() ; addpath(fullfile(root, 'matlab')) ;原创 2016-12-16 11:59:17 · 4155 阅读 · 0 评论 -
DeepLearningtoolbox(8):cnnbp.m
%函数名称:cnnbp() %输入参数:net,待训练的神经网络;y,训练样本的标签,即期望输出 %输出参数:net,经过BP算法训练得到的神经网络 %主要功能:通过BP算法训练神经网络参数 %实现步骤:1)将输出的残差扩展成与最后一层的特征map相同的尺寸形式 % 2)如果是卷积层,则进行上采样 % 3)如果是下采样层,则进行下采样 %原创 2016-12-14 00:49:47 · 700 阅读 · 0 评论 -
DeepLearningtoolbox(7):cnnff.m
%函数名称:cnnff() %输入参数:net,神经网络;x,训练数据矩阵; %输出参数:net,训练完成的卷积神经网络 %主要功能:使用当前的神经网络对输入的向量进行预测 %算法流程:1)将样本打乱,随机选择进行训练; % 2)讲样本输入网络,层层映射得到预测值 %注意事项:1)使用BP算法计算梯度 function net = cnnff(net, x)原创 2016-12-14 00:28:32 · 784 阅读 · 0 评论 -
DeepLearningtoolbox(6):cnnapplygrads.m
%函数名称:cnnapplygrads(),权值更新函数 %输入参数:net,权值待更新的卷积神经网络;opts,神经网络训练的相关参数%算法流程:先更新卷积层的参数,再更新全连接层参数function net = cnnapplygrads(net, opts) for l = 2 : numel(net.layers) if strcmp(net.layers{l}.ty原创 2016-12-13 22:41:47 · 840 阅读 · 0 评论 -
DeepLearningtoolbox(5):cnntest.m
function[er,bad]=cnntest(net,x,y)%前向计算 net=cnnff(net,x); [~,h]=max(net.o);%找到最大的输出对应标签 [~,a]=max(y);%找到最大的期望输出对应的索引 bad=find(h~=a);%找到它们不相同的个数,也就是错误的个数。 er=numel(bad)/size(y,2);%计算错原创 2016-12-13 22:32:17 · 837 阅读 · 0 评论 -
DeepLearningtoolbox(4):cnntrain.m
%opts,神经网络的相关训练参数; %net,神经网络;x,训练数据矩阵;y,训练数据的标签矩阵;function net = cnntrain(net, x, y, opts) m = size(x, 3);%训练样本的个数 %disp(['样本总个数=' num2str(m)]); numbatches = m / opts.batchsize; %rem(原创 2016-12-13 22:21:56 · 631 阅读 · 0 评论 -
DeepLearningtoolbox(3):cnnsetup.m
function net = cnnsetup(net, x, y)inputmaps = 1; %初始化网络输入层数为1层 mapsize = size(squeeze(x(:, :, 1)));%B=squeeze(A) 返回和矩阵A相同元素但所有单一维都移除的矩阵B,单一维是满足size(A,dim)=1的维。train_x中图像的存放方式是三维的reshape(train_x'原创 2016-12-13 21:42:53 · 890 阅读 · 0 评论 -
DeepLearningtoolbox(2):cnnexample.m
clear all; close all; clc; load mnist_uint8;%导入数据集train_x = double(reshape(train_x',28,28,60000))/255; %使用MNIST数据集,将图像进行归一化test_x = double(reshape(test_x',28,28,10000))/255; %同理,将测试图像进行归一化 train_y=原创 2016-12-13 21:04:29 · 584 阅读 · 0 评论 -
DeepLearningToolbox(1)代码框架分析之关键函数的主要功能
test_example_CNN_MNIST.m:是使用CNN识别手写数字的主函数;cnnsetup.m:建立卷积神经网络的函数;cnntrain.m:使用训练样本进行训练的函数;cnntest.m:使用测试样本进行测试的函数;cnnff.m:CNN的前向计算过程;cnnapplygrads.m:更新权值和偏置。注意: (1)在使用此程序时,可以设置的参数有:卷积神经网络的结构、每个卷积层卷积面的原创 2016-12-13 19:24:45 · 700 阅读 · 0 评论