可逆神经网络flow的理解
本文参考 苏神博客-细水长flow之NICE:流模型的基本概念与实现 flow-based生成模型 分布问题在生成网络中,我们知道的是样本x,即训练数据,我们希望通过概率模型$q_θ(x)$来拟合真实样本$x$,其中$θ$即模型中的参数。 由于我们是不知道真实数据的分布(只有真实数据),想直接用KL Loss去拟合样本数据和真实数据是不可能的。对于连续型分布,我们可以将样本分布改为$$q(x) = ∫q(z)q(x|z)dz$$其中$q(x|z)$描述了一个由$z$来生成$x$的模型,其中$q(z)$一般是标准高斯分布。 最大似然: 给定一个概率分布函数$f_D$,以及一个分布参数$θ$,我们可以从这个分布中抽出一个具有n个值的采样$X1,X2,...,Xn$,通过利用$f_D$,我们就能计算出其概率: $$ P=(x_1,x_2,...,x_n)=f_D(x_1,x_2,...,x_n|θ) $$ 最大似然就是我们寻找参数$θ$,使得这个采样的可能性最大(最大化拟合分布),定义可能性为 $$ lik(θ)=f_D(x_1,x_2,...,x_n|θ) $$ 在θ的所有取值...
Pytorch-语法
torch函数torch.clamp()torch.clamp(input, min, max, out=None) → Tensor参数: input (Tensor) – 输入张量 min (Number) – 限制范围下限 max (Number) – 限制范围上限 out (Tensor, optional) – 输出张量 作用:将输入夹紧至某一区间 1output = torch.clamp(input, 0, 1) #输入值<0则为0,>1则为1 torch.round()torch.round(input, out=None)作用:返回一个新张量,将输入input张量每个元素舍入到最近的整数 123a = torch.tensor(0.6)b = torch.round(a) # a = 0.6, b = 1.0a = a.round() # a = 1.0, b = 1.0 torch.sign()torch.sign(input, out=None) → Tensor作用:返回tensor的符号 1234a = torch.tensor...
利用Github Actions实现自动部署
本文参考 GitHub Actions 来自动部署 Hexo 用GitHub Actions 自动部署 Hexo博客 Hexo 部署在Hexo中,以往的部署通常都需要通过命令 123hexo clean # 清空静态页面(public文件夹)hexo g # 创建静态页面hexo d # 发布页面:清空.deploy_git/里文件,从public/复制新生成的文件 在实现自动部署之前,hexo博客必须能够成功运行以上代码并成功部署 实现自动部署生成ssh密钥文件在任何位置的git bash窗口中运行 1ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-deploy-key -N "" 会在当前目录生成两个文件 github-deploy-key —— 私钥 github-deploy-key.pub —— 公钥 创建私人仓库(用于部署)在GitHub中创建repositories,名字随意取,选private,其他勾不勾无所谓然后在你的博客文件夹根目录(不是theme...
Paper-Stylegan-Image2StylegGAN
Image2StyleGAN: How to Embed Images Into the StyleGAN Latent Space?Accept: 2019ICCV Problem:基于优化(optimized-based)的StyleGAN反转 Framework提出w+空间。即优化的latent code由原先stylegan的w变为w+(原先stylegan的w空间是通过复制然后送入styleblock进行调制,即18个w是完全相同的) LOSS perceptual loss and pixel-wise MSE loss$$w^∗ = \min_{w}L_percept(G(w), I) + \frac{λ_{mse}}{N}{\begin{Vmatrix}G(w) −I\end{Vmatrix}}_2^2$$ perceptual loss$$L_{percept}(I_1, I_2) = \sum_{j=1}^4\frac{λ_j}{N_j}{\begin{Vmatrix}F_j (I_1) −F_j (I_2)\end{Vmatrix}}_2^2$$perce...
Paper-FaceAging-Survey
Age simulation for face recognitionAccept:2006ICPR首先使用形状和纹理矢量通过在形状或纹理的本征空间中投影面部图像来表示面部图像。 然后结合年龄函数和年龄分类法对年龄进行估计。 并且我们使用估计的年龄,典型的向量创建函数和原始测试图像的特征向量来生成目标年龄的合成特征向量。 最后,我们重建了特征空间中的形状和纹理,并结合起来以在目标年龄合成面部图像。 A Compositional and Dynamic Model for Face AgingAccept:2009IEEE Transactions on Pattern Analysis and Machine Intelligence组成模型通过分层的“或”图表示每个年龄组中的面孔,其中“与”节点将面孔分解成描述对年龄感知至关重要的细节(例如头发,皱纹等)的部分 Age Synthesis and Estimation via Faces: A SurveyAccept:2010IEEE transactions on pattern analysis and machine ...
Paper-StyleGAN-V1
A Style-Based Generator Architecture for Generative Adversarial NetworksAccept:CVPR2019code:github上一搜一大把(官方非官方,tf或者pytorch) Problem:生成更加真实多样且高清的图像 Framework 上图(a)为ProgressiveGAN(Progressive growing of GANs for improved quality, stability, and variation),作者就是在这篇的基础上进行改进; 上图(b)为StyleGAN的框架。 隐空间变换首先通过8层的FC将随机采样的z改为了w,这样做的好处就是一般z都是从高斯分布进行采样,但是实际上高斯分布和真实数据的分布是不同的,因此将z变换到w空间能更好的对生成网络进行一个控制(个人觉得就是一个hard变为soft的过程,原先的先验采样z太hard了,如果转换到w空间,就能更好地拟合出真实样本的部分) 生成网络生成网络的输入不再是z,而是三部分,分别为上图(b)的Const 4×4×5...
GAN Prior Embedded Network for Blind Face Restoration in the Wild
Paper:GAN Prior Embedded Network for Blind Face Restoration in the WildAccept:CVPR2021Code Problem:野外人脸复原(Blind face restoration),属于人脸复原任务中的一种,类似于超分,inpainting等工作。文章为了解决野外人脸的退化复杂性(噪声,缺损,分辨率低等),提出了解决方法。 Framework在原先的styelgan中,需要W和noise,也就是调制模块中的A和B。 w:将W修改为encoder得到的z,再经过mapping网络得到W。 noise:使用encoder中的浅层空间信息,同时这里作者将原先直接add的方式修改为concat,并在后续的实验中验证这两种方式的优劣。通过这种方法,作者认为可以比较好地结合全局信息(w,也就是z,感受野更大)和局部信息(noise,感受野更小),从而使得生成图像的质量更好。和之前基于stylegan的方法不同的是,作者这里对stylegan进行了finetune。
v2rayN
解决最新版本v2rayN绕过大陆(PAC)设置问题 GitHub上的Wiki对代理模式进行了解释 清除系统代理: 每次启动/重启服务的时候,强制把windows系统(ie)的代理清除掉 自动配置系统代理: 每次启动/重启服务的时候,强制设定windows系统(ie)的代理 不改变系统代理: 每次启动/重启服务的时候,什么都不做.作用就是保留其他软件设定的代理 解决方法 v2rayN版本:4.20v2ray版本:4.25 在检查更新中更新 geoip 和 geosite 文件,这两个文件包含一些含一些国内IP和域名 依次点击设置-路由设置-基础功能-一键导入基础规则 选择启用高级路由,然后选择全局或者绕过大陆 在绕过大陆的规则中,可以自定义白名单,在规则功能中添加规则,选择代理或者直连,并填上你想要添加的网站,左边填域名,右边填IP 系统代理 选择 自动配置系统代理路由高级功能 选择 绕过大陆
Python-语法
Python语法记录list 创建列表,获取长度 1234567# 已知元素mylist = [1,2,3,4]# 未知元素mylist = []mylist.append(1)# 获取长度length = len(mylist) 对list所有元素执行统一操作 1234# 不想写循环的话,且不想改变原列表元素test = [1,2,3,4,5] # [1, 2, 3, 4, 5]test1 = [x+1 for x in test] # [2, 3, 4, 5, 6]test2 = list(map(lambda x:x+1, test)) # [2, 3, 4, 5, 6] arrayarray数组在python中是不可改变的 创建array 123456import numpy as nptest = np.array([1,2,3,4,5])# 获取形状shape = test.shape#获取部分元素part = test[2:4] Dict 获取字典的key值 123456for key in dict: print(key)for i, key in...
OS-Linux-Ubuntu换驱动
参考文章 ubuntu16.04更换nvidia驱动极简教程 驱动下载网址 禁用nouveau123sudo echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.confsudo update-initramfs -ureboot 可使用以下命令查询是否禁用成功。1lsmod | grep nouveau 安装nvidia驱动nvidia官网下载显卡对应驱动,更改文件权限。1sudo chmod 777 NVIDIA-Linux-XXX.run Ctrl + Alt + F1 进入命令行模式。12sudo service lightdm stopsudo ./NVIDIA-Linux-XXX.run 一直确定即可。最后重启。1reboot 可使用以下命令查看驱动是否安装成功。1nvidia-smi

