0%

原理

Stable Diffusion is a latent text-to-image diffusion model. Thanks to a generous compute donation from Stability AI and support from LAION, we were able to train a Latent Diffusion Model on 512x512 images from a subset of the LAION-5B database. Similar to Google’s Imagen, this model uses a frozen CLIP ViT-L/14 text encoder to condition the model on text prompts. With its 860M UNet and 123M text encoder, the model is relatively lightweight and runs on a GPU with at least 10GB VRAM.

本地部署

env requirement:

models

  • GFPGAN 腾讯开源的人像修复算法
  • VAE (Variational Auto-Encoder 变分自编码器)
  • LoRA (Low-Rank Adaptation of Large Language Models) 自然语言处理
  • DeepBooru

    vas

tags

korean doll

nagetive prompt

paintings, sketchers, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans

troubleshooting

not enough GPU memory

1
2
3
4
5
6
7
8
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --lowvram --no-half --precision full --no-half-vae --opt-sub-quad-attention --opt-split-attention-v1 --autolaunch

call webui.bat

No python at “D:\Program Files\Anaconda3\env\py310\Python.exe”
删除项目env下除Libs外的所有文件 重新执行webui.bat

资源

安装Anaconda后 默认只能在conda prompt中使用,若在cmd控制台使用conda命令
需要将Anaconda/Scripts/目录假如环境变量

可以形如下添加源的命令

1
2
conda config --add channels - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

或编辑用户目录下的.condarc文件 如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
channels:
- defaults
auto_activate_base: true
anaconda_upload: false
show_channel_urls: true
defaults_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

清理环境缓存
1
conda clean -i

显示channels
1
conda show channels

创建指定python版本的虚拟环境

1
conda create -n py310 python=3.10.6

TroubleShooting CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/nux-64

错误原因 D:\Anaconda3\DLLs_ssl.pyd会寻找依赖库OpenSSL DLLs,由于项目目录下未找到,它会去默认目录C:\Windows\System32查找,默认目录下存在该库,但是别的应用安装的,版本不一致,所以出现上述错误。

解决方法:从目录D:\Anaconda3\Library\bin下复制libcrypto-1_1-x64.和libssl-1_1-x64.到D:\Anaconda3\DLLs,这样就会在项目目录下直接查找到该库了。 参考CSDN Blog

激活虚拟环境

列出环境

1
conda env list

激活
1
conda activate py310

TroubleShooting Your shell has not been properly configured to use ‘conda activate’. If using ‘conda activate’ from a batch script, change your invocation to ‘CALL conda.bat activate’.

管理员权限打开命令行 conda init cmd.exe, 同理powershell bash等终端,重启命令行即可执行activate命令

安装、更新、卸载包

1
2
3
4
conda install pandas
conda update pandas
conda remove pandas
conda remove -n py310 #清除所有

Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。

Application Window

App.xmal

1


MainWindow.xmal
1

dispatch.invoke

从主 UI 线程派生的后台线程不能更新的内容,比如在Button onClick中创建的线程,为了使后台线程访问Button的内容属性,后台线程必须将工作委托给
Dispatcher 与 UI 线程关联。 这通过使用Invoke 或 BeginInvoke实现。 Invoke 是同步,BeginInvoke 是异步的。

control template

实现一个按钮 倒圆角 背景 字体 MouseOver效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Button HorizontalAlignment="Center" VerticalAlignment="Center" Height="40" Width="120" 
Foreground="#4D4D4D" Content="Close" FontSize="14" FontWeight="bold" Click="btnOK_Click">
<Button.Template >
<ControlTemplate TargetType="{x:Type Button}" >
<Border x:Name="btnBorder" BorderBrush="{TemplateBinding Control.BorderBrush}" CornerRadius="5,5,5,5">
<Border.Background >#DDF9FE</Border.Background>
<TextBlock x:Name="BtnText" Text="{TemplateBinding ContentControl.Content}"
Foreground="{TemplateBinding Foreground}"
HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="btnBorder" Property="Background" Value="#36B0C9"/>
<Setter TargetName="BtnText" Property="Foreground" Value="#FFF"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>

瓶颈

  • 终端的渲染性能
    包括网页端WebGL的渲染性能,以及移动终端的硬件性能
  • 网络对大型模型场景的传输能力

像素流送

UE像素流送

WebGPU

WebGL是OpenGL ES版本API的封装,已经有十几年的历史,随着图形技术的发展,W3C提出全新的规范,浏览器封装了现代图形API(Dx12、Vulkan、Metal)让浏览器里面直接可以调用这三个现代图形API能力,实现高质量的渲染效果,调用GPU的强大计算能力。

WebGPU is available for now in Chrome Canary behind an experimental flag. You can enable it at chrome://flags/#enable-unsafe-webgpu . The API is constantly changing and currently unsafe.

WebGPU学习系列目录

成员函数的调用

1
2
3
void res = ClassA::functionX()
ClassA a;
void res = a.functionX()

Defination

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Employee:
'员工基类'
empCount = 0

def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1

def displayCount(self):
print("%d" % Employee.empCount)

def displayEmployee(self):
print ("Name : ", self.name, ", Salary: ", self.salary)

__init__:构造函数

self 代表类的实例,self 在定义类的方法时是必须有的,print(self)可以看到类实例字样及内存地址

Python内置类属性

  • __dict__ : 类的属性字典,由类的数据属性组成
  • __doc__ :类的文档字符串
  • __name__: 类名
  • __module__: 类定义所在的模块(类的全名是’__main__.className’,如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
  • __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

单下划线、双下划线、头尾双下划线说明:

  • __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

CSDN Blog: 继承和多态