提交 62de467f 编写于 作者: W wizardforcel

2020-12-16 22:20:36

上级 1970cee8
......@@ -985,7 +985,7 @@ Tensorboard 的`GRAPHS`部分包含两个网络的图形。 如果网络性能
* **MNIST 字符的生成**:MNIST 数据集包含 60,000 张手写数字图像。 要训​​练复杂的监督学习模型,MNIST 数据集是不够的。 DCGAN 一旦受过训练,将生成可以添加到原始数据集中的新数字。
* **人脸生成**:DCGAN 使用卷积神经网络,非常擅长生成逼真的图像。
* **特征提取器**:训练后,可以使用判别器从中间层提取特征。 这些提取的功能在样式迁移和人脸识别等任务中很有用。 样式迁移涉及生成图像的内部表示,用于计算样式和内容损失。 请参阅[以下论文](https://arxiv.org/pdf/1508.06576.pdf),以了解有关样式转换的更多信息。
* **特征提取器**:训练后,可以使用判别器从中间层提取特征。 这些提取的功能在样式迁移和人脸识别等任务中很有用。 样式迁移涉及生成图像的内部表示,用于计算样式和内容损失。 请参阅[以下论文](https://arxiv.org/pdf/1508.06576.pdf),以了解有关样式迁移的更多信息。
......
......@@ -1090,7 +1090,7 @@ TensorBoard 的`GRAPHS`部分包含两个网络的图形。 如果网络性能
CycleGAN 有许多应用。 在本章中,我们使用了 CycleGAN 将画作转换为照片。 它们还可以在以下情况下使用:
* **样式转换**:例如,将照片转换为绘画,反之亦然,将马的图像转换为斑马,反之亦然,将橘子的图像转换为苹果,反之亦然
* **样式迁移**:例如,将照片转换为绘画,反之亦然,将马的图像转换为斑马,反之亦然,将橘子的图像转换为苹果,反之亦然
* **照片增强**:CycleGAN 可用于增强图片质量
* **季节转换**:例如,将冬天的图片变成夏天的图片,反之亦然
* **游戏风格迁移**:CycleGAN 可用于将游戏 A 的风格迁移到游戏 B
......
......@@ -135,7 +135,7 @@ GAN 的未来是光明的! 我认为在不久的将来有可能会使用 GAN
GAN 已被证明对图像生成任务很有用。 GAN 中的大部分研究目前集中在高分辨率图像生成,文本到图像合成,样式转换,图像到图像翻译以及其他类似任务上。 目前,对于使用 GAN 生成文本的研究还不多。 这是因为 GAN 旨在生成连续的值,因此训练 GAN 以获得离散值确实具有挑战性。 将来, 预测将在文本生成任务中进行更多的研究。
GAN 已被证明对图像生成任务很有用。 GAN 中的大部分研究目前集中在高分辨率图像生成,文本到图像合成,样式迁移,图像到图像翻译以及其他类似任务上。 目前,对于使用 GAN 生成文本的研究还不多。 这是因为 GAN 旨在生成连续的值,因此训练 GAN 以获得离散值确实具有挑战性。 将来, 预测将在文本生成任务中进行更多的研究。
......
......@@ -40,7 +40,7 @@ TensorFlow 是 Google 的开放源代码框架,用于构建机器学习 AI 应
第 3 章,“检测对象及其位置”,快速概述了对象检测,然后向您展示如何设置 TensorFlow 对象检测 API 并使用它来重新训练 SSD-MobileNet 和 Faster RCNN 模型。 我们还将通过手动构建 TensorFlow iOS 库以支持非默认 TensorFlow 操作的方式,向您展示如何在 iOS 或 Android 示例 TensorFlow 应用中使用模型。 最后,我们将向您展示如何训练 YOLO2(另一个流行的对象检测模型),该模型也在示例 TensorFlow Android 应用中使用,以及如何在 iOS 应用中使用它。
第 4 章,“变换具有惊人艺术风格的图片” 首先概述了神经样式转换在过去几年中的快速发展。 然后,它向您展示了如何训练快速的神经样式转换模型,以及如何在 iOS 和 Android 应用中使用它们。 之后,我们将介绍如何在您自己的 iOS 和 Android 应用中使用 TensorFlow Magenta 多样式模型轻松创建令人惊叹的艺术风格。
第 4 章,“变换具有惊人艺术风格的图片” 首先概述了神经样式迁移在过去几年中的快速发展。 然后,它向您展示了如何训练快速的神经样式迁移模型,以及如何在 iOS 和 Android 应用中使用它们。 之后,我们将介绍如何在您自己的 iOS 和 Android 应用中使用 TensorFlow Magenta 多样式模型轻松创建令人惊叹的艺术风格。
第 5 章,“了解简单语音命令”概述了语音识别,并向您展示了如何训练简单语音命令识别模型。 然后,我们将向您展示如何使用 Objective-C 和 Swift 在 Android 和 iOS 中使用该模型。 我们还将介绍有关如何解决移动设备上可能出现的模型加载和运行错误的更多提示。
......
......@@ -12,9 +12,9 @@
总而言之,我们将在本章中介绍以下主题:
* 迁移学习-什么和为什么
* 使用 Inception v3 模型进行再训练
* 使用 MobileNet 模型进行再训练
* 迁移学习 - 什么和为什么
* 将 Inception v3 模型用于再训练
* 将 MobileNet 模型用于再训练
* 在示例 iOS 应用中使用经过重新训练的模型
* 在示例 Android 应用中使用经过重新训练的模型
* 将 TensorFlow 添加到您自己的 iOS 应用中
......@@ -42,7 +42,7 @@
# 使用 Inception v3 模型进行再训练
# 将 Inception v3 模型用于再训练
......@@ -260,7 +260,7 @@ bazel-bin/tensorflow/tools/graph_transforms/transform_graph
# 使用 MobileNet 模型进行再训练
# 将 MobileNet 模型用于再训练
......
......@@ -405,7 +405,7 @@ python object_detection/eval.py \
--eval_dir=eval_dir_mobilenet
```
11. 您可以使用以下命令生成重新训练的图
11. 您可以使用以下命令生成重新训练的图:
```py
python object_detection/export_inference_graph.py \
......
......@@ -4,14 +4,14 @@
自从 2012 年深层神经网络在 AlexNet 赢得 ImageNet 挑战后开始起飞以来,人工智能研究人员一直在将深度学习技术(包括经过预训练的深度 CNN 模型)应用于越来越多的问题领域。 有什么能比创造艺术更有创造力? 一种想法已经提出并实现了,称为神经样式传递,它使您可以利用预训练的深度神经网络模型并传递图像或任何梵高的样式或莫奈的杰作),例如另一张图片(例如个人资料图片或您喜欢的狗的图片),从而创建将图片内容与杰作风格融合在一起的图片。 实际上,有一个名为 Prisma 的 iOS 应用在 2016 年获得了年度最佳应用奖。 在短短几秒钟内,它将以您选择的任何样式转换您的图片。
自从 2012 年深层神经网络在 AlexNet 赢得 ImageNet 挑战后开始起飞以来,人工智能研究人员一直在将深度学习技术(包括经过预训练的深度 CNN 模型)应用于越来越多的问题领域。 有什么能比创造艺术更有创造力? 一种想法已经提出并实现了,称为神经样式传递,它使您可以利用预训练的深度神经网络模型并传递图像或任何梵高的样式或莫奈的杰作),例如另一张图片(例如个人资料图片或您喜欢的狗的图片),从而创建将图片内容与杰作风格融合在一起的图片。 实际上,有一个名为 Prisma 的 iOS 应用在 2016 年获得了年度最佳应用奖。 在短短几秒钟内,它将以您选择的任何样式迁移您的图片。
在本章中,我们将首先概述三种神经样式转换方法,其中一种是原始方法,一种是经过改进的方法,另一种是进一步改进的方法。 然后,我们将详细研究如何使用第二种方法来训练快速神经样式转换模型,该模型可在您的 iOS 和 Android 智能手机中使用,以实现 Prisma 的功能。 接下来,我们将实际在 iOS 应用和 Android 应用中使用该模型,引导您完成从头开始创建此类应用的整个过程。 最后,我们将向您简要介绍 TensorFlow Magenta 开源项目,您可以将其用于基于深度学习构建更多的音乐和艺术生成应用,并向您展示如何使用单个预训练的样式转换模型, 是基于神经样式转换的最新研究进展而创建的,其中包括 26 种很酷的艺术样式,可在您的 iOS 和 Android 应用中获得更快的性能和结果。 总之,本章将涵盖以下主题:
在本章中,我们将首先概述三种神经样式迁移方法,其中一种是原始方法,一种是经过改进的方法,另一种是进一步改进的方法。 然后,我们将详细研究如何使用第二种方法来训练快速神经样式迁移模型,该模型可在您的 iOS 和 Android 智能手机中使用,以实现 Prisma 的功能。 接下来,我们将实际在 iOS 应用和 Android 应用中使用该模型,引导您完成从头开始创建此类应用的整个过程。 最后,我们将向您简要介绍 TensorFlow Magenta 开源项目,您可以将其用于基于深度学习构建更多的音乐和艺术生成应用,并向您展示如何使用单个预训练的样式迁移模型, 是基于神经样式迁移的最新研究进展而创建的,其中包括 26 种很酷的艺术样式,可在您的 iOS 和 Android 应用中获得更快的性能和结果。 总之,本章将涵盖以下主题:
* 神经风格转换-快速概述
* 训练快速的神经风格转换模型
* 在 iOS 中使用快速的神经样式转换模型
* 在 Android 中使用快速的神经样式转换模型
* 神经样式迁移 -- 快速概述
* 训练快速的神经样式迁移模型
* 在 iOS 中使用快速的神经样式迁移模型
* 在 Android 中使用快速的神经样式迁移模型
* 在 iOS 中使用 TensorFlow Magenta 多样式模型
* 在 Android 中使用 TensorFlow Magenta 多样式模型
......@@ -20,17 +20,17 @@
# 神经风格转换 -- 快速概述
# 神经样式迁移 -- 快速概述
使用深度神经网络将图像内容与另一种图像的样式合并的原始思想和算法于 2015 年夏季发表在题为[《艺术风格的神经算法》](https://arxiv.org/abs/1508.06576)的论文中。它是 2014 年 ImageNet 图像识别挑战赛的获胜者,该挑战赛具有 16 个卷积层或特征图,分别代表不同级别的图像内容。 在这种原始方法中,首先将最终传输的图像初始化为与内容图像合并的白噪声图像。 内容损失函数定义为内容图像和结果图像的卷积层`conv4_2`上都被馈入 VGG-19 网络后,特定的一组特征表示形式的平方误差损失。 样式损失函数计算样式图像和所得图像在五个不同卷积层上的总误差差。 然后,将总损失定义为内容损失和样式损失的总和。 在训练期间,损失会降到最低,并生成将一个图像的内容与另一个图像的样式混合在一起的结果图像。
尽管原始神经样式转换算法的结果令人惊叹,但其性能却很差-训练是样式转换图像生成过程的一部分,通常在 GPU 上花费几分钟,在 CPU 上花费约一个小时才能生成良好的图像。 结果。
尽管原始神经样式迁移算法的结果令人惊叹,但其性能却很差-训练是样式迁移图像生成过程的一部分,通常在 GPU 上花费几分钟,在 CPU 上花费约一个小时才能生成良好的图像。 结果。
如果您对原始算法的细节感兴趣,可以在[以下位置](https://github.com/log0/neural-style-painting/blob/master/art.py)阅读该论文以及文档齐全的 Python 实现。我们不会讨论这种原始算法,因为在手机上运行该算法是不可行的,但是尝试该算法很有趣且有用,可以更好地了解如何针对不同的计算机视觉任务使用预训练的深度 CNN 模型。
自然地,在 2016 年,论文中发布了一种“快三个数量级”的新算法,即[《实时样式传递和超分辨率的感知损失》](https://cs.stanford.edu/people/jcjohns/eccv16/),作者是 Justin Johnson 等。 它使用单独的训练过程,并定义了更好的损失函数,这些函数本身就是深度神经网络。 训练后(在下一节中我们将看到,在 GPU 上可能要花费几个小时),使用训练后的模型来生成样式转换的图像在计算机上几乎是实时的,而在智能手机上只需几秒钟。
自然地,在 2016 年,论文中发布了一种“快三个数量级”的新算法,即[《实时样式传递和超分辨率的感知损失》](https://cs.stanford.edu/people/jcjohns/eccv16/),作者是 Justin Johnson 等。 它使用单独的训练过程,并定义了更好的损失函数,这些函数本身就是深度神经网络。 训练后(在下一节中我们将看到,在 GPU 上可能要花费几个小时),使用训练后的模型来生成样式迁移的图像在计算机上几乎是实时的,而在智能手机上只需几秒钟。
使用这种快速神经迁移算法仍然有一个缺点:只能针对特定样式训练模型,因此,要在您的应用中使用不同的样式,必须逐一训练这些样式以为每种样式生成一个模型 。 2017 年发表了一篇名为[《学习风格的艺术表现形式》](https://arxiv.org/abs/1610.07629)的新论文,它发现一个单一的深度神经网络模型可以概括许多不同的样式。 [TensorFlow Magenta 项目](https://github.com/tensorflow/magenta/tree/master/magenta/models/image_stylization)包括具有多种样式的预训练模型,我们将在本章的最后两个部分中看到,在 iOS 和 Android 应用中使用这种模型来产生强大而神奇的艺术效果是多么容易。
......@@ -38,7 +38,7 @@
# 训练快速的神经风格转换模型
# 训练快速的神经样式迁移模型
......@@ -97,7 +97,7 @@ bazel-bin/tensorflow/tools/quantization/quantize_graph \
这会将冻结的图形文件大小从 6.7MB 减小到 1.7MB,这意味着,如果在您的应用中放置 50 种不同风格的 50 个模型,则增加的大小将约为 85MB。 苹果于 2017 年 9 月宣布,蜂窝无线应用下载限制已增加至 150MB,因此用户仍应能够通过蜂窝网络下载具有 50 多种不同样式的应用。
这就是使用样式图像和输入图像来训练和量化快速神经迁移模型的全部步骤。 您可以在步骤 3 中生成的 `test_dir` 目录中签出生成的图像,以查看样式转换的效果。 如果需要,您可以使用[中记录的超参数 https://github.com/jeffxtang/fast-style-transfer/blob/master/docs.md#style](https://github.com/jeffxtang/fast-style-transfer/blob/master/docs.md#style) 进行查看,以及希望样式迁移效果更好。
这就是使用样式图像和输入图像来训练和量化快速神经迁移模型的全部步骤。 您可以在步骤 3 中生成的 `test_dir` 目录中签出生成的图像,以查看样式迁移的效果。 如果需要,您可以使用[中记录的超参数 https://github.com/jeffxtang/fast-style-transfer/blob/master/docs.md#style](https://github.com/jeffxtang/fast-style-transfer/blob/master/docs.md#style) 进行查看,以及希望样式迁移效果更好。
在了解如何在 iOS 和 Android 应用中使用这些模型之前,重要的一点是,您需要记下在第 5 步中使用的,指定为`--in-path`值的图像的确切图像宽度和高度参数,并在 iOS 或 Android 代码中使用图像的宽度和高度值(您会看到多久了),否则在应用中运行模型时,会出现 `Conv2DCustomBackpropInput: Size of out_backprop doesn't match computed`错误 。
......@@ -175,7 +175,7 @@ const int wanted_width = 300;
const int wanted_height = 400;
```
2. iOS 的分派队列用于在非 UI 线程中加载和运行我们的快速神经迁移模型,并在生成样式转换的图像后,将图像发送到 UI 线程进行显示:
2. iOS 的分派队列用于在非 UI 线程中加载和运行我们的快速神经迁移模型,并在生成样式迁移的图像后,将图像发送到 UI 线程进行显示:
```py
dispatch_async(dispatch_get_global_queue(0, 0), ^{
......@@ -246,11 +246,11 @@ return imgScaled;
1. 在 Android Studio 中,选择“文件 | 新增 | 新项目...”,然后输入`FastNeuralTransfer`作为应用名称; 在单击“完成”之前,接受所有默认设置。
2. 创建一个新的`assets`文件夹,如图 2.13 所示,然后将您训练过的快速神经迁移模型从 iOS 应用中拖动(如果您在上一节中尝试过),或者从文件夹`/tf_files`中拖动,如“训练快速神经样式转换模型”部分步骤 7 所示,以及一些测试图像到`assets`文件夹。
2. 创建一个新的`assets`文件夹,如图 2.13 所示,然后将您训练过的快速神经迁移模型从 iOS 应用中拖动(如果您在上一节中尝试过),或者从文件夹`/tf_files`中拖动,如“训练快速神经样式迁移模型”部分步骤 7 所示,以及一些测试图像到`assets`文件夹。
3. 在应用的`build.gradle` 文件中,在 `dependencies` 的末尾添加一行 `compile 'org.tensorflow:tensorflow-android:+'`和。
4. 打开`res/layout/activity_main.xml`文件,在其中删除默认的`TextView`,然后首先添加一个`ImageView`以显示样式转换前后的图像:
4. 打开`res/layout/activity_main.xml`文件,在其中删除默认的`TextView`,然后首先添加一个`ImageView`以显示样式迁移前后的图像:
```py
<ImageView
......@@ -263,7 +263,7 @@ return imgScaled;
app:layout_constraintTop_toTopOf="parent"/>
```
5. 添加一个按钮以启动样式转换操作:
5. 添加一个按钮以启动样式迁移操作:
```py
<Button
......@@ -298,7 +298,7 @@ private static final int WANTED_WIDTH = 300;
private static final int WANTED_HEIGHT = 400;
```
您可以将任何训练有素的模型文件用于`MODEL_FILE``INPUT_NODE``OUTPUT_NODE`的值与我们在 Python 训练脚本中设置并在 iOS 应用中使用的值相同。 同样,`WANTED_WIDTH``WANTED_HEIGHT`与我们在“训练快速神经风格转换模型”部分的第 5 步中使用的`--in-path`图像的宽度和高度相同。
您可以将任何训练有素的模型文件用于`MODEL_FILE``INPUT_NODE``OUTPUT_NODE`的值与我们在 Python 训练脚本中设置并在 iOS 应用中使用的值相同。 同样,`WANTED_WIDTH``WANTED_HEIGHT`与我们在“训练快速神经样式迁移模型”部分的第 5 步中使用的`--in-path`图像的宽度和高度相同。
8. 声明四个实例变量:
......@@ -408,7 +408,7 @@ outputBitmap.setPixels(intValues, 0, outputBitmap.getWidth(), 0, 0, outputBitmap
mTransferredBitmap = Bitmap.createScaledBitmap(outputBitmap, bitmap.getWidth(), bitmap.getHeight(), true);
```
最后,我们向主线程的处理程序发送一条消息,以使其知道显示样式转换图像的时间:
最后,我们向主线程的处理程序发送一条消息,以使其知道显示样式迁移图像的时间:
```py
Message msg = new Message();
......@@ -416,13 +416,13 @@ msg.obj = "Tranfer Processing Done";
mHandler.sendMessage(msg);
```
因此,总共不到 100 行代码,您就有了一个完整的 Android 应用,可以对图像进行惊人的样式转换。 在 Android 设备或虚拟设备上运行该应用,首先将看到一个带有按钮的测试图像,点击该按钮,几秒钟后,您将看到样式转换的图像,如图 4.4 所示:
因此,总共不到 100 行代码,您就有了一个完整的 Android 应用,可以对图像进行惊人的样式迁移。 在 Android 设备或虚拟设备上运行该应用,首先将看到一个带有按钮的测试图像,点击该按钮,几秒钟后,您将看到样式迁移的图像,如图 4.4 所示:
![](img/07ef305b-1e23-4a4c-98f5-faf14f398d65.png)
图 4.4:Android 上原始图像和样式迁移的图像
快速神经样式模型存在的一个问题是,即使量化后每个模型只有 1.7MB,我们仍然需要针对每种样式分别进行训练,并且每个训练的模型只能支持一种样式转换。 幸运的是,这个问题有很好的解决方案。
快速神经样式模型存在的一个问题是,即使量化后每个模型只有 1.7MB,我们仍然需要针对每种样式分别进行训练,并且每个训练的模型只能支持一种样式迁移。 幸运的是,这个问题有很好的解决方案。
......@@ -432,9 +432,9 @@ mHandler.sendMessage(msg);
[TensorFlow Magenta 项目](https://github.com/tensorflow/magenta)允许您使用 10 多种经过预训练的模型来生成新的音乐和图像。 在本节和下一节中,我们将重点介绍使用 Magenta 的图像样式化模型。 您可以单击链接在计算机上安装 Magenta,尽管要在移动应用中使用其炫酷的图像样式迁移模型,也不必安装 Magenta。 基于论文《艺术风格的习得表示》实现的 Magenta 预训练风格转换模型,消除了一个模型只能具有一种风格的限制,并允许多种风格包含在单个模型文件中,您可以选择使用这些样式的任意组合。 您可以在[这个页面](https://github.com/tensorflow/magenta/tree/master/magenta/models/image_stylization)上快速浏览该演示,但可以在此处下载两个预训练的检查点模型。 由于检查点文件中保存了某些`NaN`(不是数字)错误,因此无法直接在您的移动应用中使用。 我们不会详细说明如何删除这些数字并生成可在您的应用中使用的`.pb`模型文件(如果感兴趣,您可以查看[这里](https://github.com/tensorflow/tensorflow/issues/9678)),我们仅使用 TensorFlow Android 示例`tensorflow/examples/android/assets`中包含的经过预训练的`stylize_quantized.pb`模型文件来查看其工作原理。
[TensorFlow Magenta 项目](https://github.com/tensorflow/magenta)允许您使用 10 多种经过预训练的模型来生成新的音乐和图像。 在本节和下一节中,我们将重点介绍使用 Magenta 的图像样式化模型。 您可以单击链接在计算机上安装 Magenta,尽管要在移动应用中使用其炫酷的图像样式迁移模型,也不必安装 Magenta。 基于论文《艺术风格的习得表示》实现的 Magenta 预训练样式迁移模型,消除了一个模型只能具有一种风格的限制,并允许多种风格包含在单个模型文件中,您可以选择使用这些样式的任意组合。 您可以在[这个页面](https://github.com/tensorflow/magenta/tree/master/magenta/models/image_stylization)上快速浏览该演示,但可以在此处下载两个预训练的检查点模型。 由于检查点文件中保存了某些`NaN`(不是数字)错误,因此无法直接在您的移动应用中使用。 我们不会详细说明如何删除这些数字并生成可在您的应用中使用的`.pb`模型文件(如果感兴趣,您可以查看[这里](https://github.com/tensorflow/tensorflow/issues/9678)),我们仅使用 TensorFlow Android 示例`tensorflow/examples/android/assets`中包含的经过预训练的`stylize_quantized.pb`模型文件来查看其工作原理。
如果您确实想训练自己的模型,则可以按照前面的`image_stylization`链接中的训练模型下的步骤进行。 但是请注意,您至少需要 500GB 的可用磁盘空间才能下载 ImageNet 数据集,并需要强大的 GPU 来完成训练。 在本节或下一节中看到代码和结果之后,您更有可能对预训练的`stylize_quantized.pb`模型启用的炫酷样式转换效果感到满意。
如果您确实想训练自己的模型,则可以按照前面的`image_stylization`链接中的训练模型下的步骤进行。 但是请注意,您至少需要 500GB 的可用磁盘空间才能下载 ImageNet 数据集,并需要强大的 GPU 来完成训练。 在本节或下一节中看到代码和结果之后,您更有可能对预训练的`stylize_quantized.pb`模型启用的炫酷样式迁移效果感到满意。
在本章前面创建的 iOS 应用中,执行以下步骤来使用和运行多样式模型:
......@@ -545,7 +545,7 @@ tensorflow::Status run_status = session->Run({{input_layer, image_tensor}, {styl
尽管 TensorFlow Android 示例应用已经具有使用多种样式模型的代码(实际上我们在上一节的 iOS 应用中使用了 Android 示例应用中的模型),但示例应用中与 TensorFlow 相关的代码却与超过 600 行的`StylizeActivity.java`文件中的很多 UI 代码混在一起。 您还可以通过 TensorFlow Android 样式转换[Codelab](https://codelabs.developers.google.com/codelabs/tensorflow-style-transfer-android/index.html) 进行操作,但是代码与 TensorFlow Android 示例应用大致相同。 由于我们已经使用 TensorFlow 快速样式迁移模型实现了 Android 应用的简约实现,因此很有趣的是,我们如何仅需更改几行代码就可以拥有一个强大的多样式样式迁移应用。 这也应该是一种更直观的方法,以了解如何将出色的 TensorFlow 模型添加到现有的 Android 应用中。
尽管 TensorFlow Android 示例应用已经具有使用多种样式模型的代码(实际上我们在上一节的 iOS 应用中使用了 Android 示例应用中的模型),但示例应用中与 TensorFlow 相关的代码却与超过 600 行的`StylizeActivity.java`文件中的很多 UI 代码混在一起。 您还可以通过 TensorFlow Android 样式迁移[Codelab](https://codelabs.developers.google.com/codelabs/tensorflow-style-transfer-android/index.html) 进行操作,但是代码与 TensorFlow Android 示例应用大致相同。 由于我们已经使用 TensorFlow 快速样式迁移模型实现了 Android 应用的简约实现,因此很有趣的是,我们如何仅需更改几行代码就可以拥有一个强大的多样式样式迁移应用。 这也应该是一种更直观的方法,以了解如何将出色的 TensorFlow 模型添加到现有的 Android 应用中。
因此,这就是在我们之前构建的 Android 应用中使用多样式迁移模型所需要的:
......@@ -666,7 +666,7 @@ for (int i = 0; i < NUM_STYLES; ++i) {
在本章中,我们首先概述了自 2015 年以来开发的各种神经样式转换方法。然后,我们展示了如何训练第二代样式转换模型,该模型足够快,可以在几秒钟内在移动设备上运行。 之后,我们介绍了如何在 iOS 应用和 Android 应用中使用该模型,这些方法是从头开始构建的,采用极简方法,总共不到 100 行代码。 最后,我们讨论了如何在 iOS 和 Android 应用中使用 TensorFlow Magenta 多样式神经迁移模型,该模型在单个小模型中包含 26 种惊人的艺术样式。
在本章中,我们首先概述了自 2015 年以来开发的各种神经样式迁移方法。然后,我们展示了如何训练第二代样式迁移模型,该模型足够快,可以在几秒钟内在移动设备上运行。 之后,我们介绍了如何在 iOS 应用和 Android 应用中使用该模型,这些方法是从头开始构建的,采用极简方法,总共不到 100 行代码。 最后,我们讨论了如何在 iOS 和 Android 应用中使用 TensorFlow Magenta 多样式神经迁移模型,该模型在单个小模型中包含 26 种惊人的艺术样式。
在下一章中,我们将探讨另一个在人类或我们最好的朋友演示时被视为智能的任务:能够识别语音命令。 谁不想让我们的狗狗理解“坐下”,“来”,“不”等命令或我们的婴儿对“是”,“停止”或“走”做出回应? 让我们看看我们如何开发与它们一样的移动应用。
......
......@@ -12,7 +12,7 @@
总之,本章将涵盖以下主题:
* 语音识别-快速概述
* 语音识别 -- 快速概述
* 训练简单的命令识别模型
* 在 Android 中使用简单的语音识别模型
* 在带有 Objective-C 的 iOS 中使用简单的语音识别模型
......@@ -430,7 +430,7 @@ runOnUiThread(new Runnable() {
现在执行以下步骤来创建一个新的 iOS 应用以使用语音命令识别模型:
1. 在 Xcode 中创建一个名为 AudioRecognition 的新 Objective-C 应用,并将项目设置为使用 TensorFlow 手动构建的库,如“以惊人的艺术风格转换图片”的步骤 1 中所述。 还将`AudioToolbox.framework``AVFoundation.framework``Accelerate.framework`添加到目标的带库的链接二进制文件。
1. 在 Xcode 中创建一个名为 AudioRecognition 的新 Objective-C 应用,并将项目设置为使用 TensorFlow 手动构建的库,如“以惊人的艺术样式迁移图片”的步骤 1 中所述。 还将`AudioToolbox.framework``AVFoundation.framework``Accelerate.framework`添加到目标的带库的链接二进制文件。
2.`speech_commands_graph.pb`模型文件拖放到项目中。
3.`ViewController.m`的扩展名更改为`mm`,然后添加音频记录和处理所使用的以下标头:
......
......@@ -8,11 +8,11 @@
在本章中,我们将首先回顾基于深度学习的图像字幕模型如何赢得 2015 年 Microsoft COCO(大规模对象检测,分割和字幕数据集),我们在第 3 章,“检测对象及其位置”中简要介绍了该有效模型。 然后,我们将总结在 TensorFlow 中训练模型的步骤,并详细介绍如何准备和优化要在移动设备上部署的复杂模型。 之后,我们将向您展示有关如何构建 iOS 和 Android 应用以使用该模型生成描述图像的自然语言语句的分步教程。 由于该模型同时涉及计算机视觉和自然语言处理,因此您将首次看到两种主要的深度神经网络架构 CNN 和 RNN 如何协同工作,以及如何编写 iOS 和 Android 代码以访问经过训练的网络并进行多个推理。 总而言之,我们将在本章介绍以下主题:
*片字幕-工作原理
*像字幕 -- 工作原理
* 训练和冻结图像字幕模型
* 转换和优化图像字幕模型
* 在 iOS 中使用图字幕模型
* 在 Android 中使用图字幕模型
* 在 iOS 中使用图字幕模型
* 在 Android 中使用图字幕模型
......@@ -448,7 +448,7 @@ bazel-bin/tensorflow/contrib/util/convert_graphdef_memmapped_format \
# 在 iOS 中使用图字幕模型
# 在 iOS 中使用图字幕模型
......@@ -709,7 +709,7 @@ return sentence;
# 在 Android 中使用图字幕模型
# 在 Android 中使用图字幕模型
......@@ -942,7 +942,7 @@ mHandler.sendMessage(msg);
![](img/249e6bc8-7f89-45d4-a217-2cf1c54bf5fe.png)
图 6.9:在 Android 中显示图字幕结果
图 6.9:在 Android 中显示图字幕结果
一些结果与 iOS 结果以及 TensorFlow im2txt 网站上的结果略有不同。 但是它们看起来都不错。 另外,在相对较旧的 Android 设备(例如 Nexus 5)上运行该模型的非映射版本也可以。 但是最好在 Android 中加载映射模型,以查看性能的显着提高,我们可能会在本书后面的章节中介绍。
......
......@@ -17,7 +17,7 @@
因此,在本章中,我们将介绍以下主题:
* 绘画分类工作原理
* 绘画分类 -- 工作原理
* 训练并准备绘画分类模型
* 在 iOS 中使用绘画分类模型
* 在 Android 中使用绘画分类模型
......@@ -111,7 +111,7 @@ drwxr-xr-x 2 jeff jeff 4096 Feb 12 00:11 eval
传递给`Estimator`类的关键参数是名为`model_fn`的模型函数,该函数定义:
* 获取输入张量并创建卷积,RNN 和最终层的函数
* 调用这些函数构建模型的代码
* 调用这些函数构建模型的代码
* 损失,优化器和预测
在返回`tf.estimator.EstimatorSpec`实例之前,`model_fn`函数还具有一个名为`mode`的参数,该参数可以具有以下三个值之一:
......
......@@ -49,7 +49,7 @@ LSTM 只是解决 RNN 已知梯度消失问题的一种 RNN,我们在第 6 章
那么,我们如何使用 RNN 和 LSTM 测试股价预测? 我们将在[这个页面](https://www.alphavantage.co)上使用免费的 API 收集特定股票代码的每日股票价格数据,将其解析为训练集和测试集,并每次向 RNN/LSTM 模型提供一批训练输入(每个训练输入有 20 个时间步长,即,连续 20 天的价格),对模型进行训练,然后进行测试以查看模型在测试数据集中的准确性。 我们将同时使用 TensorFlow 和 Keras API 进行测试,并比较常规 RNN 和 LSTM 模型之间的差异。 我们还将测试三个略有不同的序列输入和输出,看看哪个是最好的:
* 根据过去`N`天预测一天的价格
* 根据过去`N`天预测 M 天的价格
* 根据过去`N`天预测`M`天的价格
* 基于将过去`N`天移动 1 并使用预测序列的最后输出作为第二天的预测价格进行预测
现在让我们深入研究 TensorFlow RNN API 并进行编码以训练模型来预测股票价格,以查看其准确性如何。
......
......@@ -10,7 +10,7 @@
总之,本章将涵盖以下主题:
* GAN –什么以及为什么
* GAN – 什么以及为什么
* 使用 TensorFlow 构建和训练 GAN 模型
* 在 iOS 中使用 GAN 模型
* 在 Android 中使用 GAN 模型
......@@ -148,11 +148,11 @@ python tensorflow/python/tools/freeze_graph.py \
基本上,pix2pix 使用 GAN 将输入图像映射到输出图像。 您可以使用不同类型的输入图像和输出图像来创建许多有趣的图像转换:
* 映射到天线
* 地图到航拍
* 白天到黑夜
* 照片边缘
* 边界到照片
* 黑白图像到彩色图像
* 图像损坏到原始图像
* 损坏的图像到原始图像
* 从低分辨率图像到高分辨率图像
在所有情况下,生成器都将输入图像转换为输出图像,试图使输出看起来像真实的目标图像,判别器将训练集中的样本或生成器的输出作为输入,并尝试告诉它是真实图像还是生成器生成的图像。 自然,与模型相比,pix2pix 中的生成器和判别器网络以更复杂的方式构建以生成手写数字,并且训练还应用了一些技巧来使过程稳定-有关详细信息,您可以阅读本文或较早提供的 TensorFlow 实现链接。 我们在这里仅向您展示如何设置训练集和训练 pix2pix 模型以增强低分辨率图像。
......@@ -469,7 +469,7 @@ No OpKernel was registered to support Op 'FIFOQueueV2' with these attrs. Registe
`runPix2PixBlurryModel`方法中,我们使用`LoadMemoryMappedModel`方法加载`pix2pix_transformed_memmapped.pb`模型文件,并加载测试图像并设置输入张量,其方式与第 4 章,“以惊人的艺术风格转换图片”相同:
`runPix2PixBlurryModel`方法中,我们使用`LoadMemoryMappedModel`方法加载`pix2pix_transformed_memmapped.pb`模型文件,并加载测试图像并设置输入张量,其方式与第 4 章,“以惊人的艺术样式迁移图片”相同:
```py
- (NSArray*) runPix2PixBlurryModel {
......
......@@ -14,7 +14,7 @@
总之,本章将涵盖以下主题:
* AlphaZero –它如何工作?
* AlphaZero – 它如何工作?
* 为 Connect4 构建和训练类似于 AlphaZero 的模型
* 在 iOS 中使用模型玩 Connect4
* 在 Android 中使用模型玩 Connect4
......
......@@ -10,10 +10,10 @@
因此,我们将在本章涵盖 TensorFlow Lite 和 Core ML,并通过以下主题展示两者的优势和局限性:
* TensorFlow Lite-概述
* TensorFlow Lite - 概述
* 在 iOS 中使用 TensorFlow Lite
* 在 Android 中使用 TensorFlow Lite
* 适用于 iOS 的 CoreML-概述
* 适用于 iOS 的 CoreML - 概述
* 结合使用 CoreML 和 Scikit-Learn 机器学习
* 将 CoreML 与 Keras 和 TensorFlow 结合使用
......
......@@ -1031,7 +1031,7 @@ pi@raspberrypi:~/mobiletf/ch12 $ python nn_pg.py
因此,该说再见了。 在本书中,我们从三个经过预训练的 TensorFlow 模型开始,这些模型分别是图像分类,对象检测和神经样式转换,并详细讨论了如何重新训练模型并在 iOS 和 Android 应用中使用它们。 然后,我们介绍了使用 Python 构建的 TensorFlow 教程中的三个有趣的模型(音频识别,图像字幕和快速绘制),并展示了如何在移动设备上重新训练和运行这些模型。
因此,该说再见了。 在本书中,我们从三个经过预训练的 TensorFlow 模型开始,这些模型分别是图像分类,对象检测和神经样式迁移,并详细讨论了如何重新训练模型并在 iOS 和 Android 应用中使用它们。 然后,我们介绍了使用 Python 构建的 TensorFlow 教程中的三个有趣的模型(音频识别,图像字幕和快速绘制),并展示了如何在移动设备上重新训练和运行这些模型。
之后,我们从零开始开发了用于预测 TensorFlow 和 Keras 中的股价的 RNN 模型,两个用于数字识别和像素转换的 GAN 模型以及一个用于 Connect4 的类似于 AlphaZero 的模型,以及使用所有这些 TensorFlow 模型的完整 iOS 和 Android 应用 。 然后,我们介绍了如何将 TensorFlow Lite 以及 Apple 的 Core ML 与标准机器学习模型和转换后的 TensorFlow 模型一起使用,展示了它们的潜力和局限性。 最后,我们探索了如何使用 TensorFlow 构建 Raspberry Pi 机器人,该机器人可以使用强大的强化学习算法来移动,观看,聆听,讲话和学习。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册