提交 d0d06498 编写于 作者: W wizardforcel

2021-01-06 17:27:04

上级 54d012cb
......@@ -47,9 +47,9 @@ 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 获取生成的图像,并尝试将其分类为真实图像(存在于训练样本中)或生成图像(不存在于数据库中)。
判别器从训练样本(正样本)和生成器生成的样本(负样本)中学习,并尝试对哪些图像存在于数据集中以及哪些图像进行分类。 它从`G`获取生成的图像,并尝试将其分类为真实图像(存在于训练样本中)或生成图像(不存在于数据库中)。
通过反向传播,GAN 尝试不断减少判别器能够对发生器正确生成的图像进行分类的次数。 一段时间后,我们希望达到识别器在识别生成的图像时开始表现不佳的阶段。 这是 GAN 停止学习的地方,然后可以使用生成器生成所需数量的新样本。 因此,训练 GAN 意味着训练生成器以从随机输入产生输出,从而使判别器无法将其识别为生成的图像。
......@@ -66,7 +66,7 @@ GAN 的核心概念围绕两个玩家玩游戏的想法。 在这个游戏中,
GAN 具有许多不同的变体,所有变体都取决于它们正在执行的任务。 其中一些如下:
* **渐进式 GAN**:在 ICLR 2018 上的一篇论文中介绍,渐进式 GAN 的生成器和判别器均以低分辨率图像开始,并随着图像层的增加而逐渐受到训练,从而使系统能够生成 高分辨率图像。 例如,在第一次迭代中生成的图像为 10x10 像素,在第二代中它变为 20x20,依此类推,直到获得非常高分辨率的图像为止。 生成器和判别器都在深度上一起增长。
* **渐进式 GAN**:在 ICLR 2018 上的一篇论文中介绍,渐进式 GAN 的生成器和判别器均以低分辨率图像开始,并随着图像层的增加而逐渐受到训练,从而使系统能够生成 高分辨率图像。 例如,在第一次迭代中生成的图像为`10x10`像素,在第二代中它变为`20x20`,依此类推,直到获得非常高分辨率的图像为止。 生成器和判别器都在深度上一起增长。
* **条件 GAN**:假设您有一个 GAN 可以生成 10 个不同类别的样本,但是在某个时候,您希望它在给定类别或一组类别内生成样本。 这是有条件 GAN 起作用的时候。有条件 GAN 使我们可以生成 GAN 中经过训练可以生成的所有标签中任何给定标签的样本。 在图像到图像的翻译领域中,已经完成了条件 GAN 的一种非常流行的应用,其中将一个图像生成为相似或相同域的另一个更逼真的图像。 您可以通过[这个页面](https://affinelayer.com/pixsrv/)上的演示来尝试涂鸦一些猫,并获得涂鸦的真实感版本。
* **栈式 GAN**:栈式 GAN 的最流行的应用是基于文本描述生成图像。 在第一阶段,GAN 生成描述项的概述,在第二阶段,根据描述添加颜色。 然后,后续层中的 GAN 将更多细节添加到图像中,以生成图像的真实感版本,如描述中所述。 通过观察堆叠 GAN 的第一次迭代中的图像已经处于将要生成最终输出的尺寸,可以将栈式 GAN 与渐进式 GAN 区别开来。但是,与渐进式 GAN 相似,在第一次迭代中, 图像是最小的,并且需要进一步的层才能将其馈送到判别器。
......@@ -94,7 +94,7 @@ GAN 具有许多不同的变体,所有变体都取决于它们正在执行的
指定分辨率的最流行格式之一,像素分辨率最通常是指形成图像时涉及的像素数量。 单个像素是可以在任何给定查看设备上显示的最小单个单位。 可以将几个像素组合在一起以形成图像。 在本书的前面,我们讨论了图像处理,并将像素称为存储在矩阵中的颜色信息的单个单位,它代表图像。 像素分辨率定义了形成数字图像所需的像素元素总数,该总数可能与图像上可见的有效像素数不同。
标记图像像素分辨率的一种非常常见的表示法是以百万像素表示。 给定 NxM 像素分辨率的图像,其分辨率可以写为(NxM / 1000000)百万像素。 因此,尺寸为 2,000x3,000 的图像将具有 6,000,000 像素,其分辨率可以表示为 6 兆像素。
标记图像像素分辨率的一种非常常见的表示法是以百万像素表示。 给定`NxM`像素分辨率的图像,其分辨率可以写为(`NxM / 1000000`)百万像素。 因此,尺寸为`2,000x3,000`的图像将具有 6,000,000 像素,其分辨率可以表示为 6 兆像素。
# 空间分辨率
......@@ -106,7 +106,7 @@ GAN 具有许多不同的变体,所有变体都取决于它们正在执行的
分辨率也可能取决于时间。 例如,卫星或使用**无人飞行器****UAV**)无人机拍摄的同一区域的图像可能会随时间变化。 重新捕获相同区域的图像所需的时间称为时间分辨率。
时间分辨率主要取决于捕获图像的设备。 如在图像捕捉的情况下,这可以是变型,例如当在路边的速度陷阱照相机中触发特定传感器时执行图像捕捉。 它也可以是常数。 例如,在配置为每 x 间隔拍照的相机中。
时间分辨率主要取决于捕获图像的设备。 如在图像捕捉的情况下,这可以是变型,例如当在路边的速度陷阱照相机中触发特定传感器时执行图像捕捉。 它也可以是常数。 例如,在配置为每`x`间隔拍照的相机中。
# 光谱分辨率
......@@ -118,7 +118,7 @@ GAN 具有许多不同的变体,所有变体都取决于它们正在执行的
辐射分辨率是捕获设备表示在任何频带/通道上接收到的强度的能力。 辐射分辨率越高,设备可以更准确地捕获其通道上的强度,并且图像越真实。
辐射分辨率类似于图像每个像素的位数。 虽然 8 位图像像素可以表示 256 个不同的强度,但是 256 位图像像素可以表示 2 ^ 256 个不同的强度。 黑白图像的辐射分辨率为 1 位,这意味着每个像素只能有两个不同的值,即 0 和 1。
辐射分辨率类似于图像每个像素的位数。 虽然 8 位图像像素可以表示 256 个不同的强度,但是 256 位图像像素可以表示`2 ^ 256`个不同的强度。 黑白图像的辐射分辨率为 1 位,这意味着每个像素只能有两个不同的值,即 0 和 1。
现在,让我们尝试了解 SRGAN。
......@@ -320,7 +320,7 @@ Widget buildPickImageButton() {
此函数返回以`FloatingActionButton`作为其子元素的`Container`。 按钮的`elevation`属性控制其下方阴影的大小,并设置为`8`。 为了反映该按钮用于选择图像,通过`Icon`类为它提供了摄像机的图标。 当前,我们已经将按钮的`onPressed`属性设置为空白。 我们将在下一部分中定义一个功能,使用户可以在按下按钮时从设备的图库中选择图像。
5. 最后,我们将覆盖 build 方法以返回应用程序的`Scaffold`
5. 最后,我们将覆盖`build`方法以返回应用程序的`Scaffold`
```py
@override
......@@ -508,7 +508,7 @@ def download(fname):
app.run(host="0.0.0.0", port="8080")
```
保存此文件。 确保此时将您的存储库推送到 GitHub / GitLab 存储库。
保存此文件。 确保此时将您的存储库推送到 GitHub/GitLab 存储库。
现在,我们准备将该脚本部署到`DigitalOcean` Droplet。
......@@ -548,7 +548,7 @@ app.run(host="0.0.0.0", port="8080")
![](img/72bf3798-300a-4d53-82e5-c369fc742db6.png)
9. 现在,我们可以使用上一幅截图所示的 Droplet 控制台左侧导航菜单上的 Access 选项卡登录到 Droplet。 单击访问,然后启动控制台。
10. 将打开一个新的浏览器窗口,显示您的 Droplet 的 VNC 视图。 系统将要求您输入 Droplet 的用户名和密码。 您必须在此处使用的用户名是 root。 可以在您已注册的电子邮件收件箱中找到该密码。
10. 将打开一个新的浏览器窗口,显示您的 Droplet 的 VNC 视图。 系统将要求您输入 Droplet 的用户名和密码。 您必须在此处使用的用户名是`root`。 可以在您已注册的电子邮件收件箱中找到该密码。
11. 首次登录时,系统会要求您更改 Droplet 密码。 确保您选择一个强密码。
12. 登录 Droplet 后,将在 VNC 终端上看到一些 Ubuntu 欢迎文本,如以下屏幕截图所示:
......
......@@ -152,8 +152,8 @@ Facebook 是一个流行的社交媒体平台,具有用于多个平台的专
![](img/d4fb2d23-9e3f-4bbc-9661-07f4f2aad3ed.png)
4. 填写必要的详细信息后,单击 CREATE 完成创建项目。 创建项目后,将带您到项目的仪表板。 在这里,您将能够查看与当前所选项目相关的一些基本日志记录和监视。 您可以在[这个页面](https://cloud.google.com/docs/overview)上了解有关 GCP 资源组织方式的更多信息。
5. 在左侧导航窗格中,单击 Compute Engine。 系统将提示您创建一个 VM 实例。
4. 填写必要的详细信息后,单击`CREATE`完成创建项目。 创建项目后,将带您到项目的仪表板。 在这里,您将能够查看与当前所选项目相关的一些基本日志记录和监视。 您可以在[这个页面](https://cloud.google.com/docs/overview)上了解有关 GCP 资源组织方式的更多信息。
5. 在左侧导航窗格中,单击`Compute Engine`。 系统将提示您创建一个 VM 实例。
6. 点击创建以显示 Compute Engine 实例创建表单。 根据需要填写表格。 我们假设您在创建实例时选择了 Ubuntu 18.04 LTS 发行版。
7. 确保在防火墙设置中启用对 VM 实例的 HTTP 和 HTTPS 连接的访问​​,如以下屏幕快照所示:
......@@ -330,7 +330,7 @@ $brew install dart
接下来,我们将研究如何在 Linux 系统上安装 Dart。
# Linux
# Linux
Dart SDK 可以如下安装在 Linux 中:
......@@ -367,10 +367,10 @@ Flutter 是 Google 的一个工具包,用于使用单个代码库构建本地
避免将`flutter`放在可能需要特殊特权的目录中,例如`C:\Program Files\`。
3. 在[开始]搜索栏中输入`env`,然后选择[编辑环境变量]
3. 在“开始”搜索栏中输入`env`,然后选择“编辑环境变量”
4. 使用`;`作为分隔符,将`flutter/bin`的完整路径附加到**用户变量**下的**路径**。
如果缺少`Path`条目,只需创建一个新的 Path 变量并将`path`设置为`flutter/bin`作为其值。
如果缺少`Path`条目,只需创建一个新的`Path`变量并将`path`设置为`flutter/bin`作为其值。
5. 在终端中运行`flutter doctor`。
......@@ -406,7 +406,7 @@ $export PATH=$HOME/flutter/bin:$PATH
6. 运行`flutter doctor`。
# Linux
# Linux
以下步骤概述了如何在 Linux 上安装 Flutter:
......@@ -451,7 +451,7 @@ Firebase 提供了可促进应用程序开发并帮助支持大量用户的工
4. 根据您的要求启用/禁用 Google Analytics(分析)。 通常建议您保持启用状态。
**Google Analytics** 是一种免费且不受限制的分析解决方案,可在 Firebase Crashlytics,Cloud Messaging,应用内消息传递,远程配置,A / B 测试,预测和云功能中实现目标定位,报告等功能。
**Google Analytics** 是一种免费且不受限制的分析解决方案,可在 Firebase Crashlytics,Cloud Messaging,应用内消息传递,远程配置,A/B 测试,预测和云功能中实现目标定位,报告等功能。
4. 如果您选择 Firebase Analytics,则还需要选择一个帐户:
......@@ -628,10 +628,10 @@ Flutter 安装可以通过以下方式验证:
创建第一个 Flutter 应用非常简单。 执行以下步骤:
1. 导航到查看| 命令面板。
2. 开始输入`flutter`,然后选择 Flutter:New Project
2. 开始输入`flutter`,然后选择`Flutter: New Project`
3. 输入项目名称,例如`my_sample_app`。
4. 点击 Enter
4. 点击`Enter`
5. 创建或选择新项目文件夹的父目录。
6. 等待项目创建完成,然后显示`main.dart`文件。
......@@ -655,7 +655,7 @@ Flutter 安装可以通过以下方式验证:
* 您也可以尝试设置用于调试的真实设备。
3. 单击**设置**按钮-位于右上角的齿轮图标齿轮(现已标记为红色或橙色指示器),位于 DEBUG 文本框旁边,显示为`No Configuration`。 选择 Flutter,然后选择调试配置以创建仿真器(如果已关闭)或运行仿真器或已连接的设备。
3. 单击**设置**按钮-位于右上角的齿轮图标齿轮(现已标记为红色或橙色指示器),位于`DEBUG`文本框旁边,显示为`No Configuration`。 选择 Flutter,然后选择调试配置以创建仿真器(如果已关闭)或运行仿真器或已连接的设备。
4. 导航到调试| 开始调试或按`F5`。
5. 等待应用启动,进度会显示在`DEBUG CONSOLE`视图中:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册