首页 > 编程知识 正文

仿ios6(relativelayout布局)

时间:2023-05-03 14:58:57 阅读:81350 作者:2228

健壮的外套网推:本文是为魁梧的外套字幕组编译的技术博客,原标题为transformingPictureswithneuralstyletransferinios,作者为Navdeep Singh。

翻译| dbwb长情的水杯lcdkn整理|凡江

随着2012年深度神经网络在ImageNetchallenge大赛中以AlexNet模式获胜,深度神经网络掀起了空前的高潮。 AI工程师已经将深度学习技术应用于越来越多的问题域,包括事前训练的深度有线新闻网络模型。 有什么比创造艺术更富有创造性?

被称为“神经风格转换”的想法被提出并正在实施。 这样,可以利用事先训练好的深度神经网络模型,将一幅图像的风格,例如梵高和尼莫特的杰作,转移到另一幅图像,例如自己的简介图像或喜欢的小狗图像,从而生成混合了图像内容和名作风格的图像

实际上,有一个叫Prisma的IOs APP,获得了2016年度的最佳APP。 那就是,只需要几秒钟就能把你的照片转换成所选的样式。

本文将介绍如何训练快速神经样式转换模型以实现Prisma的功能,并在自己的iOS中使用。

高速神经转移模型的训练

在本节中,按照以下步骤,学习使用TensorFlow使用高速神经样式迁移算法训练模型:的方法

1 .在你的Mac终端或者GPU驱动的Ubuntu上,运行git clone命令,复制链接this Github repo。 这是kkdjd快速样式迁移的优秀TensorFlow实现的分支,经过修改和训练的模型可以在iOS或Android APP应用中使用。

2 .运行CD命令进入快速样式迁移目录,然后运行setup.sh脚本下载预训练的VGG-19模型文件和MS COCO训练数据集。

3 .运行以下命令,使用样式图像starry_night.jpg和内容图像WW1.jPG在培训中创建检查点文件。

图像目录中还有其他样式的图像,可以使用这些图像创建不同的检查点文件。 这里使用的starry_night.jpg风格的图像是梵高的名画:

把梵高的画用作风格图像

在由NVIDIA GTX 1070 GPU驱动的Ubuntu中,整个培训大约需要5个小时。 当然CPU需要更多的时间。

4 .在文本编辑器中打开evaluate.py文件,取消注释以下两行代码(第158行和第159行)。

5 .运行以下命令以创建新的检查点: 输入图像的名称为img_placeholder,传输后的图像的名称为preds。

6 .运行以下命令创建TensorFlow出图文件并加载检查点权重参数: 这将创建一个约6.7MB的大小. pb文件。

7 .假设您已经有/ft.file目录。 将生成的st_frozen.pb文件复制到/ft.file目录中,然后直接使用光盘访问TensorFlow源根目录。 例如,如~/tensorflow-1.4.0,然后运行以下命令以将其创建为.

这将硬化贴图文件的大小从6.7 MB缩小到1.7 MB。 也就是说,如果在App上为50种不同的样式加载50个模型,则大小将为85 MB。

以上是利用一张风格图像和输入图像训练和量化一个快速神经风格转变模型的所有步骤。 可以在test_dir目录中检查在步骤3中生成的图像,以查看样式转换的效果。 如果需要,可以尝试在包含超参数的模型中玩,以查看不同样式的过渡效果。 代码文件提供在https://github.com/jeffxtang/fast-style-transfer/blob/master/docs.MD # style中。

重要提示: qfdct在iOS或安卓app中使用这些模型之前,必须将输入图像的准确宽度和高度值作为步骤5----in-path的参数进行记录。 iOS或安卓的代码调用图像的宽度和高度值。 很快就会知道怎么叫了。 否则,当qfdct在App上运行这些模型时,将获得con v2 DCustombackPropinput : sizeof out _ backPropdoesn '匹配计算

的错误提示。

在 iOS 系统上添加和测试神经风格迁移模型

第一件事是手动建立 TensorFlow 库,如果你此前尚未安装过这个库。然后执行以下步骤就可以在你的 iOS App 上获取 TensorFlow 支持和并添加神经风格迁移模型,并试运行你的 App。

如果你已经拥有了一个添加了 TensorFlow 手册库的 iOS app,可以跳过下面这一步。否则,创建一个新的基于 Objective-C 语言的 iOS app,比如可以命名它为 NeuralStyleTransfer,或者在已经存在的 app 中,在 PROJECT 下的 Build Settings 配置中创建一个新的自定义设置,名称是 TENSORFLOW_ROOT,值为 $HOME/tensorflow-1.4.0,假定上面是你 TensorFlow 1.4.0 的安装地址。然后在 TARGET 下的 Build Settings 配置中将 Other Linker Flags 设置如下:

然后将 Header Search Paths 设置如下:

2. 将 fst_frozen_quantized.pb 文件和几个测试所用图片拖放到你的工程文件夹中,在 https://github.com/PacktPublishing/Intelligent-Mobile-Projects-with-TensorFlow/tree/master/ch4/ios/NeuralStyleTransfer 中的 NeuralStyleTransfer app 文件夹中找到相同的 ios_image_load.mm 和 .h 文件,把它们复制到工程文件夹下。

3. 将 ViewController.m 文件重命名为 ViewController.mm,把它和原 ViewController.h 文件替换为从上面的 GitHub 网址链接获取中的 ViewController.h 和 .mm 文件。

4. 在 iOS 模拟器中或者你的 iOS 设备中运行 App,你会看到一个狗图片:

5. 点击选择 Fast Style Transfer 选项,过几秒钟,你会看到一个带有 starry night 风格的新图片。

你可以很简单的通过选择你最喜欢的图片作为风格图片然后跟随之前的步骤编译带有不同风格的其他模型。然后可以按照这段的步骤在你的 IOSapp 中使用模型。这里有使用 IOS 的详细代码。

使用快速神经迁移模型回顾 iOS 代码

在 ViewController.mm 中包含许多重要的代码片断它在输入图片的预处理和转移图片的后处理中是独特的。

1. 两个常量,wanted_width,wanted_height,作为图片的高度和宽度定义为相同的值,这里的图片就是步骤 5 中的 dog.jpg:

2. iOS 的 dispatch 队列是用来在 non-UI 线程加载和运行你的快速神经迁移模型并且在风格迁移后图片生成了,以下为将图片发送到 UI 线程的代码:

3. 定义浮点型 3 维plddn用于转换输入图片:

4. 发送到 tensorflow Sess->Run 方法中的输入节点名和输出节点名与训练模型的时候是相同的 :

5. 当模型运行完成并且返回输出plddn (包含 0 到 255 的 RGB 值) 时,你需要调用 tensorToUIImage 通用函数把plddn数据转换为 RGB buffer:

6. 现在,你可以把 buffer 转化成 UIImage 实例在调整它的大小之前,以下为代码:

如果你对这个主题感兴趣,你可以使用 Jeff Tange 的书来研究更多的深度学习和强化学习 app。这本书包括超过 10 种 iOS,android 和 raspberry pi app 使用 tensorflow 来运行,使用 scratch 进行编译,离线运行所有绚丽的 tensorflow 模型:从计算机视觉,语音合成到生成对抗网络和类似于 Alphazero 的深度强化学习模型。

原文链接:https://medium.com/@navdeepsingh_2336/transforming-pictures-with-neural-style-transfer-in-ios-6988b79b34ee

魁梧的外套网魁梧的外套网

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。