苹果M1芯片上运行Stable Diffusion,生成图片只需15秒,几步搞定

liftword3个月前 (01-08)技术文章37

机器之心报道

机器之心编辑部

大火的Stable Diffusion,现在也能在苹果电脑上运行了。

最近由慕尼黑大学等机构新出的文本 - 图像模型 Stable Diffusion,可谓是火出了圈,生成的图片妥妥达到大片级别:

生物的进化

Stable Diffusion 可以在消费级 GPU 上的 10 GB VRAM 下运行,并在几秒钟内生成 512x512 像素的图像,无需预处理和后处理。

最重要的是,Stable Diffusion 是开源的,任何人都可以运行和修改它。

更是有研究者将其和 Web UI「拼在」一起,两者组合成绘画工具,让没有系统学习过 UI 知识的你,也可以上手操作。无需手动输入参数,调整滑块就可以了:

在城堡外面安排一名侍卫,并让一位骑马的战士奔向城堡

你可能也想上手体验一把 Stable Diffusion 带来的创作体验,但困于资源有限,实现不了?不用担心,在云上就能运行 Stable Diffusion,此外,对于有能力的小伙伴,也可以本地运行。

想要本地运行的话,可能就有点复杂了,比如在 M1 Mac 的 GPU 上工作就有点棘手。这里,本文将介绍一种简单指南来告诉你如何做到这一点。

实现过程

首先你需要带有 M1 或 M2 芯片的 Mac;其次是 16GB RAM,假如是 8GB RAM 的话,运行会非常慢;最后是 macOS 12.3 或更高版本。

先决条件准备好后,接下来就是设置 Python 了,版本为 Python 3.10。不知道 Python 版本的,可以运行 python -V 查看:

$ python3 -V                                                                                       !11338
Python 3.10.6

假如你的 Python 是 3.10 或是更高版本,接下来的一步就可以跳过。否则你需要安装 Python 3.10,最简单的方法就是使用 Homebrew。安装方法如下:

brew update
brew install python

克隆存储库并安装依赖项

Python 安装好后,接下来就是安装 Stable Diffusion:

git clone -b apple-silicon-mps-support https://github.com/bfirsh/stable-diffusion.git
cd stable-diffusion
mkdir -p models/ldm/stable-diffusion-v1/

这里需要先设置 virtualenv 来安装依赖项:

python3 -m pip install virtualenv
python3 -m virtualenv venv

然后激活 virtualenv:

source venv/bin/activate

激活后,安装依赖项:

pip install -r requirements.txt

如果你看到类似于「Failed building wheel for onnx」的错误,你可能还需要安装这些包:

brew install Cmake protobuf rust

下载权重

转到 Hugging Face 存储库,阅读许可证,然后单击「Access repository」。在该页面上下载 sd-v1-4.ckpt (~4 GB) ,并将其保存在 models/ldm/stable-diffusion-v1/model.ckpt 目录中。

Hugging Face 存储库地址:https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

一切准备就绪,Stable Diffusion 就能运行起来了:

python scripts/txt2img.py \
  --prompt "a red juicy apple floating in outer space, like a planet" \
  --n_samples 1 --n_iter 1 --plms

输出结果保存在 outputs/txt2img-samples / 目录中,就像这样:

整个过程大约 15 秒就能生成 512x512 图像:

一些链接:

云运行 Stable Diffusion:https://replicate.com/blog/run-stable-diffusion-with-an-api

stable-diffusion GitHub:https://github.com/magnusviri/stable-diffusion

本文参考链接:https://replicate.com/blog/run-stable-diffusion-on-m1-mac

相关文章

python图像处理入门-提取轮廓

提取图像中物体的轮廓,通常用在图像识别中,比如图像像素级分割,应用面比较广。import cv2 import numpy as np from skimage.measure import fi...

使用 Python 玩转图片

我们有时候需要处理图片,对于一些不是非常复杂的图片处理,并非一定要使用 PS ,其实我们用 Python 代码也是可以实现滴~而且还挺方便,有些操作一两行代码就搞定了。有个 Python Image...

Python自动化:几分钟搞定数万张图片处理,完成美工一周工作量

在这个信息爆炸的时代,电子商务的竞争日益激烈,每一个细节都可能成为影响店铺流量的关键因素。最近,我的一位朋友就遇到了这样的挑战:他的阿里巴巴国际站店铺流量一直停滞不前,尽管高薪聘请了专业运营,但效果依...

如何在 Python 中从图像中提取表格

大约一年前,我的任务是从文档中提取和构建数据,主要包含在表格中。我没有计算机视觉方面的先验知识,很难找到合适的“即插即用”解决方案。可用的选项要么是基于神经网络 (NN) 的先进解决方案,这些解决方案...

如何使用python裁剪图片?

如何使用python裁剪图片如上图所示,这是一张包含了各类象棋棋子的图片。我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现。一、 安装PIL库如果此前没有安装过PIL库,...

一篇带你实战的Python绘图Turtle库

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行...