
matconvnet
feiyy404
选择往往比努力更重要。
展开
-
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 评论 -
VGG计算机视觉实践
The Oxford Visual Geomery Group Computer Vision Practicals 是基于MATLAB的实践经验的集合,介绍了图像理解中的基本概念(要求和安装说明)。 提供以下实用工具: 1.对象实例识别是在图像中匹配(识别)特定对象或场景的问题,例如由梵高的圣母大教堂或“繁星夜”。 挑战是对尺度,照相机视角,照明条件和部分遮挡的变化是不变的。 本实践包括以下主题翻译 2016-12-24 00:29:22 · 1083 阅读 · 0 评论 -
VGG Convolutional Neural Networks Practical(2)non-linear activation functions
第1.2部分:非线性激活函数 如我们在介绍中所述,CNN是通过组成几个不同的功能获得的。 除了前面部分所示的线性滤波器之外,还有几个非线性算子。 问题:CNN中的某些功能必须是非线性的。 为什么?(还真回答不了这个问题······大家说说自己的理解呗,共同交流。)通过由非线性激活函数遵循线性滤波器来获得最简单的非线性,该非线性激活函数被相同地应用于特征图的每个分量(即逐点地)。 最简单的这种功能原创 2016-12-19 13:42:29 · 1279 阅读 · 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(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(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(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(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(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 评论 -
关于matconvnet的几个小程序(3)识别车牌字符
首先新建cnn_plate_setup_data.m文件,读取相应的图片和标签,并减去均值。function imdb =cnn_plate_setup_data(datadir)inputSize =[20,20,1];%输入图片的尺寸,最后的1代表图像为灰度图subdir=dir(datadir);imdb.images.data=[];imdb.images.labels=[];im原创 2017-01-13 19:18:59 · 2585 阅读 · 21 评论 -
关于matconvnet的几个小程序(1)用滑动窗口框出树上的苹果
参考链接 考虑:matconvnet官方给出的神经网络分类器imagenet-googleNet-dag.mat已经具备了较强的识别能力,能识别1000种标签。利用它再编写一个滑动窗口函数,即可实现对大图像的内容搜索。(如现在我们想在一颗果树上寻找果子)分析: 图像中目标对象的大小往往不同,所以采用多个不同尺寸的滑动窗口对图像进行处理。处理时,窗口由左向右,由上到下按照一定的步长逐次移动。每次移转载 2017-01-12 16:15:04 · 1672 阅读 · 0 评论 -
关于matconvnet的几个小程序(2)用制作的滑动窗口数据进行训练
参考:参考链接1 之前的滑动窗口准备2 构建自己的神经网络的三步: 1.准备数据; 2.设计神经网络的结构; 3.设置参数,用数据训练网络。我们的数据有两类,单个苹果(1文件夹)和非单个苹果(0文件夹)。 首先是将文件中的图片导入、格式化、划分训练集测试集交叉验证集,求取均值后以.mat的格式存储在磁盘上。 cnn_setup_data.m:function imdb =cnn_set原创 2017-01-12 19:47:20 · 1504 阅读 · 5 评论 -
实验记录myhands3改进的myhands500class-4
承接myhands1和myhands2 100个人的图像,最后用1000-500的结构,否则结构还是myhands3的500-100会报错。使用了6个方向的radon滤波器。 使用自动学习率调节,每次输入的训练张数为400.另外补充上myhands500class-1······这些具体的实验数据都有记录。然后接下来的计划是扩大数据集、改进结构和初始进行更多方向的滤波。 并且在全连接时候加入d原创 2017-02-15 23:01:36 · 495 阅读 · 0 评论 -
以90°倍数旋转和翻转的方式扩展CNN数据
我用CNN主要做的是手掌静脉图像的识别。传统的识别的方式可能对静脉的方向性依赖性比较大。这次尝试将图像进行上下、左右的翻转和以90°为倍数的旋转,观察训练是否能够收敛。 原图是放在500个文件夹下的500类,每类有12张图像,具体程序:%增加数据,通过对图像左右上下翻转和以90°的倍数进行旋转来进项数据扩展。close all;clear;WTR1='F:\手掌静脉图像\data_flipd原创 2017-03-27 22:33:20 · 2093 阅读 · 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 评论 -
(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 评论 -
MatConvNet--VL_NNBILIEARSAMPLER
VL_NNBILIEARSAMPLER - CNN空间双线性重采样 Y = VL_NNBILINEARSAMPLER(X,GRID)使用双线性内插在由GRID指定的空间位置处重新采样图像X.X是维度H×W×C×N的阵列,其中(H,W)是图像的高度和宽度,C是特征通道的数量,N是批次中的图像的数量。GRID是尺寸为2×Ho×Wo×No的数组,其中(Ho,Wo)是输出图像的高度和宽度,No是输出批次Y翻译 2016-12-17 19:09:19 · 1675 阅读 · 0 评论 -
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代码梳理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 评论 -
(3)如何在MatConvNet下训练自己的数据
之前用了比较简单的DeepLearningtoolbox工具包,为了深入把所有的m文件解析了一次。换到MatConvNet,发现它比前者要“庞大”很多,之前写了几篇解析就写不下去了;但MatConvNet基本的层层调用关系,和DeepLearningtoolbox还是很相似的,如果能先跑一个我们自己的例子,再来分析层级结构,有些东西理解起来就会快很多吧。。车牌识别 <–在这里下载我们这次实验需要的数原创 2016-12-17 12:52:20 · 6542 阅读 · 28 评论 -
MatConvnet工具箱文档翻译理解一
概述MatConvNet是用于MATLAB的卷积神经网络(CNN)的实现。工具箱的设计注重简单性和灵活性。它将CNN的构建块暴露为易于使用的MATLAB函数,提供用于计算具有过滤器组的线性卷积,特征池化等的例程。以这种方式,MatConvNet允许新的CNN快速原型架构;同时,它支持CPU和GPU上的有效计算,允许在大型数据集(如ImageNet ILSVRC)上训练复杂模型。本文档概述了CNN及其翻译 2016-12-15 20:55:38 · 2984 阅读 · 1 评论 -
MatConvnet工具箱文档翻译理解二
1.2 MatConvNet一目了然MatConvNet具有简单的设计理念。 它不是将CNN包裹在软件的复杂层上,而是暴露了直接作为MATLAB命令的计算CNN构造块的简单函数,例如线性卷积和ReLU运算符。这些构建块易于组合成完整的CNN,并且可以用于实现复杂的学习算法。虽然提供了小型和大型CNN架构和培训例程的几个现实例子,但是总是可以回到基础并构建自己的网络,利用MATLAB在原型中的效率。通翻译 2016-12-15 21:43:56 · 1762 阅读 · 0 评论 -
MatConvnet工具箱文档翻译理解三
第2章 神经网络计算本章简要介绍了神经网络的计算方面,尤其是卷积神经网络,强调了理解和使用MatConvNet所需的概念。2.1概述神经网络(NN)是将数据x(例如图像)映射到输出向量y(例如图像标签)的函数。函数g = fL … f 1是较简单函数序列fl的组合,称为计算块或层。令x1; x2; :::; xL是网络中每个层的输出,并且令x0 = x表示网络输入。通过应用具有参数wl的函数fl,从翻译 2016-12-15 23:09:39 · 2236 阅读 · 0 评论 -
MatConvnet工具箱文档翻译理解四
第3章 包装器和预训练模型这是很容易的组合第4章“手动”的计算块,但通常通过一个包装器来使用它们可以实现CNN架构给定一个模型规范通常更方便,可用的包装器总结在3.1节。 MatConvNet还附带了许多用于图像分类的预训练模型(其中大多数 在ImageNet ILSVRC挑战上训练),图像分割,文本点样和面部识别。 这些使用非常简单,如3.2节所示。3.1包装MatConvNet提供了两个包装翻译 2016-12-16 00:36:35 · 5403 阅读 · 3 评论 -
MatConvnet工具箱文档翻译理解五
第4章 计算块本章描述了MatConvNet支持的各个计算块。CNN计算块的接口是在第2章讨论之后设计的。该块被实现为MATLAB函数 y = vl_nn (x,w),其采用MATLAB数组x和w表示输入数据和参数,并返回数组y作为输出。 一般来说,x和y是包装N个图或图像的4D实数阵列,如上所述,而w可具有任意形状。 实现每个块的功能能够在向后方向上工作以及计算导数。 这是通过传递第三个可选参翻译 2016-12-16 01:00:44 · 1825 阅读 · 0 评论 -
(2)测试MatConvNet
配置完成只会,我们来进行测试, 测试脚本参考:run matlab/vl_setupnnnet=load('F:\MatConvNet\matconvnet-1.0-beta23\models\imagenet-vgg-f.mat');%此处换成自己下载模型存储的位置im=imread('peppers.png');im_=single(im);im_=imresize(im_,net.m原创 2016-12-09 15:38:27 · 1910 阅读 · 1 评论 -
MatConvnet--CNN wrappers
在其核心,MatConvNet包括实现CNN构建块的一些MATLAB函数。 这些通常通过使用两个CNN包装器之一组合成完整的CNN。 第一个包装器是SimpleNN,其中大部分由MATLAB函数vl_simplenn实现。 SimpleNN适用于具有线性拓扑的网络,即计算块链。 第二个包装器是DagNN,它实现为MATLAB类dagnn.DagNN。SimpleNN包装器 SimpleNN包装器由原创 2016-12-17 17:40:13 · 1961 阅读 · 0 评论 -
MatConvNet--Using MatConvNet to train convnets
MatConvNet可以用于训练模型,通常使用一种形式的随机梯度下(SGD)和反向传播。MNIST. See examples/mnist/cnn_mnist.m.CIFAR. See examples/cifar/cnn_cifar.m.ImageNet. See examples/imagenet/cnn_imagenet.m.这些演示是独立的; 特别是MNIST和CIFAR,自动下载和解压原创 2016-12-17 17:45:17 · 1003 阅读 · 0 评论 -
MatConvNet--Function index
MatConvNet包括几个MATLAB函数组织如下: Building blocks 这些功能实现CNN计算块,可以手动或使用提供的包装器之一来组合CNN。SimpleCNN wrapper SimpleNN是实现作为计算块的线性链的CNN的轻量包装器。DagNN wrapper DagNN是一个面向对象的包装器,支持更复杂的网络拓扑。Other functions 这些帮助函数用于初始原创 2016-12-17 18:06:30 · 1399 阅读 · 0 评论 -
MatConvNet--VL_NNBNORM
VL_NNBNORM - CNN批量标准化。 Y = VL_NNBNORM(X,G,B)对输入X应用批次归一化。批量归一化定义为:Y(i,j,k,t) = G(k) * (X(i,j,k,t) - mu(k)) / sigma(k) + B(k)其中,mu(k) = mean_ijt X(i,j,k,t),sigma2(k) = mean_ijt (X(i,j,k,t) - mu(k))^2,翻译 2016-12-17 18:34:50 · 2140 阅读 · 5 评论 -
关于matconvnet数据预处理方法的思考(一)
这一部分只要讲解怎么把我们的图片数据变成matconvnet可以用来训练的数据格式。主要是套用minst的数据结构。原创 2017-04-14 00:20:03 · 1984 阅读 · 2 评论