文章摘要
静莹莹

前言

哈喽哈喽,Welcome Back,怎么说呢,我们柠檬星博客也终于是实现了稳定月更了,现在离上篇文章也是差不多刚好一个月,这个速度我还是比较舒服的。

之前写过一篇本地部署Deepseek-Qwen等开源大模型,现在又来折腾文生图了喵。我自己是不怎么会用AI生图的人吧,虽然自己平时是AI的重度用户,但是我有AI洁癖,一般都会避免使用AI生成的内容,包括照片啊,文字啊什么的,就算是P图最多也就是让AI教我怎么P,让AI直接帮我P图我是不太能接受的。所以说我用AI生图的机会是真的不多,那为什么我还要折腾这个本地生图模型呢?那当然是因为市面上的文生图对nsfw内容的容忍度比较低啦……

Emm,反正就是这么邪恶的理由啦……

也正是因为这个,我们这次要用到的模型Z-Image Turbo虽然是阿里的,但是其实对于NSFW内容的支持度是比较好的,再加上它也比较轻量级,适合在我这台轻薄本上用,所以这次就采用Z-Image Turbo + zimage-ncnn-Vulkan的方案了。说实话我这台电脑的配置不是非常适合用来跑这个,特别是集显,还是AMD的,所以要多做一些工作,但是也只能硬着头皮上了。

那么我们依旧话不多说,直接开始吧!

(话说我部署本地模型的动力全都是想绕开人家的安全限制啊……)

设备信息:

操作系统: Windows 11 家庭中文版 25H2
机型: 机械革命 无界15X 暴风雪
处理器: AMD Ryzen AI 9 H 365
显卡: AMD Radeon 880M Graphics(集显)

项目要求:

  • 系统:Windows (建议win10以上)
  • 显卡:需支持 Vulkan (集显达到条件亦可)
  • 显存/内存:满足 (系统内存的一半) + (GPU显存) ≥ 16GB
  • 磁盘空间:约 20GB(模型文件约 12GB)

第一步:下载 zimage-ncnn-Vulkan

由于我的电脑没有独显,所以就不能用目前最主流的解决方案 ComfyUI 了,这也是我这台电脑最大的痛点,因为我一般出去旅行的时候都要带着,平常也要拿来拿去的,所以就选了轻薄本,牺牲的就是独立显卡啦

所以作为替代,我们使用 zimage-ncnn-Vulkan 方案。这个方案对电脑的配置要求很小,具体要求是需要满足 (系统内存的一半) + (GPU显存) ≥ 16GB就行。但是代价就是没有图形界面,所以我们后面还要给它再配一个图形页面。当然你的电脑如果配置好的话直接去折腾 ComfyUI 也是可以的。

我们先打开这个项目的Github仓库。

找到右测的Release连接,打开页面下载到Windows的zip包之后,我们就可以进行下一步了。

第二步:下载 Z-Image Turbo 模型

接下来去Hugging Face下载专门为zimage-ncnn-Vulkan转换的 ncnn 格式 Z-Image Turbo 模型,注意,Hugging Face上还有官方原始仓库(Tongyi-MAI/Z-Image-Turbo)和ComfyUI 的官方重打包版本(Comfy-Org/z_image_turbo),不要下错了。

下载方法是用Git克隆,如果没有Git的话用Powershell也可以。

在文件夹中打开Git Bash,逐行输入:

Git:

1
2
3
4
5
6
7
8
9
mkdir z-image-ncnn
cd z-image-ncnn
git init
git remote add origin https://huggingface.co/nihui-szyl/z-image-ncnn
git config lfs.fetchexclude "*"
git config lfs.fetchinclude "z-image-turbo/*"
git sparse-checkout init --cone
git sparse-checkout set z-image-turbo
git pull origin main

如果国内连接不上huggingface.co的话可以尝试镜像站

1
2
3
4
5
6
7
8
9
mkdir z-image-ncnn
cd z-image-ncnn
git init
git remote add origin https://hf-mirror.com/nihui-szyl/z-image-ncnn
git config lfs.fetchexclude "*"
git config lfs.fetchinclude "z-image-turbo/*"
git sparse-checkout init --cone
git sparse-checkout set z-image-turbo
git pull origin main

在文件夹中打开 Powershell,逐行输入:

Powershell:

1
2
powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"
hf download nihui-szyl/z-image-ncnn --include "z-image-turbo/*" --local-dir ./z-image-turbo-download

如果国内连接不上huggingface.co的话可以尝试镜像站

1
2
3
powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"
$env:HF_ENDPOINT="https://hf-mirror.com"
hf download nihui-szyl/z-image-ncnn --include "z-image-turbo/*" --local-dir ./z-image-turbo-download

第三步:本地运行 Z-Image Turbo

zimage-ncnn-vulkan.exe 放在与 z-image-turbo 文件夹同一级目录下。(模型文件通常位于z-image-turbo,即保证zimage-ncnn-vulkan.exe文件与文件夹z-image-turbo在同一目录即可)。

右键zimage-ncnn-vulkan.exe所在的文件夹 -> 在终端中打开,输入指令:

1
./zimage-ncnn-vulkan.exe -m z-image-turbo -p "你的提示词"  -s 宽度,高度 -l 9 -o out.png

下面是完整的参数列表和说明。

参数 全称 说明 默认值
-h help 显示帮助信息
-p prompt 正向提示词 rand (随机)
-n negative-prompt 负向提示词,可选
-o output-path 输出图片路径 out.png
-i input-image 输入图片(用于局部重绘)
-k mask-image 重绘蒙版,白色为重绘,黑色为保留
-x l,t,r,b 扩展画布(向外绘制),格式为左,上,右,下
-c control-image ControlNet 控制图
-w control-scale ControlNet 缩放比例 1.0
-t tile-upscale 启用 Tile ControlNet 放大模式
-s image-size 图片分辨率,格式为宽,高 1024,1024
-m model-path 模型路径 z-image-turbo
-l steps 去噪步数 auto (自动)
-r random-seed 随机种子 rand (随机)
-g gpu-id GPU 设备 ID,-1 表示使用 CPU auto (自动)
-b batch-size 批量生成数量 1

回车之后就会运行了,注意,如果未设置-l参数的话自动是8~9步,在step 1/9提示出来之前不会有任何提示,请耐心等待。

完成之后默认将图片保存到同级目录下,请注意检查。

这样模型基本上就可以用了,本来想给这东西配置一个图形化界面的,但是zimage-ncnn-Vulkan这个项目毕竟不是一个大项目,没有那么多适配的项目,只能给它写一个bat了

第四步:Bat 脚本启动

在包含zimage-ncnn-vulkan.exe的文件夹中右键 -> 新建文本文档 -> 改名运行脚本.bat(一定要把后缀名改掉)-> 右键编辑 -> 粘贴下列代码 -> ctrl+s 保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
cd /d "%~dp0"

:input_prompt
set EXTRA=
set /p prompt=请输入提示词:
if "%prompt%"=="" (
echo 提示词不能为空,请重新输入。
goto input_prompt
)

set /p width=请输入宽度 (默认 512,回车直接使用):
if "%width%"=="" set width=512

set /p height=请输入高度 (默认 512):
if "%height%"=="" set height=512

set /p steps=请输入步数 (默认 8):
if "%steps%"=="" set steps=8

set SIZE_ARG=-s %width%,%height%

set /p more=需要更多参数吗?(y/n):
if /i not "%more%"=="y" goto skip_extra

set /p input=请输入输入图片路径 (修图/扩图),直接回车跳过:
if "!input!"=="" goto ask_cpu

set /p mode=请选择模式 1=修图 2=扩图 (输入 12):
if "!mode!"=="1" goto inpaint
if "!mode!"=="2" goto outpaint
echo 无效选项,跳过图片处理。
goto ask_cpu

:inpaint
set /p mask=请输入蒙版图片路径 (白色为重绘区域):
if "!mask!"=="" (
echo 蒙版路径不能为空,跳过修图。
goto ask_cpu
)
set EXTRA=!EXTRA! -i "!input!" -k "!mask!"
goto ask_cpu

:outpaint
set /p expand=请输入扩图边距 (必须为16的倍数,单位为像素,输入格式为左,上,右,下):
if "!expand!"=="" (
echo 扩图边距不能为空,跳过扩图。
goto ask_cpu
)
set expand=!expand: =!
set expand=!expand:,=,!
if "!expand:~-1!"=="," set expand=!expand:~0,-1!
set EXTRA=!EXTRA! -i "!input!" -x !expand!
set SIZE_ARG=
goto ask_cpu

:ask_cpu
set /p cpu=是否使用CPU生成 (y/n,默认n):
if /i "!cpu!"=="y" (
set EXTRA=!EXTRA! -g -1
) else (
set EXTRA=!EXTRA! -g auto
)

:skip_extra
zimage-ncnn-vulkan.exe -m z-image-turbo -p "%prompt%" %SIZE_ARG% -l %steps% -o out.png !EXTRA!

echo.
echo 生成完成,请查看 out.png
set /p again=是否继续生成?(y/n):
if /i "%again%"=="y" goto input_prompt

好了,这样就大功告成啦!根据每个人电脑配置的不同生成一张图片的时间有长有短,如果嫌慢的话可以去BIOS里面调一下专用显存的分配量(针对集显)(建议8~16GB),不过会从运行内存里面扣除空间就是了。BIOS的操作每个品牌甚至一个品牌下面的系列之间都可能有差别,我也没法写教程了。

接下来就是针对Z-image修图/阔图功能的一点说明。

输入图片功能特别说明:

输入图片功能支持两种模式:扩图和局部修改。

扩图

对于扩图,需要传入-i参数和-x参数,-i参数是输入图片的位置,建议传绝对位置。-x参数为数字,格式为左,上,右,下,表示为需要拓宽的像素,逗号必须为半角(英文)逗号。最重要的是,参数必须是16的倍数(不知道为啥)

正确传入两个参数之后就可以开始生成了。

修图

修图是比较麻烦的,因为必须要传入一张示意图(用-k参数),这张示意图的长宽需要和原图保持完全一致,并在示意图中将原图需要修改的部分涂为白色,需要保留的地方涂为黑色传给大模型。涂白的地方越精确越好,以免AI生成幻觉内容。

后记

那么这篇文章就到这里啦!不得不说用 zimage-ncnn-Vulkan 这个方案的限制还是比较多的,LoRa也不支持,但是好处就是在显卡配置低的机器上也能跑起来,如果以后要跑多点这种AI的话就得考虑升级一下家里的台式机配置了(不要啊就现在内存条比黄金还贵的价格……)

话说内存条就是因为AI才涨价的……我因为AI去买内存条是不是就成帮凶了……

至于那些显卡配置高的朋友们就不用委屈看我的这篇文章了喵,ComfyUI的教程还是比较全的,全到我都怀疑我写这篇文章有没有必要了(我本来是想用ComfyUI的)

OK,那这篇文章就到这啦!不出意外的话下篇文章应该就在10月中下旬了,最近想白嫖个甲骨文的免费VPS玩玩,下篇文章或许就是讲这个的也不一定。那我们下次再见!