我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 语义合一 >

Python深度学习-Keras应用-计算机视觉

归档日期:08-07       文本归类:语义合一      文章编辑:爱尚语录

  W:输入数据体尺寸,F:卷积层中神经元感知域,S:步长,P:零填充的数量。

  对于 Conv2D 层,可以通过 padding 参数来设置填充,这个参数有两个取值:“valid” 表示不使用填充(只使用有效的窗口位置);“same” 表示“填充后输出的宽度和高度与输入相同”。padding 参数的默认值为 “valid”。

  使用很少的数据来训练一个图像分类模型,这是很常见的情况。来看一个实例,我们将重点讨论猫狗图像分类,数据集中包含 4000 张猫和狗的图像 (2000 张猫的图像,2000 张狗的图像)。我们将 2000 张图像用于训练,1000 张用于验证,1000 张用于测试。

  这个数据集包含 25 000 张猫狗图像(每个类别都有 12 500 张),大小为 543MB(压缩后)。下载数据并解压之后,你需要创建一个新数据集,其中包含三个子集:每个类别各 1000 个样本的训练集、每个类别各 500 个样本的验证集和每个类别各 500 个样本的测试集。

  每个分组中两个类别的样本数相同,这是一个平衡的二分类问题,分类精度可作为衡量成功的指标。

  Keras有一个图像处理辅助工具的模块,位于 keras.preprocessing.image。特别地,它包含ImageDataGenerator 类,可以快速创建 Python 生成器,能够将硬盘上的图像文件自动转换为预处理好的张量批量。

  过拟合的原因是学习样本太少,导致无法训练出能够泛化到新数据的模型。如果拥有无限的数据,那么模型能够观察到数据分布的所有内容,这样就永远不会过拟合。数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加(augment)样本。其目标是,模型在训练时不会两次查看完全相同的图像。这让模型能够观察到数据的更多内容,从而具有更好的泛化能力。

  这里只选择了几个参数(想了解更多参数,请查阅 Keras 文档)。我们来快速介绍一下这些参数的含义.

  类器对应于 ImageNet 的 1000 个类别。因为我们打算使用自己的密集连接分

  最后的特征图形状为 (512,4, 4)。我们将在这个特征上添加一个密集连接分类器。

  在你的数据集上运行卷积基,将输出保存成硬盘中的 Numpy 数组,然后用这个数据作为输入,输入到独立的密集连接分类器中(与本书第一部分介绍的分类器类似)。这种方法速度快,计算代价低,因为对于每个输入图像只需运行一次卷积基,而卷积基是目前流程中计算代价最高的。但出于同样的原因,这种方法不允许你使用数据增强。

  在顶部添加 Dense 层来扩展已有模型(即 conv_base),并在输入数据上端到端地运行整个模型。这样你可以使用数据增强,因为每个输入图像进入模型时都会经过卷积基。但出于同样的原因,这种方法的计算代价比第一种要高很多。

  在编译和训练模型之前,一定要“冻结”卷积基。冻结(freeze)一个或多个层是指在训练过程中保持其权重不变。如果不这么做,那么卷积基之前学到的表示将会在训练过程中被修改。因为其上添加的 Dense 层是随机初始化的,所以非常大的权重更新将会在网络中传播,对之前学到的表示造成很大破坏。

  如此设置之后,只有添加的两个 Dense 层的权重才会被训练。总共有 4 个权重张量,每层2 个(主权重矩阵和偏置向量)。注意,为了让这些修改生效,你必须先编译模型。如果在编译之后修改了权重的 trainable 属性,那么应该重新编译模型,否则这些修改将被忽略。

  另一种广泛使用的模型复用方法是模型微调(fine-tuning),与特征提取互为补充。对于用于特征提取的冻结的模型基,微调是指将其顶部的几层“解冻”,并将这解冻的几层和新增加的部分(本例中是全连接分类器)联合训练。之所以叫作微调,是因为它只是略微调整了所复用模型中更加抽象的表示,以便让这些表示与手头的问题更加相关。

  前面说过,冻结 VGG16 的卷积基是为了能够在上面训练一个随机初始化的分类器。同理,只有上面的分类器已经训练好了,才能微调卷积基的顶部几层。如果分类器没有训练好,那么训练期间通过网络传播的误差信号会特别大,微调的几层之前学到的表示都会被破坏。因此,微调网络的步骤如下。

  你在做特征提取时已经完成了前三个步骤。我们继续进行第四步:先解冻 conv_base,然后冻结其中的部分层。

  我们将微调最后三个卷积层,也就是说,直到 block4_pool 的所有层都应该被冻结,

  为什么不微调更多层?为什么不微调整个卷积基?你当然可以这么做,但需要考虑以下几点。

  卷积基中更靠底部的层编码的是更加通用的可复用特征,而更靠顶部的层编码的是更专业化的特征。微调这些更专业化的特征更加有用,因为它们需要在你的新问题上改变用途。微调更靠底部的层,得到的回报会更少。

  训练的参数越多,过拟合的风险越大。卷积基有 1500 万个参数,所以在你的小型数据集上训练这么多参数是有风险的。

  因此,在这种情况下,一个好策略是仅微调卷积基最后的两三层。我们从上一个例子结束的地方开始,继续实现此方法。

  可视化卷积神经网络的中间输出(中间激活):有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义。

  可视化卷积神经网络的过滤器:有助于精确理解卷积神经网络中每个过滤器容易接受的视觉模式或视觉概念。

  可视化图像中类激活的热力图:有助于理解图像的哪个部分被识别为属于某个类别,从而可以定位图像中的物体。

  可视化中间激活,是指对于给定输入,展示网络中各个卷积层和池化层输出的特征图(层的输出通常被称为该层的激活,即激活函数的输出)。这让我们可以看到输入如何被分解为网络学到的不同过滤器。我们希望在三个维度对特征图进行可视化:宽度、高度和深度(通道)。每个通道都对应相对独立的特征,所以将这些特征图可视化的正确方法是将每个通道的内容分别绘制成二维图像。

  为了提取想要查看的特征图,我们需要创建一个 Keras 模型,以图像批量作为输入,并输出所有卷积层和池化层的激活。为此,我们需要使用 Keras 的 Model 类。模型实例化需要两个参数:一个输入张量(或输入张量的列表)和一个输出张量(或输出张量的列表)。得到的类是一个Keras 模型,就像你熟悉的 Sequential 模型一样,将特定输入映射为特定输出。Model 类允许模型有多个输出,这一点与 Sequential 模型不同。

  想要观察卷积神经网络学到的过滤器,另一种简单的方法是显示每个过滤器所响应的视觉模式。这可以通过在输入空间中进行梯度上升来实现:从空白输入图像开始,将梯度下降应用于卷积神经网络输入图像的值,其目的是让某个过滤器的响应最大化。得到的输入图像是选定过滤器具有最大响应的图像。

  这个过程很简单:我们需要构建一个损失函数,其目的是让某个卷积层的某个过滤器的值最大化;然后,我们要使用随机梯度下降来调节输入图像的值,以便让这个激活值最大化。例如,对于在ImageNet上预训练的VGG16网络,其block3_conv1层第0个过滤器激活的损失如下所示。

  为了实现梯度下降,我们需要得到损失相对于模型输入的梯度。为此,我们需要使用 Keras的 backend 模块内置的 gradients 函数。

  本文是针对中国科学院计算所山世光教授于2017年1月7日于北京师范大学所做的《深度学习在计算机视觉中的应用与前景》讲座的内容总结梳理。1视觉智能的内涵计算机视觉系统的任务就是像人一样描述摄像机拍摄到的...博文来自:Vinicier的专栏

  1.图像分类:卷积神经网络CNN图像分类概念首先,图像分类是解决是什么的问题?如下图,给定一幅图片,网络能够给出“最像”什么的概率:图像分类使用的技术•卷积神经网络CNN它是计算机视觉中的基础网络,有...博文来自:Jack_Kuo的博客

  目前CNN在图像分类领域是做的最好的,其次是物体检测领域,图像分割、图像标准、图像生成这三个领域也在蓬勃发展,发展速度很快,各种paper层出不穷,发展空间巨大。...博文来自:zchang81的博客

  近年来,深度学习被应用到越来越多的领域,在艺术创作里,显得尤为有趣,艺术风格迁移可以轻松地创建梵高、莫奈以及任何艺术家风格的图像。这场Chat主要介绍深度学习在艺术风格迁移领域中的应用,并通过算法详解...博文来自:GitChat

  1、图像分类与KNN1.1图像分类1.1.2图像识别的难点:类内形变+类间相似**1.1.3图像识别的途径1.1.4机器学习解决图像分类的流程1.2最近邻分类器(NearestNeighborClas...博文来自:呆呆的猫的博客

  计算机视觉领域正在从统计方法转向深度学习神经网络方法。计算机视觉中仍有许多具有挑战性的问题需要解决。然而,深度学习方法正在针对某些特定问题取得最新成果。在最基本的问题上,最有趣的不仅仅是深度学习模型的...博文来自:VictorZhang

  计算机识别可以给智能交通带来什么我认为计算机视觉能给交通带来的主要有如下几个方面:第一个是感知,对于我们车辆而言就是车辆的检测,第二个是车辆身份的识别,第三是车辆身份的比对,第四个是车辆的行为分析,第...博文来自:有些代码不应该被忘记

  深度学习与计算机视觉入门系列(中)数据嗨客最近发布了一个深度学习系列,觉得还不错,主要对深度学习与计算机视觉相关内容做了系统的介绍,看了一遍,在这里做一下笔记。目录深度学习与计算机视觉入门系列(中)目...博文来自:Well~

  Keras快速上手:基于Python的深度学习实战代码.tar.gz Keras快速上手:基于Python的深度学习实战代码.tar.gz Keras快速上手:基于Python的深度学习实战代码.tar.gz

  深度学习与计算机视觉 算法原理、框架应用与代码实现.pdf+高清版+精美书签编排

  1.  Keras是什么?Keras是一个基于Python语言编写的高度抽象与模块化的深度学习库,其最主要的优势在于对初学者友好,用户直接调用封装好的模块即可快速完成原型设计与验证。Keras的底层可...博文来自:诗眼天涯的专栏

  本文为《Python深度学习》的学习笔记。第5章深度学习用于计算机视觉5.1 卷积神经网络简介5.1.1卷积运算   5.1.2最大池化运算5.2在小型数据集从头开始训练一个卷积神经网络5.2.1深度...博文来自:gdtop的个人笔记

  目录0如果你觉得这个页面广告太多,请点击下面教程(我写的)去广告1网络拆分,一个网络里面有什么,作用是什么1.0基础知识,从零开始30分钟明白深度学习怎么学习的,权重是什么,什么是梯度下降,损失怎么计...博文来自:乱七八糟的笔记

  引言在今年的神经网络顶级会议NIPS2016上,深度学习三大牛之一的YannLecun教授给出了一个关于机器学习中的有监督学习、无监督学习和增强学习的一个有趣的比喻,他说:如果把智能(Intellig...博文来自:u010900574的专栏

  机器学习、深度学习、计算机视觉、自然语言处理及应用案例——干货分享(持续更新……)lql07161、机器学习/深度学习1.1对抗...博文来自:Jason的博客

  1,深度学习的解决对象适合解决数据量大,数据比较规范,但是决策函数高度非线,python文件中的__all__的作用它是一个string元素组成的list变量,定义了当你使用 from&am...博文来自:Cicome的博客

  对于刚入门深度学习的小伙伴,这是一本相当不错的keras学习资料。基础深度框架学习。

  本书从原理到实战、深入浅出的介绍了 Facebook人工智能利器Pytorch的卓越表现,只要认真读完本书,你就能 掌握Pytorch的使用技巧了。本书具有很强的实战性。

  深度学习与计算机视觉 算法原理 框架应用与代码实现-高清-2017年8月

  深度学习基于python和tensorflow作为tensoflow的初学者,跟着《深度学习基于python语言和tensorflow平台》这本书,记录自己的一些学习过程和困惑吧。第一章人工智能极简历...博文来自:的博客

  《深度学习与计算机视觉算法原理、框架应用与代码实现.pdf》PDF高清完整版免费下载下载:本书全面介绍了深...博文来自:weixin_33912453的博客

  摘要:随着计算机等技术的不断发展,计算机视觉技术被广泛运用到各个领域中。与此同时,随着人口数量的增长、城市化进程导致耕地面积的减少,农业向着高质量、高产量方向的发展成为关键。将计算机视觉技术应用在农业...博文来自:MrPhD的博客

  首先,本文从计算机视觉领域介绍attention机制,主要是在图像上的应用,会从总体motivation,具体的文章,以及相应的代码实现进行描述。    本文背景部分,大量参考了 https:...博文来自:Biyoner的博客

  CV中的物体检测,可以把前方一辆车用2D的框框起来,这一步,物体检测就算完成了。但这个框对自动驾驶决策而言,直接意义却不大。这个框只能告诉车前方有什么,但是对驾驶决策而言,更重要的是这个物体的大小、当...博文来自:鹅城视觉驿站

  keras自然语言处理,使用Keras在Python中创建和评估深度学习神经网络。

  深度学习:Python 教程:使用 Keras、Python、Theano 和 TensorFlow 开发深度学习模型

  本书由 Keras 之父、现任 Google 人工智能研究员的弗朗索瓦 • 肖莱(François Chollet)执笔,详尽介 绍了用 Python 和 Keras 进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。

  Python深度学习实战 基于tensorflow和keras的聊天机器人以及人脸、物体和语音识别这本书开拓在人工智能领域的视野,书本及代码简单通俗易懂。

  全栈工程师开发手册(作者:栾鹏)python教程全解一、网络层keras的层主要包括:常用层(Core)、卷积层(Convolutional)、池化层(Pooling)、局部连接层、递归层(Recur...博文来自:全栈工程师开发手册(原创)

本文链接:http://furymagazine.com/yuyiheyi/227.html