1.一次性搞懂什么是网网络文件AIGC!
2.基于AI或传统编码方法的络源图像压缩开源算法汇总
3.Hifigan感受野计算
4.DragGAN官方代码手把手安装部署教程
5.Keras 中的 Adam 优化器(Optimizer)算法+源码研究
6.图像超分辨率-Super Resolution(A2N)
一次性搞懂什么是AIGC!
人工智能生成内容(Artificial Intelligence Generative Content),源码运行简称AIGC,夹里指的网网络文件是利用AI技术自动创作各种内容,包括、络源web支付系统源码视频、源码运行音乐、夹里文字等。网网络文件要深入了解AIGC,络源首先得从AI的源码运行基础技术谈起。
AI,夹里即人工智能,网网络文件旨在让机器具备像人类一样的络源智能,能看、源码运行听、说、想、做。实现这一目标,AI依赖三个关键技术:深度学习、神经网络和生成式对抗网络(GAN)。神经网络模仿人脑结构,通过节点与连线构建复杂的网络,实现信息的接收与传递。深度学习则通过多层次神经网络,让机器处理更复杂、高级的问题。GAN则通过让两个神经网络互相竞争,提升生成内容的质量,生成器负责创作内容,判别器负责评估内容的真伪,通过迭代,生成器能创造出高度逼真的作品。
AI大模型和预训练大模型是AI技术中的重要角色。AI大模型拥有强大的信息处理能力,能完成多种任务,如智能语音助手和图像识别。AI预训练大模型在不同领域进行大量训练,掌握丰富知识和技能,是自然语言处理领域的前沿模型。
开源是推动技术发展的关键方式。在计算机编程中,开源意味着公开源代码,供所有人查看、源码正码反码修改和共享。自然语言处理(NLP)则利用开源工具和软件,帮助研究者处理语言数据,加速技术进步。
AIGC作为AI生成内容的代表,通过AI的创造力、理解力和想象力,根据需求和风格生成文章、小说、报告、音乐、图像甚至视频。这为内容创作开辟了新天地,提供了无限可能性。
从用户生成内容(UGC)到专业生成内容(PGC),再到AIGC,内容创作方式不断进化。ChatGPT是AIGC在聊天场景的应用之一,提供广泛的知识和深入对话能力。此外,Midjourney、Stable Diffusion、Bing AI、文心一言和文心一格等AIGC应用,分别在生成、搜索服务、自然语言理解等方面展现AI的强大能力。
综上所述,AIGC的出现标志着内容创作方式的革命,为用户提供了前所未有的创作体验。了解和探索AIGC,不仅可以发现其在各个领域的应用,还能亲身体验AI生成内容的魅力。
基于AI或传统编码方法的图像压缩开源算法汇总
探索图像压缩技术的前沿,融合AI与传统编码策略,我们精选了多项开创性研究成果,旨在提升图像压缩的效率与视觉质量。让我们一同探索这些卓越的算法:Li Mu等人的突破:年CVPR大会上,他们提出了《Learning Convolutional Networks for Content-weighted Image Compression》(论文链接),借助深度学习的自编码器,赋予内容感知,通过优化编码器、解码器和量化器,赋予图像在低比特率下更清晰的mblog博客系统源码边缘和丰富纹理,减少失真。其开源代码可于这里找到,基于Caffe框架。
Conditional Probability Models的革新:Mentzer等人在年的CVPR展示了他们的工作,通过内容模型提升深度图像压缩的性能,论文名为《Conditional Probability Models for Deep Image Compression》(论文链接)。
利用深度神经网络的力量,研究者们正在重新定义压缩标准。例如,Toderici等人在年的CVPR中展示了《Full Resolution Image Compression with Recurrent Neural Networks》,使用RNN构建可变压缩率的系统,无需重新训练(论文链接)。其开源代码可在GitHub找到,基于PyTorch 0.2.0。 创新性的混合GRU和ResNet架构,结合缩放加性框架,如Prakash等人年的工作所示,通过一次重建优化了率-失真曲线(论文链接),在Kodak数据集上,首次超越了JPEG标准。开源代码见这里,基于Tensorflow和CNN。 AI驱动的图像压缩,如Haimeng Zhao和Peiyuan Liao的CAE-ADMM,借助ADMM技术优化隐性比特率,提高了压缩效率与失真性能(论文),对比Balle等人的工作(论文)有所突破。 生成对抗网络(GAN)的优化应用,如.论文,展示了在低比特率下图像压缩的显著改进,开源代码可在GitHub找到,它以简洁的方式实现高图像质量。 深度学习驱动的DSSLIC框架,通过语义分割与K-means算法,提供分层图像压缩的高效解决方案,开源代码在此,适用于对象适应性和图像检索。 传统方法如Lepton,通过二次压缩JPEG,节省存储空间,Dropbox的开源项目链接,适合JPEG格式存储优化。 无损图像格式FLIF,基于MANIAC算法,net微博源码超越PNG/FFV1/WebP/BPG/JPEG,支持渐进编码,详情可在官方网站查看。 Google的Guetzli,以高效压缩提供高画质JPEG,体积比libjpeg小-%,适用于存储优化(源码)。 这些创新的算法和技术,展示了AI和传统编码方法在图像压缩领域的融合与进步,不仅提升了压缩效率,更为图像的存储和传输提供了前所未有的可能性。Hifigan感受野计算
HIFIGAN架构解析与感受野计算
HIFIGAN主要包括生成器和判别器,而最终推理仅需关注生成器。生成器由conve_pre、upsample*num_kernels个resblocks、conv_post三大组件构成。
分析模型结构,感受野大小主要受resblocks影响。resblocks由三个模块组成,每个模块包含一个空洞卷积与一个传统卷积。空洞卷积相当于卷积核变大,其视野宽度取决于diated因子。一个resblocks实质等同于六个1d卷积。
每个resblocks由三组(diated_conv1d+conv1d)构成,diated_rates为[1,3,5]。在每次卷积前,左右pad长度为(kernel_size-1)//2。以一组(diated_conv1d+conv1d)为例,包括四个卷积层,kernel_size为3。空洞卷积的感受野大小可通过爱嘉牛LA提供的公式计算。
总结规律,当前组所有层的卷积核大小决定最上层的感受野大小。根据公式计算,可得当前组感受野大小。
在生成器中,通过模拟源码的卷积方式,可计算出感受野大小。基于config_v1.json配置文件,upsample_rates设定为[8, 8, 2, 2],最终感受野为.帧。考虑到上采样后再卷积,需转换为帧的感受野大小,细节计算见源码。scratch 2的源码
DragGAN官方代码手把手安装部署教程
在StableDiffusion尚未问世的时期,DragGAN是生成领域的领头羊。四年前,StyleGAN的发布以其“超高清且逼真”的效果震惊了众人。
当时,我的公众号"托尼是塔克"上发布了一系列关于该项目的文章。时光荏苒,没想到这个项目还能焕发新生。
回到正题,今天我将带领大家一步一步完成DragGAN的安装部署。
StyleGAN的安装过程繁琐,需要安装VS、cudnn、cuda等软件,还要修改代码并配置路径等等。相比之下,DragGAN的环境配置几乎与StyleGAN3完全一致,安装过程自然也不会简单。
我将分享我的安装流程,并记录下来,以供参考。
如果嫌麻烦,也可以下载离线版本,一键运行。
环境配置如下:
操作系统:Win
显卡:RTX
辅助软件: CMD、Git、Conda、VS、cudnn、cuda
显卡是GAN项目的关键硬件,不同尺寸模型所需的显存不同。RTX可完美支持x任务,一般情况下6G显存足以运行这个项目。
关于基础软件的详细安装步骤,可参考我之前关于Stylegan2和 Stylegan3的教程。
现在让我们开始今天的主题:
1. 获取源代码
由于这是一个开源项目,我们首先需要获取源代码。获取源代码有两种方式:命令行或直接下载压缩包。
命令行方式:确保安装了Git工具,然后在CMD中执行如下命令:
切换到E盘或D盘(避免C盘),进入DEV文件夹,获取DragGAN的源代码。
压缩包获取方式:点击Download ZIP下载,然后解压至磁盘,比如E盘DEV文件夹。
解压后,去除文件名中的“-main”。这个main曾用“master”命名,但因不尊重某类人而更改。
2. 创建虚拟环境
这是一个基于Python的项目,为了保证不同项目的独立性,我们将使用Conda创建虚拟环境。
在CMD中输入以下命令,创建并激活虚拟环境。
3. 修改配置文件
DragGAN包含一个Conda依赖文件,可以直接用来创建虚拟环境并安装所有依赖。
然而,这个文件在当前Windows环境下可能存在安装问题,如找不到cudatoolkit=.1。我尝试修改,但其他问题依旧。因此,我自行创建了一个requirements.txt文件,将内容粘贴其中,并放在DragGAN文件夹中,使用pip安装。
4. 下载模型
项目官方提供了一个下载模型的sh脚本,但Windows用户无法直接使用。解决方法是右键打开下载_model.sh文件,获取模型下载地址并下载,解压至DragGAN的checkpoint文件夹,并将模型文件名改为stylegan2_开头。
发现了一个叫download_model.bat的文件,可以一键下载模型。
5. 运行项目
按照上述步骤,我们就可以运行项目了。网络通畅时,一般不会出现问题。运行如下命令启动GUI界面:
在GUI界面上,只需点击“Start”按钮,拖拽狗子脸部,即可生成。GUI动态效果很酷,但菜单较小,有时会崩溃,模型切换也不方便。
启动WebUI,输出网址后,打开即可查看生成的。使用方法包括选择模型、种子、点选位置并拖拽等。
WebUI版的动态效果不如本地GUI,但最终结果相同。
项目提供了许多高质量模型,如英伟达官方的FFHQx和human模型。生成的可保存,但与真实相比,效果参差不齐。
了解了这些不足,这个项目仍然很有趣,可以可视化StyleGAN的使用,快速接入各种模型。如果有财力,可以自己训练模型。
虽然项目成本高昂,但结果值得期待。至少,它将StyleGAN的使用可视化,为用户提供了丰富的模型选择。
Keras 中的 Adam 优化器(Optimizer)算法+源码研究
在深度学习训练中,Adam优化器是一个不可或缺的组件。它作为模型学习的指导教练,通过调整权值以最小化代价函数。在Keras中,Adam的使用如keras/examples/mnist_acgan.py所示,特别是在生成对抗网络(GAN)的实现中。其核心参数如学习率(lr)和动量参数(beta_1和beta_2)在代码中明确设置,参考文献1提供了常用数值。
优化器的本质是帮助模型沿着梯度下降的方向调整权值,Adam凭借其简单、高效和低内存消耗的特点,特别适合非平稳目标函数。它的更新规则涉及到一阶(偏斜)和二阶矩估计,以及一个很小的数值(epsilon)以避免除以零的情况。在Keras源码中,Adam类的实现展示了这些细节,包括学习率的动态调整以及权值更新的计算过程。
Adam算法的一个变种,Adamax,通过替换二阶矩估计为无穷阶矩,提供了额外的优化选项。对于想要深入了解的人,可以参考文献2进行进一步研究。通过理解这些优化算法,我们能更好地掌握深度学习模型的训练过程,从而提升模型性能。
图像超分辨率-Super Resolution(A2N)
AI世界斑斓多姿,计算机视觉给我们带来前所未有的视觉盛宴,超分辨率作为其中一个子领域亦是吸引很多研究学者,本文基于《Attention in Attention Network for Image Super-Resolution》这篇文章对单幅图像超分辨率(SISR)算法流程做一个详尽的介绍。对于单幅图像超分算法主要分为两类:有监督方法和无监督方法,本文主要针对有监督方法。在有监督的算法中主要分为基于CNN和基于GAN的方法。基于CNN的方法一般使用L1Loss和L2Loss损失函数,基于GAN的方法还需要感知损失和对抗损失。就上采样来说传统为插值上采样,现在一般使用亚像素卷积和反卷积。采样位置分为前上采样,渐进上采样和后上采样,现在更多使用后上采样。如果想更快了解超分领域,不妨多看几篇综述类文章,这样能够对该领域有一个整体的了解。
超分算法实现整体流程如下。首先,对于一张低分辨率(LR)输入网络时首先通过一个卷积层,然后经过n个A2B模块,之后再经过一个重建模块(里面包括上采样(插值)到指定尺寸),再经过一个卷积层,卷积之后的输出结果与最初输入的LR图的上采样(最近邻插值上采样)结果相加之后得到最终的效果图。整个网络既没有用到亚像素卷积也没用到反卷积,而是使用传统的插值上采样。
在实现算法时,先要了解其思想,所以当复现一篇论文时,首先需要看懂论文中作者提出的新方法,在代码复现时,若作者提供源码可以先借鉴其源码,这样在达到作者论文中的相近效果后再考虑添加自己一些想法并改进。网络结构介绍先说这么多,我们在实现不同超分算法只需要更换网络结构那部分即可,其他地方做一些小改动即可再次训练。
数据集处理方面,用于超分训练和测试的数据集有很多,一般情况下我们可以在论文中了解作者使用的训练和测试数据集。对于下载的数据集,需要先进行处理,方法如下。对于div2k数据集,首先将其裁剪为x或者x的大小,然后随机截取x或者X的大小作为训练所需尺寸。这样处理的训练集用来训练还是很不错的。
超分网络训练部分,一般使用adam优化器,学习率很多设置为1e-4或者5e-4,batch_size一般为或者,损失函数一般为L1Loss,L2Loss,L1_Charbonnier_loss等,其中L1_Charbonnier_loss效果好些。训练一般需要个epoch左右,具体时间视情况而定。
PSNR及SSIM测试及效果展示部分,PSNR公式为MSE(均方误差)除以最大像素值,实现代码如下。SSIM代码如下,实现代码中查看完整代码。
实验结果展示部分,基于2x模型训练的4x结果要好些。基于双三次插值退化模型,训练也是基于此,所以结果还不错,但用于真实场景效果不一定理想。
最后,提供超参设置,对于2倍超分:使用裁剪的xdiv2k数据集,然后转了h5文件。数据增强主要是水平翻转,垂直翻转和顺时针旋转度。batch_size=,lr=5e-4,epoch=。对于4倍超分:使用裁剪的xdiv2k数据集,数据增强相同,batch_size=,lr=5e-4,epoch=。基于这些参数,训练结果略高于论文结果。
Gumbel-Softmax的MindSpore实现
在一段时间的间隔后,我将注意力转向了MindSpore的相关内容。起因是一位同学询问关于模型迁移的问题,目标是诺亚的一篇ICML论文《SparseBERT: Rethinking the Importance Analysis in Self-attention》中使用了Pytorch特有的Gumbel-Softmax实现,但该实现难以直接移植到MindSpore。因此,我针对这个问题进行了深入研究,并撰写了一篇关于如何在MindSpore中实现Gumbel-Softmax的文章。
Gumbel-Softmax是一种离散采样的可微近似方法,常用于生成模型中,如GAN和VAE,它解决了离散分布采样不可微的问题。具体来说,它通过Gumbel-Max trick和softmax函数构建了一个连续分布,近似离散类别分布,允许反向传播。Gumbel分布通过从均匀分布中随机抽取并计算得出,而Softmax则用于近似argmax操作。
在MindSpore的实现中,我参考了Pytorch的源码和Tensorflow的手写实现,对三个关键点进行了适配,并通过单元测试验证了正确性。测试包括输出的one-hot特性、采样值分布以及与softmax概率的一致性。最终,我用MindSpore实现的Gumbel-Softmax应用于VAE实验,结果与Pytorch版本的Loss下降趋势基本一致,展示了其在实际应用中的可行性。
尽管这篇文章拖延了很长时间,但为了满足对Gumbel-Softmax需求的开发者,我会将其添加到MindSpore的主要仓库中,供更多人使用和开发。如果你对这个功能感兴趣,可以下载代码进行训练对比,或尝试将其应用到其他GAN网络中。