该笔记为学习javaweb时一些小细节的记录,主要为ssm相关内容
学习链接:
https://www.bilibili.com/video/BV1m84y1w7Tb
stable diffusion的个人笔记
基本介绍
这是能用AI技术生成图片的开源软件,只要给定一组描述文本,AI就会开始绘图(准确的说是「算图」或「生图」);亦能模仿现有的图片,生成另一张图片。甚至给它一部分涂黑的图片,AI也能按照你的意愿将图片填上适当的内容。除此之外还支持自行训练模型加强生图效果。
环境搭建
我最先使用的是下面介绍①的版本,但是缺少很多插件,用着不是很方便,于是使用了介绍②的版本。
版本①
关键步骤
此处以windows为例,其他操作系统可查看底部链接。
python、Anaconda等环境的搭建也可参考文章底部链接。
- 在终端输入以下代码
1 | git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git |
- 设置启动命令行参数
对stable-diffusion-webui
文件夹里面的webui-user.bat
按右键,以记事本打开。
接着您要编辑set COMMANDLINE_ARGS=
这一行启动参数。
若显卡VRAM在8GB以上,将set COMMANDLINE_ARGS=
替换成set COMMANDLINE_ARGS=--enable-insecure-extension-access
参数。
显卡VRAM小于等于4GB,将set COMMANDLINE_ARGS=
替换成set COMMANDLINE_ARGS=--medvram --opt-split-attention --enable-insecure-extension-access
参数。加上--medvram
的用意是为了限制VRAM占用。
电脑RAM(不是VRAM)小于等于8GB的话改替换为set COMMANDLINE_ARGS=--lowvram --opt-split-attention --enable-insecure-extension-access
参数。注意使用--lowvram
参数会让高端显卡算图变很慢。
(下面的不加也可以)
加上--xformers
可进一步减少VRAM占用,只支持Nvidia显卡。加入--no-half-vae
减少使用VAE算出黑图的几率。
加上--listen
参数再开放防火墙7860通信端口,即可用局域网路其他电脑的浏览器访问WebUI。
加上--share
参数则会产生一组Gradio网址,让你可以从外部网络或手机使用WebUI。网址72小时后过期。
其余可用参数请见命令行参数
之后就可以双击
webui-user.bat
文件运行了报错解决
出现报错缺少相关配置,且系统因某些原因无法自己安装该配置
1
AssertionError: Couldn't find Stable Diffusion in any of: ['E:\\stable-diffusion-webui-arc-directml\\repositories/stable-diffusion-stability-ai', '.', 'E:\\']
通过以下代码,在根目录新建
openai
文件夹,并在该文件夹中克隆相关配置1
git remove https://www.modelscope.cn/AI-ModelScope/clip-vit-large-patch14.git
torch版本无法适配
根据
requirements_versions.txt
文件要求以及终端提示,通过安装对应版本torch实现目标1
pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url https://download.pytorch.org/whl/cu121
版本②
关键步骤
这次使用了up主秋葉aaaki的sd版本,选择合适的版本下载后即可点击A绘世启动器.exe启动。
具体流程该up主有专门的视频)进行介绍
使用教程
参数
Prompt
提示词,通过,
符号分隔
Nagative Prompt
告诉ai要避免哪些内容。
此处一般是选择embeding的一些内容,用于避免一些基本错误(如多个手指等,虽然加上这些出来的图也有可能出现多个手指)。对于版本②,如果没有修改embedding文件夹中的内容的话,默认放置的四个基本错误都可以添加在Nagative Prompt中。
模型
模型一般通过大模型(checkpoint),以及Lora,embedding,VAE,hypernetworks,ControlNet等共同生成。之前在学习过程中又看到一个很有意思的说法:大模型->游戏本体,embedding->小mod,Lora->dlc。下面也将详细介绍一些常见的模型。
模型的获取
模型我一般都是在civitai)中获取。
如图所示,图片的左上角有两个参数,第一个表示的是什么类型的模型,第二个表示是基于什么技术的模型。如果使用的是stable-diffusion,那么如果第二个参数为小马的图标(pony),那么将无法正常使用模型。
选择你心仪的模型,点击download可以获取safetensors或pt文件,将每个模型放在对应的文件夹下
checkpoint
模型的存储地址为/models/stable-diffusion/
checkpoint是整个ai图像制作的大模型,是决定图片类型的基调(是现实风格还是漫画风格)。
embedding
模型的存储地址为/embeddings
可以把embeddings理解为一些提示词的词包/集合,这样可以避免输入过多的提示词。(可以看到embedding也就几十KB)
VAE
模型的存储地址为/models/VAE
可以理解为添加某种滤镜
Lora
模型的存储地址为/models/Lora
Lora是某个具体的描述,比如你要生成具体某个人的相关图片,涉及到这个人的五官、装饰等细节,那就可以使用Lora模型来在提示词中告诉ai,我需要一个***的人。
hypernetworks
模型的存储地址为/models/hypernetworks
也是用于改变画风,但相比于大模型的画风,超网格实现的是比如梵高/莫奈的画风。
参考文献
https://docs.stablediffusion.cn/article/1/592976494007943168.html
【AI绘画·24年8月最新】Stable Diffusion整合包v4.9发布!解压即用 防爆显存 三分钟入门AI绘画 ☆更新 ☆训练 ☆汉化 秋叶整合包_哔哩哔哩_bilibili
计算机网络复习笔记
由于此次复习目的为应对保研面试专业面部分,所以不会涉及计算内容
BT、磁力、直链与PT
知识背景
如何将自己的文件分享给其他人?
直链
实现
把该文件放在自己的服务器当中,其他人去对应网址下载软件。
举例
音乐软件缓存歌曲,小说网站下载小说,应用官网下载软件
缺点
- 所有人都去一个服务器下载,抢占网络带宽,导致每个人下载速度很慢
- 十分受分享方、服务器的影响,如果分享方或服务器受到影响就无法正常分享文件
BT
优化
不是全都从服务器下载,而是从已下载的人手中获取相对应的文件。
再优化方案,可以每个人都只下载某一部分文件,然后互相交换获取各自所需要的部分。(即p2p)
实现
制作一个种子文件,记录文件信息、分块大小,以及tracker服务器信息(用于获取谁有下载过该文件)。
缺点
- 还是无法摆脱服务器
- BT的资源分享上传全凭自愿,有些下载了某个文件的人不愿意将他的下载部分贡献出来
磁力
优化与实现
摆脱了服务器的限制。
让每个人都成为tracker服务器。在寻找“谁有下载过该文件”的信息时,会先进入到一个DHT网络,然后在这个网络里寻找tracker。(类似树上DFS)
举例
迅雷
PT
实现
将使用者限制在一个小圈子中,强制每个人只有上传了资源才能进行下载。上传数据量和下载数据量实现对等。
并查集
算法中所用的lambda表达式
acwing-4261
题意
给定一串字符串,求其中有多少长度>=3子串,且该子串中某个字符只出现一次。
思路
最终答案的求取可以通过遍历以i位置为所要求的只出现一次的字符所对应的子串数量来求取。
然后显然我们不可能直接对于每个字符c,都暴力的去找左边有多少个相邻的连续的连续的字符与c不同,以及右边有多少个相邻的连续的连续的字符与c不同。于是,我们需要通过预处理,来记录每个字符左右两边分别有多少个相邻的、连续的、与此字符不同的字符,最终的答案也可以理解为左边挑
由于还有一个限制是长度>=3,所以对某一边没有符合要求的字符时,需要另一边减去只取一个字符的情况,即:
bfs
DFS
DFS
DFS介绍
DFS,即深度优先搜索,经常用于暴力以及图上遍历等。相比于bfs,dfs是纵向的搜索,是一次性找到底的。从根找到底,然后退回来换条路继续走到底,直到走完。
DFS可以理解为是递归+回溯。对于一棵DFS树,其搜索的方式是从根结点开始,沿着一条边一直走到底,层层递归,每次进入一个子节点就可以理解为一个新的以此子节点为根的DFS树,称之为递归。当访问到叶子结点时,又需要将叶子结点的信息返回并总结到该叶子节点的父亲节点,称之为回溯。
DFS大部分分为树上DFS与图上DFS,但其实两者是相通的,图上DFS可以将上下左右四个方向的遍历结果转化为该位置的四个儿子结点,此时还需要一个vis数组用来记录该儿子结点是否在别的分支出现过,尽管从一个点到另一个点会有多条路径,但如果不是要求最短路径的情况下,往往只需要记录一次即可。