Stabile Diffusion implementiert von NCNN Framework basierend auf C ++, unterstützt TXT2IMG und IMG2IMG!
Zhihu: https://zhuanlan.zhihu.com/p/582552276
Video: https://www.bilibili.com/video/bv15g411x7hc
TXT2IMG-Leistung (Zeit vor und RAM)
| pro-it | i7-12700 (512x512) | I7-12700 (256x256) | Snapdragon865 (256x256) |
|---|---|---|---|
| langsam | 4,85s/5,24 g (7,07 g) | 1,05S/3,58 g (4,02 g) | 1,6s/2,2 g (2,6 g) |
| schnell | 2,85S/9,47G (11,29G) | 0,65s/5,76 g (6,20 g) |
2023-03-11: Ich freue mich, IMG2IMG Android hinzuzufügen und neue APK zu veröffentlichen
2023-03-10: Ich freue mich, IMG2IMG x86 hinzuzufügen
2023-01-19: Beschleunigen und weniger RAM in x86, dynamische Form in x86
2023-01-12: Aktualisieren Sie den neuesten NCNN-Code und verwenden Sie das Modell optimieren, Android aktualisieren, Speichermonitor hinzufügen
2023-01-05: Fügen Sie 256x256 Modell zum X86-Projekt hinzu
2023-01-04: Fucken Sie das MHA-OP in x86 zusammen und beenden Sie das schnelle Gelu


Alle Modelle und EXE -Dateien, die Sie von 百度网盘 oder Google Drive oder Release herunterladen können
Wenn Sie nur ein NCNN-Modell benötigen, können Sie es aus 硬件模型库-设备专用模型 durchsuchen, es wäre schneller und freier.
AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin, AutoencoderKL-encoder-512-512-fp16.bin und setzen sie in den Ordner assets einmagic.txt ein. Jede Zeile sind:stable-diffusion.exeHinweis: Bitte entsprechen den Anforderungen des SD -Modells und verwenden Sie es nicht für illegale Zwecke
AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin, AutoencoderKL-encoder-512-512-fp16.bin und setzen sie in den Ordner assets ein cd x86/linux
mkdir -p build && cd build
cmake ..
make -j $( nproc )AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin und build/assets./stable-diffusion-ncnnAutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin und setzen Sie sie in den Ordner assets einIch habe die drei ONNX-Modelle hochgeladen, die von Stable-Diffusion verwendet werden, damit Sie einige interessante Arbeiten leisten können.
Sie können sie aus dem obigen Link finden.
ncnn (input & output): token, multiplier, cond, conds
onnx (input & output): onnx::Reshape_0, 2271
z = onnx(onnx::Reshape_0=token)
origin_mean = z.mean()
z *= multiplier
new_mean = z.mean()
z *= origin_mean / new_mean
conds = torch.concat([cond,z], dim=- 2 ) ncnn (input & output): in0, in1, in2, c_in, c_out, outout
onnx (input & output): x, t, cc, out
outout = in0 + onnx(x=in0 * c_in, t=in1, cc=in2) * c_out