AIGC04 Stable Diffusion Write Prompt Better

AIGC04 Stable Diffusion Write Prompt Better

该章节主要包括 Promot 生成和部分工作流的分析,旨在了解如何写出更好的关键词,如何生成更好的图片,当我们不知道怎么描述的时候也可以将该工作交给 ChatGPT,让其为我们攥写一般基础的提示词

Prompt 编写范式

参考资料:【Stable Diffusion】Prompt

通常编写可以遵照以下的类别进行组织,主要有 <质量控制> + <前置> + <主体> + <场景词> 几类,其中分别包括以下的几类词:

  • 质量控制:画质、镜头效果、光照效果
  • 前置词:画风、艺术家、风格
  • 主体:人物&对象、姿势、服装、道具
  • 场景:环境、背景、细节
  • Additional Network:载入额外模型

分割符号: 各个关键词之间用 , 分割,且对应的权重从前到后依次递减,因此在编写关键词的时候也要注意先后顺序。

权重加权符号:各种括号代表各种不同的加权系数,这里建议用 (prompt: weight) 统一来编写提示词的权重规则,整体可读性会更好。

这里的 weight 指的是权重变成原本的 weight 倍,就可以调整加强或减弱。

各个括号的默认系数如下: () -> 1.1 ; {} -> 1.05 ; [] -> 0.952
可以通过(())进行叠加即 1.1*1.1


AIGC03 Stable Diffusion Control Net

AIGC03 Stable Diffusion Control Net


AIGC02 Stable Diffusion 基础功能介绍

AIGC02 Stable Diffusion 基础功能介绍

本篇章介绍关于 Stable DIffusion 的一些基础概念和 WebUI 的基本功能元素,同时介绍一些启动项和模型加载的东西。

启动项设置(局域网)

最常用的启动项是 --listen,通过该启动项允许局域网内的其他设备通过 ip 和端口访问部署好的 Stable Diffusion 服务。而设置启动项的方式有以下几种:

  1. 命令行执行启动脚本的时候携带
1
2
./webui.bat --listen
# ./webui.sh --listen
  1. 修改主入口脚本中的启动选项 vim launch.py
1
2
3
# 修改下面这一行的参数, 将" "中填入需要的参数
# commandline_args = os.environ.get('COMMANDLINE_ARGS', "")
commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen")
  1. 其他的启动项介绍可以参考:2.3. 命令列引數 | Stable Diffusion WebUI使用手冊(正體中文)|Ivon的部落格 (ivonblog.com)

Windows Configuration05 CUDA & Cudnn

Windows Configuration05 CUDA & Cudnn

在 Windows 和 WSL2 中安装 Cuda 和 Cudnn ,是配置 GPU 开发环境中重要的一步,其支撑了 AI 模型进行 Training 和 Interface 。本篇介绍安装 CUDA 和 Cudnn 的步骤和一些踩过的坑。

参考资料如下:版本查看 | Win 安装 Cuda 和cuDNN | WSL 2 安装 CUDA 和cuDNN

Win 11 安装 CUDA 和 cuDNN

CUDA

首先在 Nvidia 的控制面板:帮助-系统信息的如下位置,查看 GPU 最大支持的 CUDA 版本:

image.png

也可以使用 Nvidia-smi 命令在 Powershell 或者 CMD 中查看:

image.png

确定了版本之后到 Nvidia CUDA下载页面 下载指定版本的 CUDA 进行安装(根据安装指引进行)即可,安装位置等默认即可,其中有一些安装选项即是 Nvidia GeForce Experience 安装的内容。

安装完成后在 CMD 或者 PowerShell 确认是否安装完成(需要重启终端):

1
nvcc -V

image.png


AIGC01 Stable Diffusion and midjourney Setup

AIGC01 Stable Diffusion and midjourney Setup

This Chapter introduce how to set up stable diffusion and mid-journey, and record some problem I meet when I deploy it.

(Deprecated) midjourney

由于 midjourney 现需要付费使用,同时没有开源,因此我们讲一笔带过该部分内容,该部分内容大多转载于 超详细!AI 绘画神器 Midjourney 基础使用手册

midjourney 的安装步骤主要分成以下的几步:

  1. 点击 Join the Beta 注册账号,注册完会跳转到;
  2. Discord 首页,亲自创建自己的服务器,仅供我和我的朋友使用;
  3. 下载客户端,在默认对话界面讯在或开始新的对话,输入 Midjourney Bot,添加到服务器
  4. 付费开启体验。

(Deprecated) DreamStudio

说是可以本地部署,但是实际体验非常不好,应该只是部署了 Webui,然后调用官方提供的免费 API;所以有时候生成不出来,但是又不报错,不知道是不是使用姿势有问题,反正很屎。

  • https://github.com/Stability-AI/StableStudio
  • 装好 npm 和 yarn
  • 参考 quick start,git clone -> (cd) yarn 安装 -> yarn dev 部署在本地端口上。
  • 官网注册账号-> 获取 API -> 填入并在最上方转到 Generate 页面即可。

Stable Diffusion 部署专题

该部分作为 Intro,仅介绍 Stable Diffusion 的安装和部署,以及一些启用参数等,具体的使用在后面的文章进行进一步的讲解。

基于官方 REPOAUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (github.com)

这里介绍基于 windows 的安装和 WSL2 的安装部署过程。整体的安装可能会分成以下的几个步骤进行:(推荐在安装和部署之前,参考 [[WindowsCudaCudnn]] 一文,首先配置 CUDA,也可以遇到问题再部署)

  • 基础依赖和环境安装(python、CUDA)
  • Stable DIffusion 的 UI 界面和部分插件安装
  • 模型下载和加载

Grep、Sed、Awk 03 Awk

Grep、Sed、Awk 03 Awk

Linux 三剑客之 Awk (由三个创始人的姓氏首字母组成),相比于 Grep 和 Sed 而言更为特殊一些,它是一种模式匹配的编程语言,其主要的作用匹配文本进行处理,其擅长实现对文本的格式化输出,而作为一门编程语言:支持函数,变量,循环,运算,但相对简单。

AWK 的执行逻辑是:搜索文件的每一行,如果发现匹配内容,就执行下一个编程步骤,如果没发现,就继续处理下一行的内容。

Intro

由于 AWK 实际上是一个编程语言,本篇主要只介绍其命令行用法。

首先介绍 AWK 命令,其主要用于匹配文本并格式化输出,适用于对表格化的数据机型处理。其使用模板大致如下:

1
2
3
4
awk [options] 'program' var=value file...
awk [options] 'pattern {action1; action2; ...}' file ...
awk [options] -f programfile var=value file...
awk [options] 'BEGIN{ action;... } pattern{ action;... } END { action;... }' file ...
  • -f scriptfile: 从脚本文件中读取 awk 命令
  • -v var=value: 赋值一个用户定义变量,也可用这种方式修改内置变量
  • -F fs: fs 可为任意字符串或者正则表达式,用于指定分隔符(也可以通过-v 的方式修改内置的分隔符变量来实现)

每个 action 或者说 statement 之间用 分割

参考资料:AWK wikipedia | practical-programming-books/awk.md | 一. AWK入门指南 — AWK程序设计语言 | Linux文本三剑客超详细教程—-grep、sed、awk - alonghub


Grep、Sed、Awk 02 Sed

Grep、Sed、Awk 02 Sed

Linux 三剑客之 Sed,相比于擅长数据查找定位的 Grep,Sed(Stream Editor)擅长做的是数据修改,做的主要是做一些增删改的功能。 sed 和 awk 的区别是什么?

Intro

首先介绍 Sed 命令,Stream Editor 流编辑器,针对字符流来进行文件编辑,同样,其核心也在于正则匹配式,其用法如下:

1
sed [option] {script} [input-file]

其中{script}可以理解为三者的组合:sed 动作指令+Reg 用正则&行号确定修改位置+修改的内容:Script 是 Sed 的核心,分别对应着:操作的行为,操作的位置和操作的内容。

Sed 的用法也可以按照这个来记:

1
sed [-hnV] [-e <script>] [-f <script文件>] [文本文件]

h 显示 helo ;-n 表示静默输出,-V 显示版本;参考第一种用法,-e 可以指定多个 script 对输入的文件进行处理,-f 则可以将多个 script 写在文件中,通过读取文件中的 scripts 来对文本文件进行处理。

作为文本编辑器,Sed 是一行一行的处理文件内容,将正在处理的每一行内容放在缓冲区中按照约定进行修改,处理后按照约定修改文件或输出,接着在处理下一行,直到整个文件处理内容。

其主要用来编辑和处理一个或者多个文件,简化对于文件的重复操作。

参考资料:sed 和 awk 的区别-知乎 | Man | sed 简明教程 | CoolShell | Linux sed 命令 | 菜鸟教程 | Linux文本三剑客超详细教程—-grep、sed、awk


Grep、Sed、Awk 01-Grep

Grep、Sed、Awk 01-Grep

Linux 三剑客之 Grep。Grep 估计会是大部分 Linux 用户最常用的文本搜索命令了,在三剑客中的使用场景也是最广泛的。在对正则有了基本了解之后,就可以更好的使用 Grep,同时也可以通过 Grep 的使用来更好的掌握常用的正则表达式。

Intro

首先介绍 Grep 命令,Global Regular Expression Print 全局正则表达式输出,使用正则表达式搜索文本内容输出。其使用模板如下:

1
grep [option] pattern file
  • option 指定 grep 的搜索模式
  • pattern 需要搜索的内容,可以用正则表达式指定一个模式来做匹配
  • file 可以是文件夹等路径,用来确定搜索的范围(仅支持通配符)[[Linux三剑客之正则]]

接下来分别对两个部分进行简单的说明,file 的范围指定参考正则文章中对通配符的介绍即可。


Grep、Sed、Awk 00 RegExp

Grep、Sed、Awk 00 RegExp

“awk、grep、sed 是 linux 操作文本的三大利器,合称文本三剑客,也是必须掌握的 linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。grep 更适合单纯的查找或匹配文本,sed 更适合编辑匹配到的文本,awk 更适合格式化文本,对文本进行较复杂格式处理。“

Linux文本三剑客超详细教程—-grep、sed、awk

在介绍这三个命令之前,需要对正则表达式有所了解,结合正则表达式来使用,才能发挥这 linux 三剑客的的全部能力。

正则表达式 RegExp

正则表达式: Regual Expression 为一类特殊字符和文本符号共通约定的一种 pattern,其中的一些字符并不表示其本身的含义,而是用来做通配符号。

其中基本正则表达式 BRE 是普遍支持的,而拓展正则表达式 ERE 通常则是需要特殊的参数来启用的。通过正则表达式中特殊符号的辅助,能够更快的过滤,查找,替换,处理字符流等。

除了在 grep、sed、awk 的 linux 三剑客中,在各个语言和各种搜索函数的地方,正则表达式都被普遍支持,应用相当广泛。

基础正则表达式对应的元字符主要有以下几个:

1
^ $ . [ ] *

而拓展正则表达式在上述元字符的基础上增加了:

1
( ) { } ? + | 

等字符,接下来我们将逐一展开各个元字符的作用。


内网穿透(NAT穿透)

内网穿透(NAT穿透)

本文简要介绍对内网穿透技术、对内网穿透技术的需求以及介绍一些用于”个人”进行内网穿透的工具和使用。

1. 什么是内网穿透(NAT traversal)

在计算机科学中,NAT穿越(NAT traversal)涉及TCP/IP中的一个常见问题,即在处于使用了NAT设备的私有TCP/IP网络中的主机之间创建连接的问题。

其中 NAT 即网络地址转换(Network Address Translation)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。

NAT 是作为一种解决IPv4地址短缺以避免保留 IP 地址困难的方案而流行起来的。NAT 成了家庭和小型办公室网络连接上的路由器的一个标准特征。

其中最为常见的 NAT 设备就是家家户户都有的路由器,将所有的设备在局域网中统一管理,并基于唯一的公网 ip 对互联网(私有网络)进行访问。

而 NAT 会带来以下的问题,因此会需要内网穿透的技术:

  • 外网主动发起的服务无法准确的定位到内网的指定机器,会被 NAT 设备丢弃,因此链接会变成单项的,无法双向交互。

因此无法在外网访问内网机器提供给局域网的服务,因此我们的机器,我们部署于 NAS、docker 的服务就只能在局域网中访问,在一定程度上就造成不便。