| GAN | ![](img/B14853_06_030.png)![](img/B14853_06_031.png) | 4.1.14.1.5 |
| 堆叠式 | ![](img/B14853_06_032.png)![](img/B14853_06_033.png)![](img/B14853_06_034.png)![](img/B14853_06_035.png)![](img/B14853_06_036.png)其中![](img/B14853_06_037.png)是权重,`i`是编码器和 GAN ID | 6.2.16.2.26.2.36.2.46.2.5 |
| 栈式 | ![](img/B14853_06_032.png)![](img/B14853_06_033.png)![](img/B14853_06_034.png)![](img/B14853_06_035.png)![](img/B14853_06_036.png)其中![](img/B14853_06_037.png)是权重,`i`是编码器和 GAN ID | 6.2.16.2.26.2.36.2.46.2.5 |
API 密钥方法仅适用于 GCP 的部分选定 API 和服务,并非十分安全。 如果要完全访问所有 API 和服务以及细粒度的安全性,则需要对服务帐户使用该方法。 为此,[您可以阅读 GCP 官方文档中的以下文章](https://cloud.google.com/docs/authentication/)。
有了 API 密钥,您现在就可以通过 Flutter 应用程序进行 API 调用了。 在下一部分中,我们将在**合作**上开发预测模型,并将其保存为`.tflite`模型。
有了 API 密钥,您现在就可以通过 Flutter 应用程序进行 API 调用了。 在下一部分中,我们将在**Colab**上开发预测模型,并将其保存为`.tflite`模型。
在成功选择并存储图像后,取决于用户单击的按钮,这是由`visionAPICall()`和`analyzeTFLite()`这两个定义的方法从`chooseImageGallery()`调用的,这取决于传递给窗口的值。 `PlantSpeciesRecognition`构造函数:Cloud Vision API 为 0,TensorFlow Lite 为 1。
在成功选择并存储图像后,取决于用户单击的按钮,这是由`visionAPICall()`和`analyzeTFLite()`这两个定义的方法从`chooseImageGallery()`调用的,这取决于传递给窗口的值。 `PlantSpeciesRecognition`构造器:Cloud Vision API 为 0,TensorFlow Lite 为 1。
修改后的`chooseImagGallery()`方法如下所示:
...
...
@@ -848,7 +848,7 @@ child: Column(
`_recognitions`列表中存储的 TensorFlow Lite 模型的结果逐元素进行迭代,并映射到使用`.map()`指定的列表。 列表中的每个元素都将进一步转换为`Text`,并作为与屏幕中心对齐的列子元素添加。
此外,请注意,需要将 Cloud Vision API 的输出或 TensorFlow Lite 模型的输出添加到堆栈中。 为了确保这一点,我们将前面的代码包装在`if-else`块中,这样,如果在构造函数中传递的值(即`modelChosen`)为 0,则添加前者的输出;如果该值是,则添加后者的输出。 是 1。
此外,请注意,需要将 Cloud Vision API 的输出或 TensorFlow Lite 模型的输出添加到堆栈中。 为了确保这一点,我们将前面的代码包装在`if-else`块中,这样,如果在构造器中传递的值(即`modelChosen`)为 0,则添加前者的输出;如果该值是,则添加后者的输出。 是 1。
3. 最后,在各种图像集上运行 Cloud Vision API 将提供不同的输出。 以下屏幕快照显示了一些示例:
3. 我们将使用 Keras 模型资源库中的`ResNet50`预训练模型。 我们将输入形状设置为 224 x 224 x 3,其中 224 x 244 是将传递给模型的每个图像的尺寸,而 3 是颜色通道的数量。 请注意,与**修改后的美国国家标准技术研究院**(**MNIST**)数据集不同,在该数据集中每个图像的尺寸均相等,而 Flickr8k 数据集则并非如此。 该代码可以在以下代码段中看到:
3. 我们将使用 Keras 模型资源库中的`ResNet50`预训练模型。 我们将输入形状设置为 224 x 224 x 3,其中 224 x 244 是将传递给模型的每个图像的尺寸,而 3 是颜色通道的数量。 请注意,与**美国国家混合标准技术研究院**(**MNIST**)数据集不同,在该数据集中每个图像的尺寸均相等,而 Flickr8k 数据集则并非如此。 该代码可以在以下代码段中看到:
@@ -47,7 +47,7 @@ Ian Goodfellow,Yoshua Bengio 和其他人在 NeurIPS 2014 中引入的 GAN 席
前面面孔中呈现的大量真实感证明了 GAN 的力量–在为他们提供良好的训练样本量之后,他们几乎可以学习生成任何类型的模式。
GAN 的核心概念围绕两个玩家玩游戏的想法。 在这个游戏中,一个人说出一个随机句子,另一个人仅仅考虑第一人称使用的单词就指出它是事实还是假。 第二个人唯一可以使用的知识是假句子和实句中常用的单词(以及如何使用)。 这可以描述为由 minimax 算法玩的两人游戏,其中每个玩家都试图以其最大能力抵消另一位玩家所做的移动。 在 GAN 中,第一个玩家是**生成器**(`G`),第二个玩家是**鉴别符**(`D`)。 G 和 D 都是常规 GAN 中的神经网络。 生成器从训练数据集中给出的样本中学习,并基于其认为当观察者查看时可以作为真实样本传播的样本来生成新样本。
GAN 的核心概念围绕两个玩家玩游戏的想法。 在这个游戏中,一个人说出一个随机句子,另一个人仅仅考虑第一人称使用的单词就指出它是事实还是假。 第二个人唯一可以使用的知识是假句子和实句中常用的单词(以及如何使用)。 这可以描述为由 minimax 算法玩的两人游戏,其中每个玩家都试图以其最大能力抵消另一位玩家所做的移动。 在 GAN 中,第一个玩家是**生成器**(`G`),第二个玩家是**判别器**(`D`)。 G 和 D 都是常规 GAN 中的神经网络。 生成器从训练数据集中给出的样本中学习,并基于其认为当观察者查看时可以作为真实样本传播的样本来生成新样本。
判别器从训练样本(正样本)和生成器生成的样本(负样本)中学习,并尝试对哪些图像存在于数据集中以及哪些图像进行分类。 它从 G 获取生成的图像,并尝试将其分类为真实图像(存在于训练样本中)或生成图像(不存在于数据库中)。
***有条件的 GAN**:假设您有一个 GAN 可以生成 10 个不同类别的样本,但是在某个时候,您希望它在给定类别或一组类别内生成样本。 这是有条件 GAN 起作用的时候。有条件 GAN 使我们可以生成 GAN 中经过训练可以生成的所有标签中任何给定标签的样本。 在图像到图像的翻译领域中,已经完成了条件 GAN 的一种非常流行的应用,其中将一个图像生成为相似或相同域的另一个更逼真的图像。 您可以通过[这个页面](https://affinelayer.com/pixsrv/)上的演示来尝试涂鸦一些猫,并获得涂鸦的真实感版本。
***堆叠式 GAN**:堆叠式 GAN 的最流行的应用是基于文本描述生成图像。 在第一阶段,GAN 生成描述项的概述,在第二阶段,根据描述添加颜色。 然后,后续层中的 GAN 将更多细节添加到图像中,以生成图像的真实感版本,如描述中所述。 通过观察堆叠 GAN 的第一次迭代中的图像已经处于将要生成最终输出的尺寸,可以将堆叠式 GAN 与渐进式 GAN 区别开来。但是,与渐进式 GAN 相似,在第一次迭代中, 图像是最小的,并且需要进一步的层才能将其馈送到判别器。
***条件 GAN**:假设您有一个 GAN 可以生成 10 个不同类别的样本,但是在某个时候,您希望它在给定类别或一组类别内生成样本。 这是有条件 GAN 起作用的时候。有条件 GAN 使我们可以生成 GAN 中经过训练可以生成的所有标签中任何给定标签的样本。 在图像到图像的翻译领域中,已经完成了条件 GAN 的一种非常流行的应用,其中将一个图像生成为相似或相同域的另一个更逼真的图像。 您可以通过[这个页面](https://affinelayer.com/pixsrv/)上的演示来尝试涂鸦一些猫,并获得涂鸦的真实感版本。
***栈式 GAN**:栈式 GAN 的最流行的应用是基于文本描述生成图像。 在第一阶段,GAN 生成描述项的概述,在第二阶段,根据描述添加颜色。 然后,后续层中的 GAN 将更多细节添加到图像中,以生成图像的真实感版本,如描述中所述。 通过观察堆叠 GAN 的第一次迭代中的图像已经处于将要生成最终输出的尺寸,可以将栈式 GAN 与渐进式 GAN 区别开来。但是,与渐进式 GAN 相似,在第一次迭代中, 图像是最小的,并且需要进一步的层才能将其馈送到判别器。
在此项目中,我们将讨论 GAN 的另一种形式,称为**超分辨率 GAN**(**SRGAN**)。 我们将在下一部分中了解有关此变体的更多信息。