最近由 magic-quill 团队开源的 MagicQuill 项目十分引人瞩目,这个项目可以通过定制的 gradio 客户端针对不同的图像元素通过提示词进行修改,从而生成新的图像。值得一提的是,这个项目相当亲民,只需要20步迭代模型预测,甜品卡10秒钟就可以获取图片的修改效果,但是代价是至少需要40个G左右的磁盘空间。

本次分享一下如何在本地(Windows11)来部署MagicQuill项目。

首先需要下载依赖的权重模型,压缩包地址:

https://hkustconnect-my.sharepoint.com/:u:/g/personal/zliucz_connect_ust_hk/EWlGF0WfawJIrJ1Hn85_-3gB0MtwImAnYeWXuleVQcukMg?e=Gcjugg&download=1

推荐使用某雷进行下载,速度会比较快一点。

注意,权重解压后大约需要30G的硬盘空间,请预留好相应的磁盘空间。

随后,克隆官方的最新代码:

git clone --recursive https://github.com/magic-quill/MagicQuill.git
cd MagicQuill

把解压后的models目录,放入的项目的根目录。

复制权重后的目录结构:

E:\work\MagicQuill-main>treee -L 1
MagicQuill-main
├── LICENSE
├── MagicQuill
├── README.md
├── check_env.py
├── docs
├── gradio_magicquill-0.0.1-py3-none-any.whl
├── gradio_run.py
├── hf_download
├── models
├── py311_cu118
├── pyproject.toml
├── requirements.txt
├── tf_download
├── 检测运行环境.bat
└── 运行.bat

随后确保本地已经安装好 python3.11,安装包可以去Python.org官网下载。

当然也可以使用conda:

conda create -n MagicQuill python=3.11 -y
conda activate MagicQuill

官方推荐使用python3.10,但经过验证,python3.11也可以运行,且性能更好。

随后安装官方定制版本的gradio客户端:

pip install gradio_magicquill-0.0.1-py3-none-any.whl

由于项目依赖LLaVA,官方推荐使用pip安装:

(For Windows)
copy /Y pyproject.toml MagicQuill\LLaVA\
pip install -e MagicQuill\LLaVA\

但实际上,我们都知道,pip install -e 命令用于安装一个处于开发模式下的 Python 包。它不会复制包文件到你的 site-packages 目录,而是创建一个指向包源代码目录的符号链接(symbolic link)。这意味着你的项目代码的任何更改都会立即反映在你的 Python 环境中,而无需重新安装。这对于开发和调试非常有用。但是如果你的项目经常需要迁移,比如复制到别的磁盘或者发送给同事使用,这个包就会报错。

所以直接去LLaVA的官方项目,直接克隆项目:

git clone https://github.com/haotian-liu/LLaVA.git

随后把项目内的llava目录拷贝到当前Python环境的Lib\site-packages目录下即可,比如笔者的Python3.11环境安装在:E:\work\MagicQuill-main\py311_cu118\目录,那么就把llava目录拷贝到:E:\work\MagicQuill-main\py311_cu118\Lib\site-packages 即可。

这样即使项目迁移,该模块也不会失效。

接着回到 MagicQuill 项目,安装基础依赖:

pip3 install -r requirements.txt

随后安装 torch 三件套:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

接着修改 gradio_run.py 文件,把这段代码:

ckpt_name = gr.Dropdown(
label="Base Model Name",
choices=folder_paths.get_filename_list("checkpoints"),
value='SD1.5/realisticVisionV60B1_v51VAE.safetensors',
interactive=True
)

修改为:

default_model = os.path.join('SD1.5', 'realisticVisionV60B1_v51VAE.safetensors')
ckpt_name = gr.Dropdown(
label="Base Model Name",
choices=folder_paths.get_filename_list("checkpoints"),
value=default_model,
interactive=True
)

意思是给基础模型增加一个默认值。

设置一下环境变量:

set HF_ENDPOINT=https://hf-mirror.com
set CUDA_VISIBLE_DEVICES=0

最后运行命令启动服务:

python3 gradio_run.py

程序返回:

model_type EPS
Using pytorch attention in VAE
Using pytorch attention in VAE
self.brushnet_loader.inpaint_files: {'brushnet\\random_mask_brushnet_ckpt\\diffusion_pytorch_model.safetensors': 'E:\\work\\MagicQuill-main\\MagicQuill\\../models\\inpaint', 'brushnet\\segmentation_mask_brushnet_ckpt\\diffusion_pytorch_model.safetensors': 'E:\\work\\MagicQuill-main\\MagicQuill\\../models\\inpaint'}
BrushNet model file: E:\work\MagicQuill-main\MagicQuill\../models\inpaint\brushnet\random_mask_brushnet_ckpt\diffusion_pytorch_model.safetensors
BrushNet model type: SD1.5
BrushNet model file: E:\work\MagicQuill-main\MagicQuill\../models\inpaint\brushnet\random_mask_brushnet_ckpt\diffusion_pytorch_model.safetensors
Some parameters are on the meta device device because they were offloaded to the cpu.
BrushNet SD1.5 model is loaded
INFO: Started server process [41504]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:7860 (Press CTRL+C to quit)
HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK"

说明部署成功。

访问:http://127.0.0.1:7860

如此,就可以在本地愉快地玩耍了。

MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地部署的更多相关文章

  1. 深度学习03-(图像梯度处理、图像轮廓、图像预处理在AI中的应用)

    深度学习03-计算机视觉基本理论2 深度学习03-(计算机视觉基本理论2) 图像梯度处理 什么是图像梯度 模板运算 均值滤波 高斯滤波 中值滤波 边沿检测 锐化 图像轮廓 什么是图像轮廓 查找和绘制轮 ...

  2. AI:从游戏引擎--到AI

    原文链接:http://blog.csdn.net/left_la/article/details/6358911#t9 这是我在Gameres上看到的一篇文章,文章很长,全文分为11个部分,看后感觉 ...

  3. Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

    首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...

  4. 一个AI产品经理怎么看AI的发展

    一个AI产品经理怎么看AI的发展 https://www.jianshu.com/p/bed6b22ae837 最近一直在思考这个问题,人工智能接下来的几年会有什么样的发展,是否真的能够在很多工作岗位 ...

  5. MyBatis中动态SQL元素的使用

    掌握MyBatis中动态SQL元素的使用 if choose(when,otherwise) trim where set foreach <SQL>和<include> 在应 ...

  6. Meta AI 开源万物可分割 AI 模型(SAM)

    开始 4 月 6 日,根据 Meta AI 官方博客,Meta AI 宣布推出了一个 AI 模型 Segment Anything Model(SAM,分割一切模型).据介绍,该模型能够根据文本指令等 ...

  7. 动态生成元素动作绑定,jquery 1.9如何实现

    1.7后增加了 live()1.9后被移除了 网上说可以用 on() 代替 可以实际在动态生成元素上绑定动作,没效果,求解绝方法(用低版本的jQuery这种方法,求别说..) 答: 之前有老兄回答过类 ...

  8. javascript里面的数组,json对象,动态添加,修改,删除示例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. JavaScript 、jQuery动态创建元素的关键字~

    JavaScript动态创建元素: 1.创建元素  如:a 标签 var alink= document.createElement("a"); 2.j添加元素属性 alink.h ...

  10. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

随机推荐

  1. BibTeX 和 BibLaTeX

    BibTeX:传统的参考文献处理工具,使用 .bst 文件来定义参考文献的样式. BibLaTeX:功能更强大且更现代的工具,使用 .bbx..cbx 和 .dbx 文件来定义参考文献和引用的样式. ...

  2. 函数防抖-TS实现

    什么是函数防抖? 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时 实现很简单,大体就是设置一个变量来记录定时器,每次触发事件的时候就看定时器是否存在,如果存在清除一下,然后重新开启一 ...

  3. TypeScript – Using Disposable

    前言 TypeScript v5.2 多了一个新功能叫 Disposable. Dispose 的作用是让 "对象" 离开 "作用域" 后做出一些 " ...

  4. 使用Navicat Premium 将数据库导入、导出方法

    数据库导出 1.双击要导出的数据库,右键选转储SQL文件-,选择要保存的文件夹. 2.点击开始后,开始导出. 数据库导入 1.新建数据库,数据库的名字必须和导入的数据库文件一致. 2.在新建的数据库右 ...

  5. 记录JDK8到JDK17各个版本的更新重点

    虽然大多数公司还是用的JDK8但是也要去了解和学习一下新得东西 ## JDK8新特性(2014年初)(LTS版本) 1.Lambda表达式 2.函数式编程 3.接口可以添加默认方法和静态方法,也就是定 ...

  6. 【VMware VCF】使用 PowerVCF 连接和管理 VMware Cloud Foundation 环境。

    VMware 有一个非常强大的命令行工具叫 PowerCLI,该工具是基于 PowerShell 开发的模块,主要用于在 Windows 环境中连接和管理传统虚拟化解决方案,比如 vSphere.vS ...

  7. /proc/slabinfo 介绍

    slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab&g ...

  8. bpftool使用方法简介

    1.安装bpftool工具 看起来,在不同的linux发行版里,bpftool在不同的软件包里,ubuntu 22上,bpftool是linux-tools-generic的一部分,而树莓派里bpft ...

  9. kotlin函数和Lambda表达式——>高阶函数与lambda表达式

    1.高阶函数 高阶函数是将函数用作参数或返回值的函数. 一个不错的示例是集合的函数式⻛格的 fold,它接受一个初始累积值与一个接合函数,并通过将当前 累积值与每个集合元素连续接合起来代入累积值来构建 ...

  10. rancher发布nacos server docker 失败

    使用rancher发布nacos server 时报错 进入镜像查看日志发现报错No DataSource set 检查了好几遍环境变量已经全都配了,最后发现在nohup.out文件中指出没有找到na ...