Logo

artiluxio

一款风格迁移应用

Contributor Covenant License: GPL v3 Stars

风格迁移涉及通过合并两个输入图像来生成一个称为拼贴画的新图像——一个代表内容,另一个代表艺术风格。它是近期深度学习中最激动人心的进展之一。此应用程序用于迁移图像之间的风格,让您创作出富有创意的全新输出。

? 示例

?? 用法

该应用程序旨在易于使用。打开应用程序后,您将看到主屏幕,您可以在其中从相机或图库中选择的图像创建新的推理。您还可以查看最后创建的推理和可用的模型。

当您获得所需的图像后,将出现第二个屏幕,您可以在其中应用上述模型,还可以上传新模型或重置图像。

获得具有所需风格的图像后,您可以下载并分享它!

✅ 亮点

  • 一种简单的方式来提高创造力。
  • 艺术生成器。

? 文档

众所周知,AI 社区中,AI 模型的训练以及推理过程在时间和能源消耗方面要求很高。因此,我们遵循了几个 绿色软件模式 来在一定程度上提高我们软件的效率。

  1. 优化 AI/ML 模型的大小。我们在项目中考虑了两个模型,每个模型由两个模块组成:一个用于预测图像的风格特征,另一个用于将输入图像与这些特征进行转换。它们由相同的架构组成,但使用了不同的数据类型。具体来说,我们测试了一种称为 Magenta 的图像风格迁移。第一个版本使用 float16,由 4.7MB 的预测层和 0.4MB 的风格迁移模块组成。第二个版本使用 int8,预测模块重 2.8MB,风格迁移模块重 0.2MB,几乎是原始尺寸的 **一半**!但是,第二个版本的缺点是它不能在 GPU 上运行,因此应该进行一些测试以检查是模型大小还是速度更受青睐。

  2. 为 AI/ML 开发使用高效的文件格式。模型以 .tflite 格式存储,根据文档:“……它以一种 **特殊的、高效的、可移植的格式** FlatBuffers 表示。这提供了几个优势……例如减小的尺寸(**代码占用空间小**)和**更快的推理**(数据无需额外的解析/解包步骤即可直接访问)。”

  3. 在边缘运行 AI 模型。如果 ML 模型在云端运行,则需要将数据传输到云端并在云端进行处理,以转换为 ML 模型推理所需的可接受格式。为了减少我们 ML 应用程序的碳足迹,我们直接在边缘(手机)执行 AI 模型。此外,所有计算处理任务(如图像预处理)均在最终设备上执行,展示了**零网络数据传输**。

  4. 选择更节能的 AI/ML 框架。尽管我们使用 Flutter 作为应用程序的展示层,但所有模型均基于 C++ 库构建,这些库比其他编程语言构建的库更节能。

  5. 使用节能的 AI/ML 模型。如今,存在像 Stable Diffusion 这样功能非常强大的风格迁移模型。然而,这类模型需要非常专业的硬件,而这些硬件通常会消耗大量能源(尤其是 GPU)。由于我们在边缘执行模型,因此我们决定采用像 Magenta 这样更轻量的模型。如前所述,它的大小只有几 MB,因此可以在标准手机上轻松运行。

  6. 利用预训练模型和迁移学习进行 AI/ML 开发。训练 AI 模型会产生显著的碳足迹。因此,我们决定寻找已有的、对我们的目的有用的预训练模型。我们已将**训练碳足迹减少到 0!**。

  7. 采用无服务器架构处理 AI/ML 工作负载。我们的应用程序执行的所有步骤都在最终设备上完成,因此计算资源经过专门优化,仅在需要时消耗。

  8. 缓存数据。模型的推理过程是我们管道中最耗时的步骤。为了最大限度地缩短结果的等待时间,我们缓存结果,以便以后可以立即查看,而无需重新计算。

? 安装

请花一分钟阅读 TensorFlow Lite Flutter 插件 页面,将 TensorFlow Lite 动态库添加到您的应用。

桌面

flutter pub get
flutter run

? 许可证

我们考虑了多种许可证,例如 BSD(伯克利软件发行)、MIT(麻省理工学院)或 Apache,但本项目使用的许可证是 GNU 通用公共许可证第 3.0 版。选择 GPLv3 的主要原因是它比其他候选许可证稍显严格。此外,它的一个最重要特点是它是一种 Copyleft 许可证,即要求在复制和衍生品上保留相同的自由。此外,值得注意的是 GPLv3 与所用库和工具的许可证兼容,这些库和工具将在下面列出。

此外,值得注意的是,开放许可证的主要目标是实现协作和开放的环境。这样,该应用程序就可以根据社区可能存在的不同需求进行扩展和/或调整。

主要目的之一是包含针对移动设备优化的新模型,以及未来添加使用更大型模型的 API 的可能性。所有这些都是为了给应用程序最大的通用性和功能性。未来的工作方向将在下一节中讨论。

最后,值得强调的是,该项目最初是通过学生沟通渠道进行推广的,试图鼓励使用和协作。

? 贡献指南

由于这是一个开源项目,我们随时欢迎贡献。

有关入门方法的说明,请参阅 CONTRIBUTING.md。并且,请遵守本项目的行为准则,该准则在 CODE_OF_CONDUCT.md 中说明。

? 未来工作

如前所述,当前版本仅允许在本地使用两个小型模型进行图像处理。但是,未来将有多条工作线,其中以下几点最为突出:

  • 包含新模型。
  • 通过替代的云方法包含更大型的模型。
  • 实时推理(使用摄像头)。
  • 创建社区可以发布其图像到图像模型的市场。

GitHub

查看 Github