【DDPM】DiffusionModel原理
持续施工中
I’m still working on it.
本文是根据油管视频整理的笔记,原视频中将DDPM和DDIM都有讲到,所以我会穿插一些DDIM的东西
导入
视频:https://www.youtube.com/watch?v=ifCDXFdeaaM
基本概念
训练过程–Forward Process
逐步添加高斯噪声,直到变成纯高斯噪声
生成过程–Denoise Process
逐步去除噪声,直到变成图像
训练过程
首先,我们来看看DDPM中的算法是怎么说的
x0∼q(x0)x_0 \sim q(x_0)
x0∼q(x0)
这里的x0x_0x0是一张干净的图像(样本集中的)
t∼Uniform(1,...,T)t\sim Uniform({1,...,T})
t∼Uniform(1,...,T)
从均匀分布中采样一个t
ϵ∼N(0,I)\epsilon \sim N(0,I)
ϵ∼N(0,I)
再从均值是0,方差是1的标准高斯分布采样一个噪声ϵ\epsilonϵ,这个噪声ϵ\epsilonϵ的尺寸大小和图像一样大,但里面全是噪声
∣∣ϵ−ϵθ(αˉtx0 ...
自建RustDeskServer
Rustdesk Server安装与使用
安装Rustdesk Server
在服务器输入lscpu或uname -m查看CPU构架
12uname -m# x86_64
比如我是x86_64,随后在rustdesk-server/releases找到相应的版本则下载rustdesk-server-linux-amd64.zip
"x86_64"和"amd64"实际上是同一种CPU架构的两种不同称呼,都指的是64位的x86处理器架构。
这种架构最早由AMD公司引入,因此有时被称为"AMD64",但后来也被Intel和其他制造商采纳。
1wget --no-check-certificate https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10-3/rustdesk-server-linux-amd64.zip
解压文件,进入到解压后的目录amd64
1unzip rustdesk-server-linux-amd64.zip ...
N1盒子重装Openwrt
N1盒子重装Openwrt
折腾了一天n1盒子,起因是看到一个新的代理协议"Hysteria"(安装视频:https://www.youtube.com/watch?v=CXj-ID33MhU),在成功地在windows和android上运行了Hysteria后,想在我的旧N1盒子上使用这个新协议,但奈何N1盒子的passwall版本太旧了,不支持Hysteria2,即使直接将Hysteria2的应用替换掉原应用,passwall对Hysteria2的支持也不够好。
于是,就尝试升级passwall,但由于N1盒子的系统版本太旧(21年的),使得直接升级passwall方案也失败。
于是乎……就开启了一系列的折磨,最终的方案是,重新安装24.01.26版本的openwrt系统,再在此系统中,使用Passwall2
如果要找N1重头开始盒子安装Openwrt,请查看:https://www.cnblogs.com/robotpaul/p/17127387.html
Openwrt版本选择
目前主流的openwrt系统有非常多的版本,而且分为“未编译”和“已编 ...
【Ubuntu】打造全自动追剧工具
部署参考,以及部署效果展示:https://www.bilibili.com/video/BV1wD4y1B7xZ
原视频是使用群晖nas进行部署,本文使用ubuntu上安装
一共需要安装三个软件:nas-tools(管理器), Emby(媒体播放器), qBittorrent(下载器)
挂载nas到ubuntu
把局域网的Nas设备挂载到Ubuntu电脑上
单次挂载
首先在Ubuntu 的 /mnt 目录下新建一个 NAS 挂载目录 nas:
123sudo mkdir /mnt/nas# 下面这个命令是为了共享时,允许匿名直接访问,解决权限问题sudo chmod 777 /mnt/nas
安装 cifs-utils
1sudo apt-get install cifs-utils
查看用户的 uid 和 gid
1id root
运行下面的命令,完成单次挂载
1sudo mount -t cifs -o uid=root,username=admin,password=xxxx,iocharset=utf8,file_mode=0777,dir_mode=0777 //1 ...
针对SD的Gaussian Shading鲁棒水印实现
A watermark for Diffusion Models
[!NOTE]
This is an unofficial implementation of the Paper by Kejiang Chen et.al. on Gaussian Shading: Provable Performance-Lossless Image Watermarking for Diffusion Models
特性
[x] 在水印图像无损失情况下,水印消息提取正确率100% :tada:
[x] 对于多种不同的高强度失真攻击,拥有极好的鲁棒性;如JPEG压缩QF=10,平均正确率90% :+1:
[x] 支持Stable Diffusion不同版本:v1-4 , v2-0 ,v2-1 :tada:
[x] 支持命令行SD和可视化SD-webui :+1:
[x] 无需额外训练,仅对初始噪声矩阵进行修改,对图像质量几乎无影响 :sparkles:
[x] 即插即用,插件化使用方式 :heavy_check_mark:
【命令行】使用教程
生成水印图像
下载并确保原始的Stable ...
【selenium】自动登录校园网
实验室自动登录校园网
系统Ubuntu20.04
仅适用于宁波大学(实验室)网络,寝室网络的认证更简单一些
部分代码参考:https://github.com/password123456/setup-selenium-with-chrome-driver-on-ubuntu_debian
更新源
12apt updateapt upgrade
下载Chrome包
1wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
安装google-chrome
1dpkg -i google-chrome-stable_current_amd64.deb
检查Chrome版本
12google-chrome --version# Google Chrome 117.0.5938.132
安装selenium, webdriver-manager
https://pypi.org/project/webdriver-manager/
12pip3 install seleniumpip3 ...
【Diffusion】基于分数的生成模型
基于分数的生成模型
(Score-based generative models)
原文链接:
https://www.zhangzhenhu.com/aigc/Score-Based_Generative_Models.html
通过前面的学习,我们发现扩散模型可以从不同的角度进行解释。 其中一个等价的解释是基于分数的生成模型,前面章节虽然简单介绍了下, 但没有详细说明,本章我们详细讨论下基于分数的生成模型。 基于分数的生成模型是由宋旸等人在2019年提出 [1] 的, 后来他们又提出了基于随机微分方程的更一般的形式 [2], 本章我们一起讨论学习一下。
Scored-based的生成模型
在前面 DDPM 和 DDIM 的章节中,已经探讨了 DDPM 的降噪过程,可以看做是沿着分数(梯度)∇logp(xt)∇logp(x_t)∇logp(xt)前进。然而宋旸等人提出基于分数(Score-based)的论文 相关工作并不是建立在 DDPM 的基础上,所以论文里不是从DDPM的马尔科夫链式结构讨论和导出的,而是直接从分数匹配估计算法推导。
首先看下基于分数的生成模型的核心思 ...
【DDIM】详解
导论
在 DDPMDDPMDDPM 中,生成过程被定义为马尔可夫扩散过程的反向过程,在逆向采样过程的每一步,模型预测噪声
DDIMDDIMDDIM 的作者发现,扩散过程并不是必须遵循马尔科夫链,在之后的基于分数的扩散模型以及基于随机微分等式的理论都有相同的结论。
基于此,DDIMDDIMDDIM 的作者重新定义了扩散过程和去噪过程,并提出了一种新的采样技巧,可以大幅减少采样的步骤,极大的提高了图像生成的效率,代价是牺牲了一定的多样性,图像质量略微下降,但在可接受的范围内。
DDPM的回顾
首先回顾一下 DDPM 模型的机制,在 DDPM 中,真实世界的图像数据用随机变量 x0x_0x0 表示,它的概率密度记作 q(x0)q(x_0)q(x0),然而它的真实分布未知的,即 q(x0)q(x_0)q(x0) 具体形式是未知的,所以我们没办法直接从 q(x0)q(x_0)q(x0) 采样生成新的图片。
幸运的是,我们有很多 x0x_0x0 的观测样本,因此我们可以想办法利用这些观测样本估计出 q(x0)q(x_0)q(x0) 的一个近似表示【近似表示称为 p(x0)p(x_0) ...
【Cross-Attention】可视化
Cross-Attention Control
原链接
https://prompt-to-prompt.github.io/
自注意力机制
是一种用于序列数据(如文本、音频、视频)处理的机制,它允许模型在处理序列时将不同位置的信息相互关联起来。在自注意力机制中,每个输入位置的表示(例如词或时间步的嵌入)都将用于计算该位置与序列中其他所有位置的加权关联,这种加权关联受输入表示之间的相似性程度和它们之间的距离的影响。
自注意力机制的数学表达如下:
给定输入序列 X=[x1,x2,...,xn]X = [x_1, x_2, ..., x_n]X=[x1,x2,...,xn]
其中每个xix_ixi是输入序列中的元素,通过自注意力计算得到输出序列 Y=[y1,y2,...,yn]Y = [y_1, y_2, ..., y_n]Y=[y1,y2,...,yn] :
yi=∑j=1nαij⋅(WQxj)y_i = \sum_{j=1}^{n} \alpha_{ij} \cdot (W^Q x_j)yi=∑j=1nαij⋅(WQxj)
其中
$ \alpha_{ij} $ ...
【Diffusion】为什么用Classifier-free-guidance
参考原文
https://www.zhangzhenhu.com/aigc/Guidance.html
https://sander.ai/2022/05/26/guidance.html
https://sander.ai/2023/08/28/geometry.html
https://forums.fast.ai/t/why-do-we-need-the-unconditioned-embedding/101134?replies_to_post_number=3
Guidance: a cheat code for diffusion models
"Classifier-free guidance"显著改善了"conditional diffusion models"生成的图像(几乎没有额外成本)。它实施简单且极其有效。它也是OpenAI的DALL·E 2和Google的Imagen的关键组成部分,为它们的惊人图像生成结果提供动力。在这篇博文中,我将分享我的观点,并尝试解释它的工作原理。
引言
无论是 DDPM 还是 DDIM,这些扩散 ...











