提交 6044f665 编写于 作者: W wizardforcel

2020-12-10 16:17:43

上级 923acf38
......@@ -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),以了解有关样式转换的更多信息。
......
......@@ -1088,7 +1088,7 @@ CycleGAN 有许多应用。 在本章中,我们使用了 CycleGAN 将画作转
* **样式转换**:例如,将照片转换为绘画,反之亦然,将马的图像转换为斑马,反之亦然,将橘子的图像转换为苹果,反之亦然
* **照片增强**:CycleGAN 可用于增强图片质量
* **季节转换**:例如,将冬天的图片变成夏天的图片,反之亦然
* **游戏风格转移**:CycleGAN 可用于将游戏 A 的风格转移到游戏 B
* **游戏风格迁移**:CycleGAN 可用于将游戏 A 的风格迁移到游戏 B
......
......@@ -216,7 +216,7 @@ image_np_expanded = np.expand_dims(image_np, axis=0)
![](img/0df3a5c2-f983-4921-a901-b14c262d34a4.png)
图 3.1:Detected objects with bounding boxes and confidence scores
图 3.1:检测到的对象及其边界框和置信度分数
在“在 iOS 中使用对象检测模型”部分,我们将了解如何在 iOS 设备上使用相同的模型并绘制相同的检测结果。
......@@ -387,13 +387,13 @@ python object_detection/eval.py \
![](img/539aa2c8-da68-42e8-ad74-ad3f2a25e07f.png)
图 3.2:Total loss trend when retraining an object detection model
图 3.2:训练对象检测模型时的总损失趋势
您还将看到一些评估结果,如图 3.3 所示:
![](img/ee6c4a9d-473f-429c-a7e2-df3162500502.png)
图 3.3:Evaluation image detection results when retraining an object detection model
图 3.3:重新训练物体检测模型时评估图像检测结果
10. 同样,您可以为`SSD_MobileNet`模型运行评估脚本,然后使用 TensorBoard 查看其损失趋势和评估图像结果:
......@@ -477,7 +477,7 @@ If you run the app, after completing the following steps, and encounter an error
![](img/a8474e70-b35d-4585-a9f9-620aa6cff313.png)
图 3.4:Adding a TENSORFLOW_ROOT user-defined setting
图 3.4:添加`TENSORFLOW_ROOT`用户定义的设置
3. 单击目标,然后在“构建设置”下搜索“其他链接器标志”。 向其添加以下值:
......@@ -499,13 +499,13 @@ $(TENSORFLOW_ROOT) $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/prot
![](img/bae0f128-065f-4267-b1cc-b2450650e8d7.png)
图 3.5:Adding all TensorFlow-related build settings for the target
图 3.5:为目标添加所有与 TensorFlow 相关的构建设置
5. 在目标的“构建阶段”中,在带库的链接二进制文件中添加 Accelerate 框架,如图 3.6 所示:
![](img/3c92f162-ad1d-4718-a72f-07f10ebc71fa.png)
图 3.6:Adding the Accelerate framework
图 3.6:添加加速框架
6. 返回用于构建 TensorFlow iOS 库的终端,在`tensorflow/core/platform/default/mutex.h`中找到以下两行代码:
......@@ -549,7 +549,7 @@ cd <TENSORFLOW_ROOT>/models/research/object_detection/protos
![](img/7023289e-ae57-4518-920e-140985314d13.png)
图 3.7:The TFObjectDetection API project files
图 3.7:`TFObjectDetection` API 项目文件
7. 继续在`ViewController.mm`中添加其余代码。 在`viewDidLoad`中,添加以编程方式创建新`UIImageView`的代码,以首先显示测试图像,并在选择了特定模型以在测试图像上运行之后显示检测到的结果,然后添加以下功能实现:
......@@ -568,7 +568,7 @@ void RunInferenceOnImage(NSString *model)
![](img/411e68db-3026-4ba4-964a-3d9a174dce6f.png)
图 3.8:Running the app with different models and showing detection results
图 3.8:使用不同的模型运行应用程序并显示检测结果
返回步骤 7 中的功能,`FilePathForResourceName`功能是用于返回资源文件路径的帮助程序功能:`mscoco_label_map.pbtxt`文件,该文件定义了要检测的 90 个对象类的 ID,内部名称和显示名称。 ,模型图文件和测试图像。 它的实现与我们在上一章的`HelloTensorFlow`应用中看到的实现相同。
......@@ -647,7 +647,7 @@ num_detections: 100, detection_scores size: 100, detection_classes size: 100, de
![](img/ced173a8-1b82-4868-a274-3cdf666556e1.png)
图 3.9:Comparing detected results of pre-trained and retrained models
图 3.9:比较预训练和再训练模型的检测结果
......@@ -695,7 +695,7 @@ python tensorflow/tools/quantization/quantize_graph.py --input=darkflow/built_gr
![](img/532a45ca-35ee-452b-b33a-79d557fee667.png)
图 3.10:Adding two YOLO models to the iOS app
图 3.10:将两个 YOLO 模型添加到 iOS 应用
3. 添加以下代码以将输入图像处理到张量中以馈送到输入节点,并在加载了 YOLO 模型图的情况下运行 TensorFlow 会话以生成检测输出:
......
......@@ -45,7 +45,7 @@
在本部分中,我们将向您展示如何使用带有 TensorFlow 的快速神经样式传输算法训练模型。 执行以下步骤来训练这样的模型:
1. 在 Mac 的终端上,或者最好在 GPU 驱动的 Ubuntu 上,运行`git clone https://github.com/jeffxtang/fast-style-transfer`,这是 Johnson 的快速样式传输的 TensorFlow 实现的一个很好的分支,已修改为允许在 iOS 或 Android 应用中使用经过训练的模型。
2. `cd`到快速样式移目录,然后运行`setup.sh`脚本下载预先训练的 VGG-19 模型文件以及 MS COCO 训练数据集,我们在上一章中提到过-注意 下载大文件可能需要几个小时。
2. `cd`到快速样式移目录,然后运行`setup.sh`脚本下载预先训练的 VGG-19 模型文件以及 MS COCO 训练数据集,我们在上一章中提到过-注意 下载大文件可能需要几个小时。
3. 运行以下命令,使用名为`starry_night.jpg`的样式图像和名为`ww1.jpg`的内容图像进行训练,以创建检查点文件:
```py
......@@ -58,11 +58,11 @@ python style.py --style images/starry_night.jpg --test images/ww1.jpg --test-dir
![](img/ea1f4494-b7f4-4be2-a897-adfcbc4f0ef4.jpg)
图 4.1:Using Van Gogh's painting as the style image
图 4.1:用梵高的绘画作为风格图像
在第 1 章, “移动 TensorFlow 入门”中设置的 NVIDIA GTX 1070 GPU 驱动的 Ubuntu 上,整个训练大约需要 5 个小时,并且在 CPU 上肯定要花更长的时间 。
The script was originally written for TensorFlow 0.12 but modified later for TensorFlow 1.1, and has been verified to also run OK in the TensorFlow 1.4 with Python 2.7 environment we set up earlier.
该脚本最初是为 TensorFlow 0.12 编写的,但后来为 TensorFlow 1.1 进行了修改,并且已被验证为可以在 TensorFlow 1.4 的 Python 2.7 环境中正常运行。
4. 在文本编辑器中打开`evaluate.py`文件,然后取消注释以下两行代码(在 158 和 159 行):
......@@ -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 应用程序中使用这些模型之前,重要的一点是,您需要记下指定为`--in-path` 值的图像的确切图像宽度和高度 ]在第 5 步中使用 参数,并在 iOS 或 Android 代码中使用图像的宽度和高度值(您会看到多久了),否则会出现 `Conv2DCustomBackpropInput: Size of out_backprop doesn't match computed` 错误 在应用中运行模型时。
......@@ -148,13 +148,13 @@ $(TENSORFLOW_ROOT) $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/prot
![](img/9bdc2a19-7e59-4f72-b41f-ea3eeba0c5c5.png)
图 4.2:The original dog picture before style applied
图 4.2:应用样式之前的原始狗图片
5. 点击以选择快速样式移,几秒钟后,您将在图 4.3 中看到一张新图片,其中已转移了繁星点点的夜色:
5. 点击以选择快速样式移,几秒钟后,您将在图 4.3 中看到一张新图片,其中已转移了繁星点点的夜色:
![](img/a78207bb-2407-4343-b84d-2f17aacfd4ff.png)
图 4.3:Like having Van Gogh draw your favorite dog
图 4.3:就像让梵高画出您喜欢的狗一样
您只需选择喜欢的图片作为样式图像,然后按照上一节中的步骤操作,即可轻松构建具有不同样式的其他模型。 然后,您可以按照本节中的步骤在 iOS 应用中使用模型。 如果您想了解模型的训练方法,则应在上一节的 GitHub 存储库 中查看代码。 让我们详细看一下使用该模型完成魔术的 iOS 代码。
......@@ -420,7 +420,7 @@ mHandler.sendMessage(msg);
![](img/07ef305b-1e23-4a4c-98f5-faf14f398d65.png)
图 4.4:The original image and style transferred image on Android
图 4.4:Android 上原始图像和样式迁移的图像
快速神经样式模型存在的一个问题是,即使量化后每个模型只有 1.7MB,我们仍然需要针对每种样式分别进行训练,并且每个训练的模型只能支持一种样式转换。 幸运的是,这个问题有很好的解决方案。
......@@ -474,7 +474,7 @@ auto image_tensor_mapped = image_tensor.tensor<float, 4>();
![](img/ea7a04fe-8b56-47b2-ac5a-7f25ced4acbd.png)
图 4.5:The 26 style images in the multi-style model
图 4.5:多样式模型中的 26 种样式图像
```py
tensorflow::Tensor style_tensor(tensorflow::DT_FLOAT, tensorflow::TensorShape({ NUM_STYLES, 1}));
......@@ -503,7 +503,7 @@ for (int i = 0; i < NUM_STYLES; i++) {
}
```
稍后,您将在图 4.8 和 4.9 中看到这三种设置的样式移效果。
稍后,您将在图 4.8 和 4.9 中看到这三种设置的样式移效果。
6.`session->Run`调用更改为以下行,以将图像张量和样式张量都发送到模型:
......@@ -515,25 +515,25 @@ tensorflow::Status run_status = session->Run({{input_layer, image_tensor}, {styl
![](img/f2841f1f-b0c3-412d-822b-5e9d0f34f235.png)
图 4.6:Showing the original content image
图 4.6:显示原始内容图像
点击任意位置,您将看到两个样式选择,如图 4.7 所示:
![](img/c462927f-71be-46f1-995f-5cbd536ae175.png)
图 4.7:Showing the choice of two style models
图 4.7:显示两种样式模型的选择
两张已传输图像的结果,`out_style[19] = 1.0`; 如图 4.8 所示:
![](img/cc28a550-1a66-4845-b330-1c01d3806e62.png)
图 4.8:The style-transferred results with two different models (fast style transfer on the left, multi-style on the right)
图 4.8:两种不同模型的样式迁移结果(左侧是快速样式迁移,右侧是多样式)
图 4.9 显示了在图 4.5 中使用星夜图像和右上角图像的均等混合以及所有 26 种样式的均等混合的结果,如图 4.9 所示:
![](img/c5dd63f4-32a7-4177-afb8-af0e8a8770e8.png)
图 4.9:Results of different mixes of multiple styles (half starry night half the other on the left, mix of all 26 styles on the right)
图 4.9:多种样式的不同混合的结果(左边:一半星空一半其它,右边:所有 26 种样式的混合)
多样式模型在 iPhone 6 上运行大约需要 5 秒钟,比快速样式传输模型运行快大约 2-3 倍。
......@@ -623,7 +623,7 @@ for (int i=0; i < intValues.length; ++i) {
![](img/f582db90-6795-43d5-8d6d-28e2835e58de.png)
图 4.10:The original content image and the style transferred image with a mix of the 5th image and the starry night image
图 4.10:原始内容图像和样式迁移的图像,结合了第五个图像和繁星点点的夜晚图像
如果替换以下两行代码:
......@@ -654,7 +654,7 @@ for (int i = 0; i < NUM_STYLES; ++i) {
![](img/a6009bea-e770-4c76-b7ab-9f426ea66e0b.png)
图 4.11:Images stylized with the starry night style only and with all the 26 styles mixed equally
图 4.11:仅以星空风格来风格化的图像,以及将所有 26 种风格均等混合的图像
在一些强大的 TensorFlow 模型的帮助下以及我们如何在移动应用程序中使用它们的知识,看起来我们的移动开发人员也可以成为伟大的艺术家。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册