Back to Mnn

MNN Diffusion 模型使用指南

transformers/diffusion/README.md

3.5.03.8 KB
Original Source

MNN Diffusion 模型使用指南

本目录包含MNN实现的Diffusion模型,支持Stable Diffusion和Sana Diffusion两种文生图模型。

目录


编译

bash
cd mnn_path
mkdir build
cd build
# 安卓开启-DMNN_OPENCL=ON,iOS开启-DMNN_METAL=ON
cmake .. -DMNN_BUILD_DIFFUSION=ON -DMNN_BUILD_LLM_OMNI=ON -DMNN_IMGCODECS=ON -DMNN_BUILD_LLM=ON
make -j32
# 安卓backend_type可设为MNN_FORWARD_OPENCL,iOS backend_type可设为MNN_FORWARD_METAL

使用说明

Stable Diffusion Demo

命令格式

bash
./diffusion_demo <resource_path> <model_type> <memory_mode> <backend_type> <iteration_num> <random_seed> <output_image_name> <prompt_text>

参数说明

参数说明可选值
resource_path模型资源路径模型文件所在目录
model_type模型类型0=SD1.5, 1=SD太乙中文版
memory_mode内存模式0=省内存, 1=速度优先, 2=平衡
backend_type后端类型0=CPU, 3=OpenCL, 6=Metal
iteration_num推理步数固定10步
random_seed随机种子任意整数
output_image输出图像路径如:output.jpg
prompt_text文本描述英文或中文

使用示例

示例1:基础使用(SD 1.5,英文)

bash
./diffusion_demo models/sd15 0 2 0 10 42 sunset.jpg "a beautiful sunset over the ocean"

示例2:GPU加速(OpenCL)

bash
./diffusion_demo models/sd15 0 2 3 10 42 output.jpg "a cute cat playing with yarn"

模型文件结构

models/sd15/
├── text_encoder.mnn    # CLIP文本编码器
├── unet.mnn            # UNet去噪模型
├── vae_decoder.mnn     # VAE解码器
└── vocab.txt           # Tokenizer词表

Sana Diffusion Demo

命令格式

bash
./sana_diffusion_demo <resource_path> <mode> <prompt> [input_image] [output_image] [width] [height] [steps] [seed] [use_cfg] [cfg_scale]

参数说明

参数说明默认值备注
resource_path模型资源路径-必需
mode生成模式-text2imgimg2img
prompt文本描述-支持中英文
input_image输入图像路径""img2img模式必需
output_image输出图像路径sana_out.jpg-
width输出宽度512必须是32的倍数
height输出高度512必须是32的倍数
steps推理步数5蒸馏加速,5步即可
seed随机种子42-
use_cfg是否使用CFG00=否, 1=是
cfg_scaleCFG强度4.5仅use_cfg=1时生效

使用示例

示例1:基础文生图(512x512)

bash
./sana_diffusion_demo models/sana text2img "一只可爱的猫咪" "" cat.jpg 512 512 20 42 0 4.5

示例2:使用CFG提升质量

bash
./sana_diffusion_demo models/sana text2img "夕阳下的海滩,细节丰富" "" beach.jpg 512 512 20 42 1 4.5

示例3:图像编辑(img2img)

bash
./sana_diffusion_demo models/sana img2img "添加彩虹" input.jpg output.jpg 512 512 20 42 0 4.5

模型文件结构

models/sana/
├── llm/                # Qwen3-0.6B LLM
│   ├── embeddings.mnn
│   ├── blocks_*.mnn
│   └── lm.mnn
├── connector.mnn       # 特征桥接
├── projector.mnn       # 特征投影
├── transformer.mnn     # DiT模型
├── vae_decoder.mnn     # VAE解码器
└── vae_encoder.mnn     # VAE编码器(img2img需要)