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

2023-12-02 11:32

本文主要是介绍MatConvnet工具箱文档翻译理解(4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第3章 包装器和预训练模型

这是很容易的组合第4章“手动”的计算块,但通常通过一个包装器来使用它们可以实现CNN架构给定一个模型规范通常更方便,可用的包装器总结在3.1节。 
MatConvNet还附带了许多用于图像分类的预训练模型(其中大多数 
在ImageNet ILSVRC挑战上训练),图像分割,文本点样和面部识别。 这些使用非常简单,如3.2节所示。

3.1包装

MatConvNet提供了两个包装器:用于基本链块链(3.1.1节)的SimpleNN和用于更复杂的直接非循环图(参见3.1.2节)的块的DagNN。

3.1.1 SimpleNN

SimpleNN包装器适用于由计算块的线性链组成的网络。 它主要由vl_simplenn函数(对CNN及其派生的评估)以及一些其他支持函数(例如vl_simplenn_move(移动CPU和GPU之间的CNN)和vl_simplenn_display(获得和/或打印关于CNN的信息)实现)。

vl_simplenn接收表示CNN的结构网络作为输入,以及输入x和潜在输出导数dzdy,这取决于操作模式。 有关输入和输出格式的详细信息,请参阅vl_simplenn函数的内联帮助。 实际上,vl_simplenn的实现是如何可以一起使用基本神经网络构建块的良好示例,并且可以作为更复杂实现的基础。

3.1.2 DagNN

DagNN包装器比SimpleNN更复杂,因为它必须支持任意图形拓扑。 它的设计是面向对象的,有一个类实现每个层类型。 虽然这增加了复杂性,并且使得微小的CNN架构(例如MNIST)的包装器稍微更慢,但是实际上它更加灵活和更容易扩展。 
DagNN由dagnn.DagNN类(在dagnn命名空间下)实现。

3.2 Pre-trained models

vl_simplenn易于使用预训练模型(见主页下载一些)。 
例如,以下代码下载在ImageNet数据上预先训练的模型,并将其应用于MATLAB库存图像之一:

% setup MatConvNet in MATLAB
run matlab/vl_setupnn
% download a pretrained CNN from the web
urlwrite(...
'http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat', ...
'imagenet-vgg-f.mat');
net = load('imagenet-vgg-f.mat') ;
% obtain and preprocess an image
im = imread('peppers.png') ;
im_ = single(im) ; % note: 255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = im_-net.meta.normalization.averageImage ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

请注意,在运行网络之前应对图像进行预处理。 虽然预处理规范取决于模型,但预训练模型包含描述预期预处理类型的网络规范化场。 特别要注意的是,该网络将固定大小的图像作为输入,并且需要去除平均值; 此外,图像强度在[0,255]的范围内归一化。 
下一步是运行CNN。 这将返回一个res结构的输出网络层:

%run the CNN
res = vl_simplenn(net, im_) ;
  • 1
  • 2

最后一层的输出可用于分类图像。 为了方便起见,类名称包含在网络结构中:

% show the classification result
scores = squeeze(gather(res(end).x)) ;
[bestScore, best] = max(scores) ;
figure(1) ; clf ; imagesc(im) ;
title(sprintf('%s (%d), score %.3f',···net.meta.classes.description{best}, best, bestScore)) ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意,几个扩展是可能的。 首先,图像可以裁剪而不是重新定标。 第二,多种裁剪可以喂给网络和结果平均,通常为改进的结果。 第三,网络的输出可以用作图像编码的通用特征。

3.3学习模型

由于MatConvNet可以使用反向传播计算CNN的导数,因此使用它实现学习算法很简单。 因此,随机梯度下降的基本实现是简单的。 
示例代码在examples / cnn_train中提供。这个代码是足够的,以允许在NMINST,CIFAR,ImageNet和其他许多数据集上训练。相应的示例在examples /目录中提供。

3.4运行大规模实验

对于大规模实验,例如为ImageNet学习网络,强烈建议使用NVIDIA GPU(至少6GB内存)和足够的CPU和磁盘速度。 例如,要在ImageNet上训练,我们建议如下: 
1.下载ImageNet数据http://www.imagenet.org/challenges/LSVRC。 安装它在某个地方,并从数据/ imagenet12链接到它 
2.考虑预处理数据以将所有图像转换为高度为256像素。这可以通过提供的utils / preprocess-imagenet.sh脚本来完成。 在这里方式,训练不必每次都调整图像的大小。 不要忘记指向将训练代码转换为预处理数据。 
3.考虑将数据集复制到RAM磁盘(前提是您有足够的内存),以便更快地访问。 不要忘记将训练代码指向此副本。 
4.编译MatConvNet与GPU支持。 有关说明,请参阅主页。 
一旦你的设置准备好了,你应该能够运行examples /cnn_imagenet(编辑并根据需要更改任何标志以启用GPU支持和多个映像预取线程)。如果一切顺利,你应该期望能够训练与200-300图像/秒。

这篇关于MatConvnet工具箱文档翻译理解(4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445195

相关文章

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。