From ea70f28a2e7e19066d441db3f48f79c6c794bd29 Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Thu, 27 Aug 2020 23:02:45 +0800 Subject: [PATCH] 2020-08-27 23:02:45 --- docs/handson-tl-py/8.md | 8 ++--- docs/handson-tl-py/9.md | 76 ++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/docs/handson-tl-py/8.md b/docs/handson-tl-py/8.md index 1172c9f7..1168c63c 100644 --- a/docs/handson-tl-py/8.md +++ b/docs/handson-tl-py/8.md @@ -168,7 +168,7 @@ plt.tight_layout() ![](img/a40c9f46-fc4a-4011-81c8-82581345bdbc.png) -您可以在上图中清楚地看到不同的音频数据样本及其源标签和相应的音频波形图。 这描绘了一些有趣的见解。 **engine_idling** ,**手提凿岩机**和 **air_conditioner** 等音源通常具有恒定的声音,不会随时间变化。 因此,您可以注意到波形中的振幅恒定。 **警笛**和 **car_horn** 通常也具有恒定的音频波形,并具有间歇性的幅度增加。 **gun_shot** 通常在开始时会发出很大的声音,然后保持沉默。 **dog_bark** 间歇地进入。 因此,除了静音以外,声音还具有短的高振幅间隔。 您还能找到更多有趣的模式吗? +您可以在上图中清楚地看到不同的音频数据样本及其源标签和相应的音频波形图。 这描绘了一些有趣的见解。 `engine_idling`,`jackhammer`和`air_conditioner`等音源通常具有恒定的声音,不会随时间变化。 因此,您可以注意到波形中的振幅恒定。 `siren`和`car_horn`通常也具有恒定的音频波形,并具有间歇性的幅度增加。`gun_shot`通常在开始时会发出很大的声音,然后保持沉默。 `dog_bark`间歇地进入。 因此,除了静音以外,声音还具有短的高振幅间隔。 您还能找到更多有趣的模式吗? 音频数据的另一种有趣的可视化技术是声谱图。 通常,声谱图是一种视觉表示技术,用于表示音频数据中的频谱。 它们也被普遍称为**超声检查仪**和**语音图**。 让我们将音频样本可视化为频谱图: @@ -188,7 +188,7 @@ plt.tight_layout() ![](img/c309828b-41bc-450c-a72a-af65ae9e4d49.png) -我们可以看到如何用频谱图将音频数据表示为很好的图像表示形式,这对于像**卷积神经网络**(**CNN**)这样的模型很有用,因为 可以肯定地看到不同音频源在声谱图中存在明显差异。 但是,我们将使用梅尔谱图,它通常比基本谱图更好,因为它代表了梅尔标度的谱图。 名称 **mel** 来自单词 *melody* 。 这表明比例尺基于音高比较。 因此,梅尔音阶是对音高的感知尺度,听众已将其判断为彼此之间的距离相等。 如果我们使用 CNN 从这些频谱图中提取特征,这将非常有用。 以下代码段描绘了梅尔频谱图: +我们可以看到如何用频谱图将音频数据表示为很好的图像表示形式,这对于像**卷积神经网络**(**CNN**)这样的模型很有用,因为 可以肯定地看到不同音频源在声谱图中存在明显差异。 但是,我们将使用梅尔谱图,它通常比基本谱图更好,因为它代表了梅尔标度的谱图。 名称 **mel** 来自单词 *melody*。 这表明比例尺基于音高比较。 因此,梅尔音阶是对音高的感知尺度,听众已将其判断为彼此之间的距离相等。 如果我们使用 CNN 从这些频谱图中提取特征,这将非常有用。 以下代码段描绘了梅尔频谱图: ```py i = 1 @@ -314,7 +314,7 @@ def windows(data, window_size): 这个想法来自 Karol J. Piczak 的出色论文,[《具有卷积神经网络的环境声音分类》](https://ieeexplore.ieee.org/document/7324337/)(IEEE2015)。他将梅尔频谱图用于一般必要的特征,CNN 可以使用这些特征来进行特征提取。 但是,我们已经考虑了对最终特征图的一些其他转换。 -第一步是将帧(列)的总数定义为 **64** ,将波段(行)的总数定义为 **64** ,这形成了每个特征图的尺寸(64 x 64)。 然后,基于此,我们提取音频数据的窗口,从每个音频数据样本中形成子样本。 +第一步是将帧(列)的总数定义为 **64** ,将波段(行)的总数定义为 **64**,这形成了每个特征图的尺寸(64 x 64)。 然后,基于此,我们提取音频数据的窗口,从每个音频数据样本中形成子样本。 考虑每个音频子样本,我们首先创建一个梅尔声谱图。 由此,我们创建了一个对数缩放的梅尔频谱图,作为特征图之一,音频子样本的谐波分量和敲击分量的平均特征图(再次对数缩放)以及对数缩放的增量或导数 梅尔频谱图作为第三特征图。 这些特征图的每一个都可以表示为 64 x 64 图像,并且通过组合它们,我们可以为每个音频子样本获得尺寸为(64、64、3)的 3-D 特征图。 现在,为该工作流程定义函数: @@ -706,7 +706,7 @@ Epoch 50/50 18300/18300 - 1s - loss: 0.2631 - acc: 0.9197 - val_loss: 0.3887 - val_acc: 0.8890 ``` -我们获得的验证准确度接近 **89%** ,这非常好,看起来很有希望。 我们还可以绘制模型的整体精度图和损耗图,以更好地了解事物的外观,如下所示: +我们获得的验证准确度接近 **89%**,这非常好,看起来很有希望。 我们还可以绘制模型的整体精度图和损耗图,以更好地了解事物的外观,如下所示: ```py f, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4)) diff --git a/docs/handson-tl-py/9.md b/docs/handson-tl-py/9.md index 5e4ca649..c25b3c0b 100644 --- a/docs/handson-tl-py/9.md +++ b/docs/handson-tl-py/9.md @@ -13,9 +13,9 @@ 在详细介绍神经 DeepDream 之前,让我们看一下人类所经历的类似行为。 您是否曾经尝试过寻找云中的形状,电视机中的抖动和嘈杂信号,甚至看过一张被烤面包烤成的面孔? -Pareidolia 是一种心理现象,使我们看到随机刺激中的模式。 人类倾向于感知实际上不存在的面孔或样式的趋势。 这通常导致将人的特征分配给对象。 请注意,看到不存在的模式(假阳性)相对于看不到存在的模式(假阴性)对进化结果的重要性。 例如,看到没有狮子的狮子很少会致命。 但是,没有看到有一只的掠食性狮子,那当然是致命的。 +Pareidolia 是一种心理现象,使我们看到随机刺激中的模式。 人类倾向于感知实际上不存在的面孔或风格的趋势。 这通常导致将人的特征分配给对象。 请注意,看到不存在的模式(假阳性)相对于看不到存在的模式(假阴性)对进化结果的重要性。 例如,看到没有狮子的狮子很少会致命。 但是,没有看到有一只的掠食性狮子,那当然是致命的。 -pareidolia 的神经学基础主要位于大脑深处的大脑颞叶区域,称为**梭状回(HTG1),在此区域,人类和其他动物的神经元专用于识别面部和其他物体。** +pareidolia 的神经学基础主要位于大脑深处的大脑颞叶区域,称为**梭状回**,在此区域,人类和其他动物的神经元专用于识别面部和其他物体。 # 计算机视觉中的算法异同 @@ -382,59 +382,59 @@ save_img(img, fname='final_dream.png') 在本章中,我们学习了计算机视觉中的算法稀疏。 我们已经解释了如何通过各种可视化技术来解释 CNN 模型,例如基于前向通过的激活可视化,基于梯度上升的过滤器可视化。 最后,我们介绍了 DeepDream 算法,该算法再次是对基于梯度上升的可视化技术的略微修改。 DeepDream 算法是将迁移学习应用于计算机视觉或图像处理任务的示例。 -在下一章中,我们将看到更多类似的应用程序,它们将重点放在样式转换上。 +在下一章中,我们将看到更多类似的应用程序,它们将重点放在风格转换上。 # 风格迁移 -绘画需要特殊技能,只有少数人已经掌握。 绘画呈现出内容和风格的复杂相互作用。 另一方面,照片是视角和光线的结合。 当两者结合时,结果是惊人的和令人惊讶的。 该过程称为**艺术风格转移**。 以下是一个示例,其中输入图像是德国图宾根的 Neckarfront,风格图像是 Vincent van Gogh 着名的画作 *The Starry Night* 。 有趣,不是吗? 看一下以下图像: +绘画需要特殊技能,只有少数人已经掌握。 绘画呈现出内容和风格的复杂相互作用。 另一方面,照片是视角和光线的结合。 当两者结合时,结果是惊人的和令人惊讶的。 该过程称为**艺术风格转移**。 以下是一个示例,其中输入图像是德国图宾根的 Neckarfront,风格图像是 Vincent van Gogh 着名的画作《星空》。 有趣,不是吗? 看一下以下图像: ![](img/794949a4-3e20-4ad0-8d38-060bc707b82a.png) -左图:描绘德国蒂宾根 Neckarfront 的原始照片。 右图:为相应生成的图像提供样式的绘画(插图:Vincent van Gogh 的《星夜》)。 来源:*一种艺术风格的神经算法*,Gatys 等人。 (arXiv:1508.06576v2) +左图:描绘德国蒂宾根 Neckarfront 的原始照片。 右图:为相应生成的图像提供风格的绘画(插图:Vincent van Gogh 的《星夜》)。 来源:《一种艺术风格的神经算法》(Gatys 等人,arXiv:1508.06576v2) -如果您仔细查看前面的图像,则右侧的绘画风格图像似乎已经从左侧的照片中拾取了内容。 绘画的样式,颜色和笔触样式产生了最终结果。 令人着迷的结果是 Gatys 等人在论文[《一种用于艺术风格的神经算法》](https://arxiv.org/abs/1508.06576)中提出的一种迁移学习算法的结果。 我们将从实现的角度讨论本文的复杂性,并了解如何自己执行此技术。 +如果您仔细查看前面的图像,则右侧的绘画风格图像似乎已经从左侧的照片中拾取了内容。 绘画的风格,颜色和笔触风格产生了最终结果。 令人着迷的结果是 Gatys 等人在论文[《一种用于艺术风格的神经算法》](https://arxiv.org/abs/1508.06576)中提出的一种迁移学习算法的结果。 我们将从实现的角度讨论本文的复杂性,并了解如何自己执行此技术。 -在本章中,我们将专注于利用深度学习和传递学习来构建神经样式传递系统。 本章重点关注的领域包括: +在本章中,我们将专注于利用深度学习和传递学习来构建神经风格传递系统。 本章重点关注的领域包括: -* 了解神经样式转换 +* 了解神经风格转换 * 图像预处理方法 * 建筑损失功能 * 构造自定义优化器 * 风格迁移实战 -我们将涵盖有关神经风格迁移,损失函数和优化的理论概念。 除此之外,我们将使用动手方法来实现我们自己的神经样式转换模型。 本章的代码可在 [GitHub 存储库](https://github.com/dipanjanS/hands-on-transfer-learning-with-python)的第 10 章文件夹中快速参考。 请根据需要参考本章。 +我们将涵盖有关神经风格迁移,损失函数和优化的理论概念。 除此之外,我们将使用动手方法来实现我们自己的神经风格转换模型。 本章的代码可在 [GitHub 存储库](https://github.com/dipanjanS/hands-on-transfer-learning-with-python)的第 10 章文件夹中快速参考。 请根据需要参考本章。 -# 了解神经样式转换 +# 了解神经风格转换 -**神经风格迁移**是将参考图像的**样式**应用于特定目标图像的过程,以使目标图像的原始**内容**保持不变。 在这里,样式定义为参考图像中存在的颜色,图案和纹理,而内容定义为图像的整体结构和更高层次的组件。 +**神经风格迁移**是将参考图像的**风格**应用于特定目标图像的过程,以使目标图像的原始**内容**保持不变。 在这里,风格定义为参考图像中存在的颜色,图案和纹理,而内容定义为图像的整体结构和更高层次的组件。 -在此,主要目的是保留原始目标图像的内容,同时在目标图像上叠加或采用参考图像的样式。 为了从数学上定义这个概念,请考虑三个图像:原始内容(表示为 **c**),参考样式(表示为 **s**)和生成的图像(表示为 **g**)。 我们需要一种方法来衡量在内容方面, *c* 和 *g* 不同的图像的程度。 同样,就输出的样式特征而言,与样式图像相比,输出图像应具有较小的差异。 形式上,神经样式转换的目标函数可以表述为: +在此,主要目的是保留原始目标图像的内容,同时在目标图像上叠加或采用参考图像的风格。 为了从数学上定义这个概念,请考虑三个图像:原始内容(表示为`c`),参考风格(表示为`s`)和生成的图像(表示为`g`)。 我们需要一种方法来衡量在内容方面, `c`和`g`不同的图像的程度。 同样,就输出的风格特征而言,与风格图像相比,输出图像应具有较小的差异。 形式上,神经风格转换的目标函数可以表述为: ![](img/f6f9d3f8-d00f-414c-bd48-83905e444b82.png) -此处,*α*和*β*是用于控制内容和样式成分对整体损失的影响的权重。 此描述可以进一步简化,并表示如下: +此处,`α`和`β`是用于控制内容和风格成分对整体损失的影响的权重。 此描述可以进一步简化,并表示如下: ![](img/1f77aa7c-844e-4579-b42b-f5febbdfa09b.png) 在这里,我们可以根据前面的公式定义以下组件: -* `dist`是规范函数; 例如,L 2 规范距离 -* `style(...)`是用于为参考样式和生成的图像计算样式表示的函数 +* `dist`是规范函数; 例如,L2 规范距离 +* `style(...)`是用于为参考风格和生成的图像计算风格表示的函数 * `content(...)`是一种功能,可为原始内容和生成的图像计算内容的表示形式 -* *I c* , *I s* 和 *I g* ,并分别生成图像 +* `I[c]`,`I[s]`和`I[g]`,并分别生成图像 -因此,最小化此损失会导致*样式(I g )*接近*样式(I s )*,以及 *含量(I g )*接近*含量(I c )*。 这有助于我们达成有效的样式转换所需的规定。 我们将尝试最小化的损失函数包括三个部分: 即将讨论的**内容损失**,**样式损失**和**总变化损失**。 关键思想或目标是保留原始目标图像的*内容*,同时在目标图像上叠加或采用参考图像的*样式*。 此外,在神经样式转换的背景下,您应该记住以下几点: +因此,最小化此损失会导致风格(`I[g]`)接近风格(`I[s]`),以及内容(`I[g]`)接近内容(`I[c]`)。 这有助于我们达成有效的风格转换所需的规定。 我们将尝试最小化的损失函数包括三个部分: 即将讨论的**内容损失**,**风格损失**和**总变化损失**。 关键思想或目标是保留原始目标图像的*内容*,同时在目标图像上叠加或采用参考图像的*风格*。 此外,在神经风格转换的背景下,您应该记住以下几点: -* **样式**可以定义为参考图像中存在的调色板,特定图案和纹理 +* **风格**可以定义为参考图像中存在的调色板,特定图案和纹理 * **内容**可以定义为原始目标图像的整体结构和更高级别的组件 -到目前为止,我们知道深度学习对于计算机视觉的真正威力在于利用诸如深层**卷积神经网络**(**CNN**)模型之类的模型,这些模型可用于提取正确的图像 构建这些损失函数时的表示形式。 在本章中,我们将使用迁移学习的原理来构建用于神经风格迁移的系统,以提取最佳特征。 在前面的章节中,我们已经讨论了与计算机视觉相关的任务的预训练模型。 在本章中,我们将再次使用流行的 VGG-16 模型作为特征提取器。 执行神经样式转换的主要步骤如下所示: +到目前为止,我们知道深度学习对于计算机视觉的真正威力在于利用诸如深层**卷积神经网络**(**CNN**)模型之类的模型,这些模型可用于提取正确的图像 构建这些损失函数时的表示形式。 在本章中,我们将使用迁移学习的原理来构建用于神经风格迁移的系统,以提取最佳特征。 在前面的章节中,我们已经讨论了与计算机视觉相关的任务的预训练模型。 在本章中,我们将再次使用流行的 VGG-16 模型作为特征提取器。 执行神经风格转换的主要步骤如下所示: -* 利用 VGG-16 帮助计算样式,内容和生成图像的图层激活 +* 利用 VGG-16 帮助计算风格,内容和生成图像的图层激活 * 使用这些激活来定义前面提到的特定损失函数 * 最后,使用梯度下降来最大程度地减少总损耗 -如果您想更深入地研究神经样式转换背后的核心原理和理论概念,建议您阅读以下文章: +如果您想更深入地研究神经风格转换背后的核心原理和理论概念,建议您阅读以下文章: * `A Neural Algorithm of Artistic Style, by Leon A. Gatys, Alexander S. Ecker, and Matthias Bethge (https://arxiv.org/abs/1508.06576)` * `Perceptual Losses for Real-Time Style Transfer and Super-Resolution, by Justin Johnson, Alexandre Alahi, and Li Fei-Fei (https://arxiv.org/abs/1603.08155)` @@ -468,7 +468,7 @@ def deprocess_image(x): return x ``` -当我们要编写自定义损失函数和操作例程时,我们将需要定义某些占位符。 请记住,`keras`是一个利用张量操作后端(例如`tensorflow`,`theano`和`CNTK`)执行繁重工作的高级库。 因此,这些占位符提供了高级抽象来与基础张量对象一起使用。 以下代码段为样式,内容和生成的图像以及神经网络的输入张量准备了占位符: +当我们要编写自定义损失函数和操作例程时,我们将需要定义某些占位符。 请记住,`keras`是一个利用张量操作后端(例如`tensorflow`,`theano`和`CNTK`)执行繁重工作的高级库。 因此,这些占位符提供了高级抽象来与基础张量对象一起使用。 以下代码段为风格,内容和生成的图像以及神经网络的输入张量准备了占位符: ```py from keras import backend as K @@ -508,7 +508,7 @@ model = vgg16.VGG16(input_tensor=input_tensor, # 建筑损失功能 -如背景小节所述,神经风格迁移的问题围绕内容和样式的损失函数。 在本小节中,我们将讨论和定义所需的损失函数。 +如背景小节所述,神经风格迁移的问题围绕内容和风格的损失函数。 在本小节中,我们将讨论和定义所需的损失函数。 # 内容丢失 @@ -521,11 +521,11 @@ def content_loss(base, combination): # 风格损失 -关于神经风格转移的原始论文,[《一种由神经科学风格的神经算法》](https://arxiv.org/abs/1508.06576),由 Gatys 等人撰写。利用 CNN 中的多个卷积层(而不是一个)来从参考样式图像中提取有意义的样式和表示,以捕获与外观或样式有关的信息 不论图像内容如何,​​在所有空间尺度上都可以。 样式表示可计算 CNN 不同层中不同要素之间的相关性。 +关于神经风格转移的原始论文,[《一种由神经科学风格的神经算法》](https://arxiv.org/abs/1508.06576),由 Gatys 等人撰写。利用 CNN 中的多个卷积层(而不是一个)来从参考风格图像中提取有意义的风格和表示,以捕获与外观或风格有关的信息 不论图像内容如何,​​在所有空间尺度上都可以。 风格表示可计算 CNN 不同层中不同要素之间的相关性。 -忠于原始论文,我们将利用 **Gram 矩阵**并在由卷积层生成的特征表示上进行计算。 Gram 矩阵计算在任何给定的 conv 层中生成的特征图之间的内积。 内积项与相应特征集的协方差成正比,因此可以捕获趋于一起激活的图层的特征之间的相关性。 这些特征相关性有助于捕获特定空间比例的图案的相关汇总统计信息,这些统计信息与样式,纹理和外观相对应,而不与图像中存在的组件和对象相对应。 +忠于原始论文,我们将利用 **Gram 矩阵**并在由卷积层生成的特征表示上进行计算。 Gram 矩阵计算在任何给定的 conv 层中生成的特征图之间的内积。 内积项与相应特征集的协方差成正比,因此可以捕获趋于一起激活的图层的特征之间的相关性。 这些特征相关性有助于捕获特定空间比例的图案的相关汇总统计信息,这些统计信息与风格,纹理和外观相对应,而不与图像中存在的组件和对象相对应。 -因此,样式损失定义为参考样式的 Gram 矩阵与生成的图像之间的差异的按比例缩放的 Frobenius 范数(矩阵上的欧几里得范数)。 最小化此损失有助于确保参考样式图像中不同空间比例下找到的纹理在生成的图像中相似。 因此,以下代码段基于 Gram 矩阵计算定义了样式损失函数: +因此,风格损失定义为参考风格的 Gram 矩阵与生成的图像之间的差异的按比例缩放的 Frobenius 范数(矩阵上的欧几里得范数)。 最小化此损失有助于确保参考风格图像中不同空间比例下找到的纹理在生成的图像中相似。 因此,以下代码段基于 Gram 矩阵计算定义了风格损失函数: ```py def style_loss(style, combination, height, width): @@ -544,7 +544,7 @@ def style_loss(style, combination, height, width): # 总变化损失 -据观察,仅减少样式和内容损失的优化会导致高度像素化和嘈杂的输出。 为了解决这个问题,引入了总变化损失。 **总变化损失**与*正则化*损失相似。 引入此方法是为了确保生成的图像中的空间连续性和平滑性,以避免产生嘈杂的像素化结果。 在函数中的定义如下: +据观察,仅减少风格和内容损失的优化会导致高度像素化和嘈杂的输出。 为了解决这个问题,引入了总变化损失。 **总变化损失**与*正则化*损失相似。 引入此方法是为了确保生成的图像中的空间连续性和平滑性,以避免产生嘈杂的像素化结果。 在函数中的定义如下: ```py def total_variation_loss(x): @@ -559,7 +559,7 @@ def total_variation_loss(x): # 总损失函数 -在定义了用于神经样式传递的整体损失函数的组成部分之后,下一步就是将这些构造块缝合在一起。 由于内容和样式信息是由 CNN 在网络中的不同深度捕获的,因此我们需要针对每种损失类型在适当的层上应用和计算损失。 我们将对 conv 图层进行 1 到 5 层的样式损失,并为每一层设置适当的权重。 +在定义了用于神经风格传递的整体损失函数的组成部分之后,下一步就是将这些构造块缝合在一起。 由于内容和风格信息是由 CNN 在网络中的不同深度捕获的,因此我们需要针对每种损失类型在适当的层上应用和计算损失。 我们将对 conv 图层进行 1 到 5 层的风格损失,并为每一层设置适当的权重。 这是构建整体损失函数的代码片段: @@ -633,7 +633,7 @@ evaluator = Evaluator(height=img_height, width=img_width) # 风格迁移实战 -难题的最后一步是使用所有构建块并在操作中执行样式转换! 可以从数据目录中获取艺术/样式和内容图像,以供参考。 以下代码片段概述了如何评估损耗和梯度。 我们还按规律的间隔/迭代(`5`,`10`等)写回输出,以了解神经风格迁移的过程如何在经过一定的迭代次数后考虑的图像转换图像,如以下代码段所示: +难题的最后一步是使用所有构建块并在操作中执行风格转换! 可以从数据目录中获取艺术/风格和内容图像,以供参考。 以下代码片段概述了如何评估损耗和梯度。 我们还按规律的间隔/迭代(`5`,`10`等)写回输出,以了解神经风格迁移的过程如何在经过一定的迭代次数后考虑的图像转换图像,如以下代码段所示: ```py from scipy.optimize import fmin_l_bfgs_b @@ -670,7 +670,7 @@ for i in range(iterations): print('Iteration %d completed in %ds' % (i+1, end_time - start_time)) ``` -到现在为止,必须非常明显的是,神经样式转换是一项计算量巨大的任务。 对于所考虑的图像集,在具有 8GB RAM 的 Intel i5 CPU 上,每次迭代花费了 500-1,000 秒(尽管在 i7 或 Xeon 处理器上要快得多!)。 以下代码段显示了我们在 AWS 的 p2.x 实例上使用 GPU 所获得的加速,每次迭代仅需 25 秒! 以下代码片段还显示了一些迭代的输出。 我们打印每次迭代的损失和时间,并在每五次迭代后保存生成的图像: +到现在为止,必须非常明显的是,神经风格转换是一项计算量巨大的任务。 对于所考虑的图像集,在具有 8GB RAM 的 Intel i5 CPU 上,每次迭代花费了 500-1,000 秒(尽管在 i7 或 Xeon 处理器上要快得多!)。 以下代码段显示了我们在 AWS 的 p2.x 实例上使用 GPU 所获得的加速,每次迭代仅需 25 秒! 以下代码片段还显示了一些迭代的输出。 我们打印每次迭代的损失和时间,并在每五次迭代后保存生成的图像: ```py Start of iteration 1 @@ -694,13 +694,13 @@ Image saved as st_res_lotr_iter20.png Iteration 20 completed in 25s ``` -现在,您将学习神经风格迁移模型如何考虑内容图像的风格迁移。 请记住,我们在某些迭代之后为每对样式和内容图像执行了检查点输出。 我们利用`matplotlib`和`skimage`加载并了解我们系统执行的样式转换魔术! +现在,您将学习神经风格迁移模型如何考虑内容图像的风格迁移。 请记住,我们在某些迭代之后为每对风格和内容图像执行了检查点输出。 我们利用`matplotlib`和`skimage`加载并了解我们系统执行的风格转换魔术! -我们将非常受欢迎的*指环王*电影中的以下图像用作我们的内容图像,并将基于花卉图案的精美艺术品用作我们的样式图像: +我们将非常受欢迎的《指环王》电影中的以下图像用作我们的内容图像,并将基于花卉图案的精美艺术品用作我们的风格图像: ![](img/27afcdb0-5ba3-4a05-8278-8ed5112261a8.png) -在以下代码段中,我们将在各种迭代之后加载生成的样式化图像: +在以下代码段中,我们将在各种迭代之后加载生成的风格化图像: ```py from skimage import io @@ -732,19 +732,19 @@ fig.subplots_adjust(top=0.95) t = fig.suptitle('LOTR Scene after Style Transfer') ``` -以下是显示原始图像和每五次迭代后生成的样式图像的输出: +以下是显示原始图像和每五次迭代后生成的风格图像的输出: ![](img/7bb09bf1-7394-43ba-b4a0-a17eee6abe1c.png) -以下是高分辨率的最终样式图像。 您可以清楚地看到花卉图案的纹理和样式是如何在原始*指环王*电影图像中慢慢传播的,并赋予了其良好的复古外观: +以下是高分辨率的最终风格图像。 您可以清楚地看到花卉图案的纹理和风格是如何在原始《指环王》电影图像中慢慢传播的,并赋予了其良好的复古外观: ![](img/58ca16d2-f5bc-48dc-8e18-44aa17afaa25.png) -让我们再举一个风格迁移示例。 下图包含我们的内容图像,即来自黑豹的著名虚构的城市瓦卡达。 风格图片是梵高非常受欢迎的画作 *The Starry Night,*! 我们将在样式传递系统中将它们用作输入图像: +让我们再举一个风格迁移示例。 下图包含我们的内容图像,即来自黑豹的著名虚构的城市瓦卡达。 风格图片是梵高非常受欢迎的画作《星空》! 我们将在风格传递系统中将它们用作输入图像: ![](img/006dc7f4-1cc1-458d-a29d-7229ed1b7c9d.png) -以下是高分辨率的最终样式图像,显示在下面的图像中。 您可以清楚地看到样式绘画中的纹理,边缘,颜色和图案如何传播到城市内容图像中: +以下是高分辨率的最终风格图像,显示在下面的图像中。 您可以清楚地看到风格绘画中的纹理,边缘,颜色和图案如何传播到城市内容图像中: ![](img/6be810e1-6824-4697-a3f4-46705e71d681.png) @@ -754,4 +754,4 @@ t = fig.suptitle('LOTR Scene after Style Transfer') 本章介绍了深度学习领域中一种非常新颖的技术,它利用了深度学习的力量来创造艺术! 确实,数据科学既是一门艺术,也是正确使用数据的科学,而创新则是推动这一发展的事物。 我们介绍了神经风格迁移的核心概念,如何使用有效的损失函数来表示和表达问题,以及如何利用迁移学习的力量和像 VGG-16 这样的预训练模型来提取正确的特征表示。 -计算机视觉领域不断发展,深度学习与迁移学习相结合为创新和构建新颖的应用打开了大门。 本章中的示例应帮助您了解该领域的广泛新颖性,并使您能够走出去并尝试新技术,模型和方法来构建诸如神经样式转换的系统! 随之而来的是有关图像标题和着色的更有趣,更复杂的案例研究。 敬请关注! \ No newline at end of file +计算机视觉领域不断发展,深度学习与迁移学习相结合为创新和构建新颖的应用打开了大门。 本章中的示例应帮助您了解该领域的广泛新颖性,并使您能够走出去并尝试新技术,模型和方法来构建诸如神经风格转换的系统! 随之而来的是有关图像标题和着色的更有趣,更复杂的案例研究。 敬请关注! \ No newline at end of file -- GitLab