概述

MatConvNet是用于MATLAB的卷积神经网络(CNN)的实现。工具箱的设计注重简单性和灵活性。它将CNN的构建块暴露为易于使用的MATLAB函数,提供用于计算具有过滤器组的线性卷积,特征池化等的例程。以这种方式,MatConvNet允许新的CNN快速原型架构;同时,它支持CPU和GPU上的有效计算,允许在大型数据集(如ImageNet ILSVRC)上训练复杂模型。本文档概述了CNN及其在MatConvNet中的实现,并给出了工具箱中每个计算模块的技术细节。

**章节一MatConvNet简介**MatConvNet是一个实现卷积神经网络(CNN)的MATLAB工具箱,被应用于计算机视觉。 自从[7]的突破性工作以来,CNN已经在计算机视觉领域产生重要影响,特别是在图像理解上,基本上取代了传统的图像表示。例如在我们自己的VLFeat [11]开源库中实现的图像表示。

虽然大多数CNN是通过组合简单的线性和非线性滤波操作获得的,诸如卷积和整形,它们的却并非微不足道。原因是CNN需要从大量的数据,通常是数百万的图像中学习,需要非常有效的实现。 作为大多数CNN库,MatConvNet通过使用各种优化,主要是通过支持GPU上的计算来实现这一点。

存在许多其他机器学习,深度学习和CNN开源库。引用一些最流行的:像CudaConvNet,Torch,Theano,Caffe。 许多这些库得到很好的支持,有几十个积极的贡献者和大量的用户基础。 因此,为什么要创建另一个库?

开发MatConvNet的关键动机是为研究人员提供一个特别友好和有效的环境,以便在其研究中使用。MatConvNet通过其在MATLAB环境中的深度集成实现了这一点,MATLAB环境是计算机视觉研究以及许多其他领域中最受欢迎的开发环境之一。特别地,MatConvNet公开了简单的MATLAB命令CNN构建块,如卷积,归一化和合并(第4章); 这些可以组合和扩展以轻松创建CNN架构。虽然有许多这样的模块,使用用C ++和CUDA(第1.4节)编写优化的CPU和GPU实现,但是MATLAB本身支持GPU计算意味着通常可以在保持计算效率的同时在MATLAB中直接写入新的块。与使用低级语言编写新的CNN组件相比,这是一个重要的简化,可以显着加速测试新的想法的速度。使用MATLAB还提供了一个连接到其他领域的桥梁;例如,MatConvNet最近被亚利桑那大学用于行星科学,正如NVIDIA的博客文章中所总结的。

MatConvNet可以从数以百万计的图像学习大型CNN模型,如AlexNet [7]和非常深的网络[9]。这些强大模型中的几个的预训练版本可以从MatConvNet主页下载。虽然功能强大,MatConvNet仍易于使用和安装。 实现是完全独立的,只需要MATLAB和兼容的C ++编译器(使用GPU代码需要免费提供的CUDA DevKit和合适的NVIDIA GPU)。如图1.1所示和第1.1节,可以使用三个MATLAB命令下载,编译和安装MatConvNet。包括了几个完整功能的示例,演示如何可以学习小型和大型网络。重要的是,几个标准的预训练网络可以立即下载并在应用程序中使用。有一与工具箱一起保留了具有完整的工具箱技术描述的手册8。这些特性使MatConvNet在教育背景下非常有用。 
MatConvNet是根据BSD类似许可证的开放源代码。 它可以从http://www.vlfeat.org/matconvnet以及从GitHub.10下载。

1.1入门

MatConvNet易于安装和使用fig1.1提供了一个完整的例子,使用最新一代深卷积神经网络分类图像。 该示例包括下载MatConvNet,编译包,下载预训练的CNN模型,并在MATLAB的一个图像上评估该模型。

在这个例子中的key命令是vl_simplenn,一个用CNN网络和预处理图像im_的包装器作为输入,并且产生结果的结构res作为输出。 
该特定包装器可以用于对具有简单结构,即操作链的网络建模。 
检查vl_simplenn(在MatConvNet中编辑vl_simplenn)的代码,我们注意到包装器顺序地转换数据,应用由网络配置指定的一些MATLAB函数。这些功能,在第4章中详细讨论,称为“构建块”,并构成MatConvNet的骨干。

虽然大多数块实现简单操作,但他们效率使之不平凡(第1.4节),它们以及支持反向传播(第2.3节)以允许学习CNN。接下来,我们演示如何直接使用这样的构建块之一。 为了该示例考虑使用线性滤波器组对图像进行卷积。首先在MATLAB中读取图像,比如说使用 
im=single(imread('peppers.png')) 
得到H*W*D矩阵im,其中D = 3是图像中的颜色通道的数量。然后用 
f=randn(3,3,3,16,'single') 
来创建一个K = 16个随机字母大小为3 * 3的数组。 
最后,使用命令 
y = vl_nnconv(x,f,[]) 
将图像与过滤器卷积。 这将产生一个数组y带有K个通道,每个通道用于bank中的每一个。

虽然鼓励用户直接使用块来创建新的架构,但MATLAB提供了包装器,如用于标准CNN架构的vl_simplenn,如AlexNet [7]或Network-in-Network [8]。 此外,库提供了大量示例(在examples /子目录中),包括在MNIST,CIFAR和ImageNet数据集上学习各种模型的代码。 
所有这些示例使用examples / cnn_train训练代码,它是随机梯度下降的实现(第3.3节)。虽然这个训练代码是完全可维护的和相当灵活,它仍然在examples /子目录,因为它有点问题特定。 欢迎用户实施他们的优化器。

MatConvnet工具箱文档翻译理解(1)相关推荐

  1. MatConvnet工具箱文档翻译理解(3)

    第2章 神经网络计算 本章简要介绍了神经网络的计算方面,尤其是卷积神经网络,强调了理解和使用MatConvNet所需的概念. 2.1概述 神经网络(NN)是将数据x(例如图像)映射到输出向量y(例如图 ...

  2. MatConvnet工具箱文档翻译理解(2)

    1.2 MatConvNet一目了然 MatConvNet具有简单的设计理念. 它不是将CNN包裹在软件的复杂层上,而是暴露了直接作为MATLAB命令的计算CNN构造块的简单函数,例如线性卷积和ReL ...

  3. MatConvnet工具箱文档翻译理解(4)

    第3章 包装器和预训练模型 这是很容易的组合第4章"手动"的计算块,但通常通过一个包装器来使用它们可以实现CNN架构给定一个模型规范通常更方便,可用的包装器总结在3.1节.  Ma ...

  4. Xilinx技术文档翻译理解汇总

  5. 关于Matconvnet中模型发布与共享的思考

    1. 前言 现阶段还坚持使用Matconvnet工具箱的一定是MATLAB的死粉.与TensorFlow.Keras相比,matconvnet的便捷性不够.但是,matlab与matconvnet提供 ...

  6. 如何使用Sheffield大学的Matlab GA遗传算法工具箱

    本文假设阅读本文章的各位已经安装好工具箱,并基于个人对Sheffield工具箱的理解,以1.2版本的工具箱为例,对函数进行简单讲解. SheffieldGA工具箱在CONTENTS.M文件中给出其工具 ...

  7. MATLAB机器人工具箱【1】——建模+正逆运动学+雅克比矩阵

    MATLAB机器人工具箱[1]-- 机械臂建模+正逆运动学+雅克比矩阵 1. 二维空间位姿描述 2. 三维空间位姿描述 3. 建立机器人模型 3.1 Link 类 3.2 SerialLink 类 3 ...

  8. MATLAB机器人工具箱【3】—— 动力学相关函数及用法

    MATLAB机器人工具箱[3]-- 动力学相关函数及用法 1. 查看机器人动力学参数 2. 逆动力学 3. 正动力学 4. 机器人动力学方程 5. 赋予机器人动力学参数 本文在参考B站up主刘海涛大佬 ...

  9. SiamFC代码配置复现 matlab版本

    原创 SiamFC代码配置复现 2019-04-29 22:18:06 ZZXin_ 阅读数 1603更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

最新文章

  1. ida 调试中call stack如何打开|修改数值
  2. python处理csv数据-python 数据处理 对csv文件进行数据处理
  3. java jdk安装失败 mac_Mac javaJDK安装遇到的坑和环境变量配置2019-07-09.
  4. IE 8 Accelerator加速器开发介绍{转载}
  5. Hibernate中session的get方法和load方法的区别
  6. zabbix mysql脚本_zabbix监控mysql脚本
  7. jeecg 与 jeecg-p3有什么区别?
  8. 简单实现Popup弹出框添加数据
  9. Oracle 空间查询, 数据类型为 sdo_geometry
  10. Linux安装配置 VNC Server
  11. linux内核实时补丁的实现,Canonical释出用于Ubuntu 18.04 LTS和16.04 LTS的新Linux内核实时补丁...
  12. 移远 BC95-B5
  13. 台式计算机显卡驱动位置,如何在HP台式计算机上安装图形驱动程序
  14. 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
  15. web前端开发面试题(二)
  16. hdwiki 软件包结构
  17. 生物统计学(biostatistics)学习笔记(二)
  18. 缓存雪崩的基于事前+事中+事后三个层次的完美解决方案
  19. C什么k什么_问:古筝k是什么意思
  20. tensorflow.keras入门1

热门文章

  1. elasticsearch 集群no known master node
  2. Hadoop 面试题之Hbase
  3. redis学习及实践5---redis相关资料参考文献
  4. android 一些常用的功能方法代码块
  5. VIM 快捷键(转)
  6. poj 3680 Intervals(离散化+费用流)
  7. NYOJ 336 子序列
  8. NYOJ 590 相同的和
  9. CSS DIV Shadow
  10. JS中的this的应用总结