加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第一章  MATCONVNET介绍

(2016-10-17 21:18:32)

  matconvnet是一个实现卷积神经网络(CNN)的MATLAB工具箱,用于计算机视觉应用。 自从[7]的突破性工作以来,CNN已经有了计算机视觉的主要影响,特别是图像的理解,基本上是取代传统的图像表示,例如在我们自己的VLFeat [12]中实现的源库。

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

   现如今存在许多其他机器学习,深度学习和CNN开源库。引用一些最受欢迎的:CudaConvNet[1],Torch[2],Theano[3], Caffe[4]。 许多这些库得到很好的支持,有几十个活跃的贡献者和大量的用户基础。因此,为什么要创建另一个库?

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

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

 

1.1 开始运行

  Mat Conv Net易于安装和使用。 图1.1提供了使用最新一代深卷积神经网络对图像进行分类的完整示例。 该示例包括下载Mat Conv Net,编译包,下载预训练的CNN模型,以及在MATLAB的某个库存图像上评估后者。

在此示例中的关键命令是vl_simplenn作为CNN的输入的包装器net和预处理图像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')创建一个大小为3×3的K = 16个随机过滤器组。

最后,使用命令y = vl_nnconv(x,f,[])将图像与滤波器进行卷积。 这导致具有K个通道的阵列y,对于组中的每个K滤波器中的一个。(This results in an array y with K channels, one for each of the K filters in the bank.)

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

http://s5/mw690/002GGaRezy75HcPw3Xu64&690 MATCONVNET介绍" TITLE="第一章  MATCONVNET介绍" />

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有