深度学习
文章平均质量分 60
木水_
这个作者很懒,什么都没留下…
展开
-
读论文:DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior
模糊核的大小遵循7 ~ 21的均匀分布,第一次退化过程的模糊σ均匀采样在0.2 ~ 3之间,第二次退化过程的模糊σ均匀采样在0.2 ~ 1.5之间。对于第一次降解过程,调整尺寸的比例因子遵循0.15至1.5的均匀分布,对于第二次降解过程,比例因子遵循0.3至1.2的均匀分布。在第一次和第二次退化过程中,泊松噪声的尺度分别在0.05 ~ 3和0.05 ~ 2.5之间随机采样。上述引导可以迭代地强制潜在特征之间的空间对齐和颜色一致性,并引导生成的潜在保留参考潜在的内容,实现从生成的输出到更平滑的结果的过渡。原创 2024-02-04 15:48:36 · 1505 阅读 · 0 评论 -
深入浅出 diffusion(5):理解 Latent Diffusion Models(LDMs)
1. LDM 优势如果你了解 diffusion 原理的话,那么理解 Latent Diffusion Models 的原理就比较容易。论文High-Resolution Image Synthesis with Latent Diffusion Models(Latent Diffusion Models)发表于CVPR2022,第一作者是Robin Rombach(慕尼黑大学)。1. LDM 优势论文LDM 的网络示意图如下所示。原创 2024-01-31 10:40:05 · 7283 阅读 · 2 评论 -
深入浅出 diffusion(4):pytorch 实现简单 diffusion
【代码】深入浅出 diffusion(4):pytorch 实现简单 diffusion。原创 2024-01-26 16:38:25 · 1056 阅读 · 2 评论 -
深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net
使用Self-Attention注意力机制,做一个全局的Self-Attention。计算时间步长的位置嵌入,一半为sin,一半为cos。GitCode - 开发者的代码家园。用于特征提取的残差结构。原创 2024-01-26 15:02:57 · 1067 阅读 · 0 评论 -
深入浅出 diffusion(2):pytorch 实现 diffusion 加噪过程
可见,随着 t 的加大,原图对应的比例系数减小,噪声的强度系数加大,t = 500的时候,隐约可见人脸轮廓,t = 999 的时候,人脸彻底淹没在噪声里面了。中介绍了 diffusion 的一些基本原理,其中谈到了 diffusion 的加噪过程,本文用pytorch 实现下到底是怎么加噪的。以下分别为原图,t = 0, 50, 100, 500, 999 的结果。原创 2024-01-25 15:41:21 · 1472 阅读 · 0 评论 -
深入浅出 diffusion(1):白话 diffusion 基本原理(无公式)
两个过程 前向过程(forward process):添加噪声; 反向过程(reverse process),又称为扩散过程(diffusion process):去除噪声,数据样本生成。过程核心原理 无论是前向过程还是反向过程都是一个参数化的马尔可夫链(Markov chain),即当前过程状态仅与上个过程状态相关; 复杂的条件概率推理最终将这个过程简化为学习噪声分布的网络。前向过程如何加噪 添加 t 次随机高斯噪声(逐渐增大),但是这样比较繁琐; 推理得到最终添加的所有噪声可以表原创 2024-01-25 12:06:33 · 1232 阅读 · 0 评论 -
diffusion 和 gan 的优缺点对比
train GAN 训练的网络是生成器和判别器,生成器用于生成图像,判别器辅助生成器的训练。 Diffusion 训练的噪声评估网络。sample GAN 推理快,GAN的生成网络有维度变化。 Diffusion 推理慢,需要迭代更多次,推理过程图像尺寸不变。训练难度 GAN 的训练可能是不稳定的,容易出现模式崩溃和训练振荡等问题。 Diffusion 训练loss收敛性好,比较平稳。模拟分布连续性 Diffusion相较于GAN可以模拟更加复杂,更加非线性的分布。但是Dif原创 2024-01-24 20:43:11 · 3737 阅读 · 0 评论 -
超分任务中的转置卷积、pixelshuffle 和插值上采样
pixelshuffle 在超分任务中比较主流,不过我实测发现跟其他的上采样方式效果差别不大,内存和计算速度上也没啥差别。原创 2023-12-26 11:48:35 · 887 阅读 · 0 评论 -
pytorch 实现 Restormer 主要模块(多头通道自注意力机制和门控制结构)
介绍了 Restormer 网络结构的网络技术特点,本文用 pytorch 实现其中的主要网络结构模块。1. MDTA(Multi-Dconv Head Transposed Attention:多头注意力机制。原创 2023-12-25 10:43:12 · 884 阅读 · 1 评论 -
说说 style gan 中的感知路径长度(Perceptual Path Length)
在优秀的GAN网络中,得到的结果应该是perceptual距离也是最短的(也就是蓝色的线,最短距离)。绿色的线是比较差的GAN网络,在从白狗向黑狗变化的过程中,变化perceptual过大,出现了卧室。比如下图,在两个不同的网络中。通过累加的方法逐步计算出绿线比蓝线长,那么得到了蓝线代表的GAN网络要比绿线代表的GAN网络要好。:给出两个随机噪声 z 1 , z 2 ,为求得两点的感知路径长度PPL,采用微分的思想。(2) 将潜在空间插值路径细分为线性段,每个段上的感知差异的总和就是感知路径长度。原创 2023-12-21 17:31:57 · 968 阅读 · 0 评论 -
比 style gan 更好的 style gan2
因为文中作者指出 style modulation 可能会放大某些特征的影像,所以 style mixing 的话,我们必须明确的消除这种影像,否则后续层的特征无法有效的控制图像。,但是 style gan 的结果会有水珠伪影,作者实验后发现是 Adain 导致的,AdaIN对每一个feature map的通道进行归一化,这样可能破坏掉feature之间的信息。所以,其实 Mod 和卷积是可以继续融合的。这里替换了对特征图做归一化,而是去卷积的参数做了一个归一化,先前有研究提出,这样会有助于GAN的训练。原创 2023-12-19 10:52:03 · 217 阅读 · 0 评论 -
浅谈 Style GAN
根据交叉点选取位置的不同,style组合的结果也不同。可以提高数据分布的整体密度,把分布稀疏的数据点都聚拢到一起,类似于PCA,做法很简单,首先找到数据中的一个平均点,然后计算其他所有点到这个平均点的距离,对每个距离按照统一标准进行压缩,这样就能将数据点都聚拢了,但是又不会改变点与点之间的距离关系。,它的作用是生成图像,创新之处在于给每一层子网络都喂了 A 和 B,A 是由 w 转换得到的仿射变换,用于控制生成图像的风格,B 是转换后的随机噪声,用于丰富生成图像的细节,即每个卷积层都能根据输入的A来调整。原创 2023-12-18 15:12:06 · 220 阅读 · 2 评论 -
比 WGAN 更好的 WGAN-GP
这个约束的意思是:critic 相对于原始输入的梯度的 L2 范数要约束在1附近(双边约束)(原文作者给了一个命题:在最优的优化路径上(把生成分布推向真实分布的“道路”上),critic函数对其输入的梯度值恒定为1)原因在于:WGAN采用了权重修剪(weight clipping)策略来强行满足critic上的Lipschitz(利普希茨)连续的约束(“Lipschitz 连续”,意思就是定义域内每点的梯度恒定不超过某个常数(常数是多少无所谓,不是无穷就行)。训练不稳定是GAN常见的一个问题。原创 2023-12-18 11:10:58 · 167 阅读 · 0 评论 -
WGAN 优势小结
我在上一篇博文中,分析了原始 GAN 难以训练的原因,本篇博文将分析下 WGAN 的优势。原创 2023-12-15 14:46:48 · 189 阅读 · 0 评论 -
为什么 GAN 不好训练
也就是说,如果Discriminator训练得太好,Generator就无法得到足够的梯度继续优化,而如果Discriminator训练得太弱,指示作用不显著,同样不能让Generator进行有效的学习。考虑如下二维空间中的两个分布P1和P2,P1在线段AB上均匀分布,P2在线段CD上均匀分布,通过控制参数θ可以控制着两个分布的距离远近。实际上,JS散度出现为常数的概率非常大,当数据分布类似高维空间中的低维流形,如下图时,虽然数据分布处理三维空间,本质展开是个二维平面。为什么 GAN 不好训练?原创 2023-12-15 12:01:00 · 373 阅读 · 0 评论 -
再回首感知损失在low-level上的应用
Style Reconstruction Loss 计算的时候,VGG 中间输出特征先经过 Gram matrix(格拉姆矩阵:n维欧式空间中任意k个向量之间两两的内积所组成的矩阵)计算获得内积矩阵,再对该矩阵计算 L1。我近几年的工作中,所训练的模型都离不开感知损失。小结,如果是需要做一些很精细化的超分,比方人脸,追求真实自然性,那么用 Feature Reconstruction Loss 就够了,用了 Style Reconstruction Loss 容易出现一些偏色、不自然条纹等问题。原创 2023-12-14 19:38:34 · 131 阅读 · 0 评论 -
读论文:Restormer: Efficient Transformer for High-Resolution Image Restoration
在早期阶段,网络在较小的图像块上进行训练,在后期的训练阶段,网络在逐渐增大的图像块上进行训练,所以会随着patch大小的增加而减少batch大小,以保持相同的训练时间。最后,根据实际训练情况来看,restormer,尤其是小型化的restormer,未必比同大小的cnn更有优势。~计算通道上的自注意力而不是空间上,即计算跨通道的交叉协方差来生成隐式地编码全局上下文的注意力图。的生成则是依靠伯努利分布的随机输入,可以看作 dropout的思想和relu的结合,增加鲁棒性。原创 2023-12-13 20:01:55 · 534 阅读 · 0 评论 -
读论文:HINet: Half Instance Normalization Network for Image Restoration
第二,一个阶段的多尺度特征有助于丰富下一个阶段的特征。原因方面还是在于 low-level 比较依赖浅层信息,两级网络中的第一级输出控制在较浅的信息,然后再经过一个 U-Net 操作,效果就上来了。与resblock相比,主要差别在于:HIN对输入3*3conv处理的特征按照通道分成两部分,一部分采用IN进行规范化,另一部分无规范化,处理后的两部分沿着通道维度进行拼接。其次,在局部监督预测的帮助下,生成 attention map 抑制当前阶段信息量较少的特征,只允许有用的特征传播到下一阶段。原创 2023-12-14 15:32:18 · 411 阅读 · 0 评论 -
基于 low-level 的 cv 问题该如何落地
深度学习技术在 cv 的 low-level 问题方面有很多研究,比如超分、降噪、图像强化等。但是在业界的应用中,则面临一些具体的挑战,主要有以下一些方面:1. 数据集如何构建这是根本问题。2. 网路如何构建 并非要类似最新的学术论文那般做出非常复杂或者原创性的网络。从工程应用的角度来说,通用型的大型网络就能取得较好的效果情况下,复杂网络结构对于性能提升的意义不大。 网络的构建意义更多在于如何把大网络压缩成小网络设计。 该减小哪些网络层?卷积核大小如何取舍?...原创 2022-02-17 14:24:23 · 1757 阅读 · 0 评论 -
读论文:Noise2Noise: Learning Image Restoration without Clean Data
很有意思的文章,我之前做过一些深度学习的降噪任务,针对不同光照条件下的图像进行降噪。这个时候就会涉及到标签样本的制作。 在监控领域中,相差6个db的照度,图像的噪点就会有明显的差异性。所以我们在训练模型的时候,如果用了40db的噪点图,那么标签可能是30db的图像,也可能是20db的图或者其他更加干净的图。很明显,30db的图像尽管比40db的图像噪点表现要好,但也是有噪点的。为什么依然能够训练模型呢,Noise2Noise: Learning Image Restoration with...原创 2021-02-26 16:14:16 · 638 阅读 · 0 评论 -
读论文:Non-Local Recurrent Network for Image Restoration
简单讲下文章的思路: 文章将 rnn 的思想和 non-local 的思想相结合,将 non-local 嵌入到 rnn 内部计算中,同时,(我估摸着参考了类似 LSTM 的思想)设计了一个长期的残差连接,总体设计如下图: ...原创 2021-01-08 14:56:03 · 579 阅读 · 0 评论 -
tensorflow 中的深度可分离卷积接口 slim.separable_conv2d()
我在前面的一篇博客深入浅出谈谈深度可分离卷积中介绍了深度可分离卷积的原理,然后用 tensorflow 实现了下。 在 tensorflow 中的接口是slim.separable_conv2d(),接口说明:def separable_convolution2d( inputs, num_outputs, kernel_size, depth_multiplier=1, stride=1, padding='SAME', ...原创 2020-11-24 14:55:36 · 3875 阅读 · 2 评论 -
深入浅出谈谈深度可分离卷积及 tensorflow 实现
1 简介 深度可分离卷积的核心思想就是将普通N个通道为M的卷积拆分成1个通道为M的卷积(这个卷积进行单通道滤波操作,区别于普通卷积滤波后通道相加)和N个1×1×M的卷积,其作用在于减少运行的参数量。如果采用 3 × 3 的卷积,那么采用深度可分离卷积后,参数将变成原来的1/8~1/9。2 原理2.1 普通卷积 对于普通卷积而言,一个边长为Dk,通道为M的卷积核(N个卷积),处理一个输入矩阵(通道为M),得到一个宽为Dw...原创 2020-09-01 15:26:06 · 1535 阅读 · 0 评论 -
tensorflow 如何减少网络层并微调参数
当你的模型需要剪裁的时候,可以采用减少原网络结构的层数,达到简化的目的,那么如何训练新的网络参数呢? 如果我没弄错的,修改网络架构后,可直接导入原网络架构,然后采用相同的训练数据进行训练,可以得到修改后的新网络的参数。这样训练的时候,导入原网络模型的图和参数后,内部会根据索引对比。保留的原有层的参数在训练的时候进行微调,从而实现裁剪的网络快速训练目的。 如果不对请指正。path = '/model/checkpoints/' ...原创 2020-08-28 14:24:17 · 521 阅读 · 2 评论 -
tensorflow 模型转 caffe 模型的相关细节和部分代码
tensorflow 和 caffe 都是常见的深度学习框架,有时候前端部署会因为平台的要求只能用其中的某种框架,这个时候则需要进行框架间的转换。本博客会介绍 tensorflow 转 caffe 模型的相关细节和部分相应的代码。1 有哪些转换方法 我做了简单的查阅,发现主要是下面三种:1) 利用 net.params 逐层添加参数2) prototxt 中逐层添加参数后编译成 caffemodel 我阅读了大佬的专栏,学习良多(地址:tensorflow2caffe...原创 2020-07-10 15:24:49 · 961 阅读 · 5 评论 -
读论文:Unprocessing Images for Learned Raw Denoising
1 先讲讲文章干啥的 深度学习降噪需要成对的图像(噪点数据、对应的清晰数据)。 通常 raw 数据经过 isp 流程(我前面的博客介绍过什么是 isp:图像 ISP 处理流程以及新人学习图像的注意点)后得到的 rgb 数据的噪点比较复杂,而原本的 raw 数据的噪点相对容易模拟。作者假设整体噪声可以更准确地建模为包含高斯和泊松信号相关分量或者从一个方差是强度函数的异方差高斯分布中采样。 所以,作者自己在清晰的 raw 上面和成有噪声的 raw,然后用神经网络降噪。2 然后看...原创 2020-06-11 19:37:34 · 683 阅读 · 2 评论 -
怎么训练 GAN 网络
我最近看的一些底层图像算法的 paper 有很多用了各种变形的 GAN 来做。我就很好奇,GAN 到底有啥牛逼。网上关于 GAN 的介绍很多,我从 GAN 的训练角度口头解释下其训练机制。 GAN 的核心思想是纳什均衡理论。因此,GAN 网络中包含一个生成器和一个判别器,如下图所示。生成器和判别器本质是两个独立的网络,因此训练的时候独立训练。 ...原创 2020-06-09 12:04:03 · 4438 阅读 · 0 评论 -
读论文:LADN: Local Adversarial Disentangling Network for Facial Makeup and De-Makeup
1 前言 传统算法做美妆迁移的时候,如下图所示,把 A* 的美妆迁移到 B 上面。但是这样会有一些问题:A 和 A* 难以同时获得 A 和 B 要做对齐工作 其他 而 LADN: Local Adversarial Disentangling Network for Facial Makeup and De-Makeup 这篇文章,解决了上述的一些缺点,其效果特色在于:同时实现化妆和卸妆效果; 美妆迁移后的人脸的面部细节保留好。其技术特点在于:局部对抗网络;...原创 2020-06-03 15:51:49 · 893 阅读 · 1 评论 -
读论文:Scale-recurrent Network for Deep Image Deblurring
图像去模糊是图像领域一个经久不衰的挑战。近年来,有很多论文聚焦于深度学习算法去模糊工作。如标题所述的论文发表于2018年的 CVPR,是这方面的一个典型工作。我们来看看作者做了些什么?1 使用的数据 go pro 公开数据集。总共包含3214组模糊/清晰数据集。 实际模型的输入数据为,从每个输入 batch的 tensor 矩阵中随机剪裁成 256 *256 的 tensor 输入网络,所以每轮 epoch 下来用到的训练数据是不一样的。2 网络结构 整个网络...原创 2020-05-19 19:48:25 · 1018 阅读 · 1 评论 -
tensorflow 实现 SSIM 损失函数
基于深度学习的图像算法的损失函数有很多类型,常见的比方 L1 loss,L2 loss 等。但是对于图像复原工作而言 L2 loss 对于图像的细节结构不易恢复,且 L2 对于敏感点的惩罚比较大。 在实际训练的某个任务中,我发现 L1 loss 收敛后的 loss (0.02)远远大于 L2 loss 收敛后的 loss(0.0004),而且两个对于一些细节的复原都不够,且不足以直观地表达人的认知感受。如下图那么有没有其他的 loss 呢? 答案是肯定的。1 SSIM l...原创 2020-05-19 11:59:04 · 7449 阅读 · 9 评论 -
本地 spyder 连接 linux 远程服务器
如果你在服务器上面已经安装了 anaconda,但是想在本地通过 spyder 调试 python 代码,那么就需要将本地的 spyder 远程连接到服务器上面。其原理在于服务器上面开个 kernel,然后让 spyder 连接到。 我用的是 anaconda3.5、python3.6,在这个过程当中我踩了一些坑,结合步骤共享如下:服务器终端输入:python -m s...原创 2020-03-09 19:55:05 · 5617 阅读 · 9 评论 -
tensorflow: localhost.localdomain 拒绝了我们的连接请求 以及 No dashboards are active for the current data set 问题
使用 tensorboard 的时候可能会遇到拒绝连接以及没有激活的问题。 如何使用 tensorboard:打开终端,进入events.out.tfevents.xxxxxx.localhost.localdomain 所在的文件夹(该文件夹通畅位于 模型保存文件所在的上一级目录),输入tensorboard --logdir=./,则会出现如下的提醒: ...原创 2020-03-06 15:40:46 · 2410 阅读 · 0 评论 -
tensorflow restore 时报错:ValueError: Can‘t load save_path when it is None.
我用的是 tensorflow 1.9 GPU 版本,模型意外中断后想继续训练模型。使用 restore 的时候出现了如题的报错。经过检查,发现是缺乏 checkpoint 文件。 tensorflow 在保存模型时,会产生以下四个文件:存储网络结构.meta、存储训练好的参数.data和.index、记录最新的模型checkpoint。 当使用saver.resto...原创 2020-03-03 15:22:10 · 6761 阅读 · 7 评论 -
深度学习训练环境离线搭建:CentOS7 linux 服务器安装 tensorflow_gpu1.9、cuda9、cudnn7、anaconda3-4.3、python3.6
1 简述 最近需要在CentOS7 linux 服务器上配置深度学习的训练环境。 那么,该怎么做呢? 对于一台服务器,首先得实现连网,然后进行远程登陆。 其次,搞清楚安装什么软件,如何安装,有哪些依赖项需要提前安装。 最后,需要进行简单的测试验证是否成功安装。 难点,一般公司的服务器可能不通外网,不能使用那些一键安装指令。 基...原创 2019-12-19 20:54:47 · 991 阅读 · 0 评论 -
读论文:Data-Free Learning of Student Networks
ICCV 2019年总共有三篇文章讲了模型压缩与加速,这是其中一篇。文章9月份更新了最新版,网上关于文章的解读也有了不少,我在此篇博客中简单讲下自己的理解。1 文章解决的问题 这篇文章解决了下图架构的一类问题,即:已经有了大型复杂的网络处理分类问题; 没有训练数据; 想要获得小型的、能够部署、性能接近大型网络的分类模型。 2 如何做的2...原创 2019-11-20 12:03:21 · 768 阅读 · 0 评论 -
知识蒸馏(Distilling Knowledge )的核心思想
我最近在阅读 ICCV 关于神经网络模型压缩与加速的文章,顺藤摸瓜阅读了 Hinton 等大佬们在这方面的开山巨作(Distilling the Knowledge in Neural Network)。文章很有创意,做点笔记。 文章针对的是分类问题,其主要工作解决两个问题:如何把大型网络压缩成小型网络? 如何训练多个网络后融合模型以提高网络表现能力又不占用过大内存?(解决...原创 2019-11-18 20:24:42 · 6473 阅读 · 1 评论 -
GoogLeNet 改进之 Inception-v2/v3 解读
博主在前一篇博客中介绍了GoogLeNet 之 Inception-v1 解读中的结构和思想。Inception的计算成本也远低于VGGNet。然而,Inception架构的复杂性使得更难以对网络进行更改。如果单纯地放大架构,大部分的计算收益可能会立即丢失。这通过大量使用降维和Inception模块的并行结构来实现,这允许减轻结构变化对邻近组件的影响。但是,对于这样做需要谨慎,因为应该遵守...原创 2018-07-23 11:03:23 · 1645 阅读 · 2 评论 -
GoogLeNet 之 Inception-v1 解读
本篇博客的目的是展示 GoogLeNet 的 Inception-v1 中的结构,顺便温习里面涉及的思想。 Going Deeper with Convolutions:http://arxiv.org/abs/1409.48421 版本主要思想详述1.1 Inception v1 Inception V1 在ILSVRC 2014的比赛中,以较大优势取得了第一...原创 2018-07-23 00:00:15 · 1319 阅读 · 1 评论 -
Tensorflow 学习笔记——占位符和feed_dict(二)
创建了各种形式的常量和变量后,但TensorFlow 同样还支持占位符。占位符并没有初始值,它只会分配必要的内存。在会话中,占位符可以使用 feed_dict 馈送数据。 feed_dict是一个字典,在字典中需要给出每一个用到的占位符的取值。在训练神经网络时需要每次提供一个批量的训练样本,如果每次迭代选取的数据要通过常量表示,那么TensorFlow 的计算图会非常大。因为每增加一个常量...原创 2017-09-02 20:52:46 · 50156 阅读 · 7 评论 -
Tensorflow 学习笔记——张量、图、常量、变量(一)
1 张量和图TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库。其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行运算。数据流图用「结点」(nodes)和「边」(edges)组成的有向图来描述数学运算。「结点」一般用来表示施加的数学操作,但也可以表示数据输入的起点和输出的终点,或者是读取/写入持久变量(persi...原创 2017-09-02 20:36:32 · 5371 阅读 · 2 评论