Apple官方优化Stable Diffusion绘画教程

苹果为M1芯片优化Stable Diffusion模型,其中Mac Studio (M1 Ultra, 64-core GPU)生成512*512的图像时间为9秒。想要1秒出图,可以在线体验3090显卡AI绘画。

AI绘图在线体验

二次元绘图

在线体验地址:Stable Diffusion

中文输入绘图

在线体验地址:Stable Diffusion

CoreML Stable Diffusion

苹果官方发布Python 包,用于使用 diffusers 和 coremltools 将 Stable Diffusion 模型从 PyTorch 转换到 Core ML,以及一个 Swift 包来部署模型。请访问 Core ML Stable Diffusion 代码存储库以启动,并获取关于基准测试和部署的详细说明。

项目地址

使用 Core ML 在 Apple Silicon 上运行stable-diffusion

该存储库包括:

  • python_coreml_stable_diffusion,一个 Python 包,用于将 PyTorch 模型转换为 Core ML 格式并在 Python 中使用 Hugging Facestable-diffusion图像生成

  • StableDiffusion,一个 Swift 包,开发人员可以将其作为依赖项添加到他们的 Xcode 项目中,以在他们的应用程序中部署图像生成功能。Swift 包依赖于由生成的 Core ML 模型文件python_coreml_stable_diffusion

如果您在安装或运行时遇到问题,请参阅常见问题解答部分。

将模型转换为 Core ML

第一步:创建Python环境并安装依赖:

conda create -n coreml_stable_diffusion python=3.8 -yconda activate coreml_stable_diffusioncd /path/to/cloned/ml-stable-diffusion/repositorypip install -e .

第 2 步:登录或注册您的Hugging Face 帐户,生成用户访问令牌huggingface-cli login并使用此令牌通过在终端窗口中运行来设置 Hugging Face API 访问。

第 3 步:导航至您想在Hugging Face Hub上使用的 Stable Diffusion 版本并接受其使用条款。默认模型版本为CompVis/stable-diffusion-v1-4。用户可以按照下一步中的描述更改模型版本。

第 4 步:从终端执行以下命令以生成 Core ML 模型文件 ( .mlpackage)

  • ounter(line
python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o <output-mlpackages-directory>

警告:此命令将从 Hugging Face 下载数 GB 的 PyTorch 检查点。

在 M1 MacBook Pro 上,这通常需要 15-20 分钟。成功执行后,构成 Stable Diffusion 的 4 个神经网络模型将从 PyTorch 转换为 Core ML ( .mlpackage) 并保存到指定的<output-mlpackages-directory>. 一些额外的值得注意的论点:

  • --model-version: 模型版本默认为CompVis/stable-diffusion-v1-4。开发人员可以指定Hugging Face Hub上可用的其他版本,例如stabilityai/stable-diffusion-2-base & runwayml/stable-diffusion-v1-5。

  • --bundle-resources-for-swift-cli:编译所有 4 个模型并将它们与用于文本标记化的必要资源捆绑在一起,这些资源<output-mlpackages-directory>/Resources应作为输入提供给 Swift 包。对于基于扩散器的 Python 管道,此标志不是必需的。

  • --chunk-unet:将 Unet 模型分成两个大致相等的块(每个块的权重小于 1GB)以进行移动友好部署。这是在 iOS 和 iPadOS 上部署 ANE所必需的。这不是 macOS 所必需的。Swift CLI 能够使用 Unet 模型的分块版本和常规版本,但优先考虑前者。请注意,chunked unet 与 Python 管道不兼容,因为 Python 管道仅适用于 macOS。分块仅适用于使用 Swift 的设备上部署。

  • --attention-implementation:默认为在 Apple Neural Engine 上部署 Transformers 中SPLIT_EINSUM描述的实现。将切换到应该用于非 ANE 部署的替代方案。请参阅性能基准部分以获得进一步的指导。--attention-implementation ORIGINAL

  • --check-output-correctness:将原始 PyTorch 模型的输出与最终 Core ML 模型的输出进行比较。此标志会显着增加 RAM 消耗,因此建议仅用于调试目的。

使用 Python 生成图像

使用基于stable_diffusion的示例 Python 管道运行文本到图像生成:

  • ounter(line
python -m python_coreml_stable_diffusion.pipeline --prompt "a photo of an astronaut riding a horse on mars" -i <output-mlpackages-directory> -o </path/to/output/image> --compute-unit ALL --seed 93

有关所有可用参数,请参阅帮助菜单:python -m python_coreml_stable_diffusion.pipeline -h。一些值得注意的论点:

  • -i:应该指向上面"将模型转换为 Core ML "部分的-o第 4 步中的目录。

  • --model-version:如果您在将模型转换为 Core ML 时覆盖默认模型版本,则需要在此处指定相同的模型版本。

  • --compute-unit:请注意,此特定实现的最高性能计算单元可能因不同的硬件而异。CPU_AND_GPU或者CPU_AND_NE可能比ALL. 请参阅性能基准部分以获得进一步的指导。

  • --scheduler: 如果你想尝试不同的调度器,你可以在这里指定。有关可用选项,请参阅帮助菜单。您还可以指定自定义推理步骤数--num-inference-steps,默认为 50。

使用 Swift 生成图像

系统要求

构建 Swift 项目需要:

  • macOS 13 或更新版本

  • 安装了命令行工具的 Xcode 14.1 或更高版本。请检查developer.apple.com以获取最新版本。

  • 核心 ML 模型和标记化资源。请参阅上面--bundle-resources-for-swift-cli的将模型转换为 Core ML部分

如果将此模型部署到:

  • 苹果手机

    • iOS 16.2 或更新版本

    • iPhone 12 或更新版本

  • iPad
    • iPadOS 16.2 或更新版本

    • M1 或更新版本

  • 苹果电脑
    • macOS 13.1 或更新版本

    • M1 或更新版本

CLI 用法示例

swift run StableDiffusionSample "a photo of an astronaut riding a horse on mars" --resource-path <output-mlpackages-directory>/Resources/ --seed 93 --output-path </path/to/output/image>

输出将根据提示和随机种子命名:例如</path/to/output/image>/a_photo_of_an_astronaut_riding_a_horse_on_mars.93.final.png

请使用--helpflag 了解批处理生成等。

库使用示例

import StableDiffusion...let pipeline = try StableDiffusionPipeline(resourcesAt: resourceURL)let image = try pipeline.generateImages(prompt: prompt, seed: seed).first

Swift包详情

这个 Swift 包包含两个产品:

  • StableDiffusionLib

  • StableDiffusionSample命令行工具

这两种产品都需要提供 Core ML 模型和标记化资源。通过目录路径指定资源时,该目录必须包含以下内容:

  • TextEncoder.mlmodelc(文本嵌入模型)

  • Unet.mlmodelcUnetChunk1.mlmodelcUnetChunk2.mlmodelc(去噪自动编码器模型)

  • VAEDecoder.mlmodelc(图像解码器模型)

  • vocab.json(分词器词汇文件)

  • merges.text(合并字节对编码文件)

可选地,它还可以包括安全检查器模型,某些版本的 Stable Diffusion 包括:

  • SafetyChecker.mlmodelc

请注意,首先检查 Unet 的分块版本。只有当它不存在时才会Unet.mlmodelc加载完整的。iOS 和 iPadOS 需要分块,而 macOS 则不需要。

Apple官方优化Stable Diffusion绘画教程相关推荐

  1. 《ai绘画》最全stable diffusion安装教程 所有软件+所有指令

    安装cuda,win键搜索nvidia Control Panel,打开软件 点击软件左下角系统信息 查看自己的cuda版本 打开网站,根据自己的版本选择cuda下载 网站 https://devel ...

  2. Stable Diffusion绘画入门

    一,Stable Diffusion模型原理 目前开源的最火爆的AI绘画系统是 Stable Diffusion 模型(稳定扩散模型). 可以完成 text2img, img2img, depth2i ...

  3. Stable Diffusion 绘画初探 chilloutmix模型 人物画像首选

    AI绘画发展以来出现了很多优质的平台,Stable Diffusion是普通大众最爱的之一,比起MJ来讲,它是现在愿意动手的人的首选,在这里要首先感谢GITHUB上的一众开源大佬. AI绘画首先吸引大 ...

  4. InsCode Stable Diffusion使用教程【InsCode Stable Diffusion美图活动一期】

    记录一下如何使用 InsCode Stable Diffusion 进行 AI 绘图以及使用感受. 一.背景介绍 目前市面上比较权威,并能用于工作中的 AI 绘画软件其实就两款.一个叫 Midjour ...

  5. Stable Diffusion安装教程、model导入教程以及精品promt指令

    文章目录 引言 原理 图片感知压缩 潜在扩散模型 安装 插件 插件与模型下载 常用promt关键字 交流讨论 引言 最近大火的AI作画吸引了很多人的目光,AI作画近期取得如此巨大进展的原因个人认为有很 ...

  6. Colab Stable Diffusion使用教程

    使用网址链接: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_di ...

  7. AMD显卡Ubuntu20.4系统下部署stable diffusion

    今天来给大家做一个AMD显卡使用stable diffusion的小白(硬核)教程.最近这段时间AI特别火,很多小伙伴看到各种大佬用AI画的老婆非常精美(色情),弄的人心痒痒,自己也想画一个心仪的老婆 ...

  8. stable diffusion webui mov2mov

    手把手教你用stable diffusion绘画ai插件mov2mov生成动画_哔哩哔哩_bilibili手把手教你用stable diffusion绘画ai插件mov2mov生成动画, 视频播放量 ...

  9. Stable Diffusion 图片生成AI模型 Windows Mac部署指南

    Stable Diffusion是2022年发布的深度学习文本到图像生成模型.它主要用于根据文本的描述产生详细图像,它也可以应用于其他任务,如内补绘制.外补绘制,以及在提示词​(英语)指导下产生图生图 ...

最新文章

  1. 如何低价坐飞机头等舱
  2. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
  3. 深度学习在AEC中的应用探索
  4. 在Ajax方式产生的浮动框中,点击选项包含某个关键字的选项
  5. oracle怎么查询和插入表,Oracle查询一个表的数据插入到另一个表
  6. C语言:存储类型,内存管理
  7. tensorflow 在加载大型的embedding模型参数时,会遇到cannot be larger than 2GB
  8. Windows下Node.js安装及环境配置
  9. Oracle数据库关闭的三种方法
  10. java关键字只static
  11. python ocr识别身份证_如何使用Tesseract训练基于Python的OCR以使用不同的国家身份证?...
  12. 微型计算机控制系统的硬件组成
  13. Hprose轻松实现远程过程调用(RPC)
  14. android epson wifi,epson投影仪无线投屏怎么连接手机、电脑
  15. 抖音的服务器究竟有多大
  16. 小米相机摄像头测试软件,摄像头拍照效果测试
  17. 导向滤波与opencv python实现
  18. 浅显易懂的经济学常识
  19. shiro身份认证(HelloWorld)
  20. vue---隐藏登录页面导航栏,登录成功跳转页面出现导航栏

热门文章

  1. PHP:150个内置函数简单整合
  2. java typedef的用法,typedef
  3. VB6编程:DirectX 2D图形学习日志22创建卡通动画
  4. orangepi+腾讯云服务器+frp配置内网穿透
  5. python列表,字典,集合
  6. ------布尔索引-----
  7. powerdesign的使用
  8. i2c时序图的详细讲解
  9. 正则表达式语法及用法
  10. Canvas 雾玻璃