Diffusion Model原理详解及源码解析
Hello,源码源码大家好,平台我是独家打造搭建小苏
今天来为大家介绍Diffusion Model(扩散模型),在具体介绍之前呢,源码源码先来谈谈Diffusion Model主要是平台用来干什么的。其实啊,独家打造搭建它对标的源码源码是生成对抗网络(GAN),只要GAN能干的平台事它基本都能干。在我一番体验Diffusion Model后,它给我的感觉是非常惊艳的。我之前用GAN网络来实现一些生成任务其实效果并不是很理想,而且往往训练很不稳定。但是换成Diffusion Model后生成的则非常逼真,也明显感觉到每一轮训练的结果相比之前都更加优异,也即训练更加稳定。
说了这么多,我就是想告诉大家Diffusion Model值得一学。但是说实话,这部分的公式理解起来是有一定困难的,我想这也成为了想学这个技术的同学的拦路虎。那么本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码,探究其是如何通过代码实现的。如果你想弄懂这部分,请耐心读下去,相信你会有所收获。
如果你准备好了的话,就让我们开始吧!!!
Diffusion Model的整体思路如下图所示:
其主要分为正向过程和逆向过程,正向过程类似于编码,逆向过程类似于解码。
怎么样,大家现在的感觉如何?是不是知道了Diffusion Model大概是怎么样的过程了呢,但是又对里面的细节感到很迷惑,搞不懂这样是怎么还原出的。不用担心,后面我会慢慢为大家细细介绍。
这一部分为大家介绍一下Diffusion Model正向过程和逆向过程的细节,主要通过推导一些公式来表示加噪前后图像间的关系。
正向过程在整体思路部分我们已经知道了正向过程其实就是一个不断加噪的过程,于是我们考虑能不能用一些公式表示出加噪前后图像的关系呢。我想让大家先思考一下后一时刻的图像受哪些因素影响呢,更具体的说,比如[公式]由哪些量所决定呢?我想这个问题很简单,即[公式]是由[公式]和所加的噪声共同决定的,也就是说后一时刻的图像主要由两个量决定,其一是上一时刻图像,其二是所加噪声量。「这个很好理解,内参网站源码大家应该都能明白吧」明白了这点,我们就可以用一个公式来表示[公式]时刻和[公式]时刻两个图像的关系,如下:
[公式] ——公式1
其中,[公式]表示[公式]时刻的图像,[公式]表示[公式]时刻图像,[公式]表示添加的高斯噪声,其服从N(0,1)分布。「注:N(0,1)表示标准高斯分布,其方差为1,均值为0」目前可以看出[公式]和[公式]、[公式]都有关系,这和我们前文所述后一时刻的图像由前一时刻图像和噪声决定相符合,这时你可能要问了,那么这个公式前面的[公式]和[公式]是什么呢,其实这个表示这两个量的权重大小,它们的平方和为1。
接着我们再深入考虑,为什么设置这样的权重?这个权重的设置是我们预先设定的吗?其实呢,[公式]还和另外一个量[公式]有关,关系式如下:
[公式] ——公式2
其中,[公式]是预先给定的值,它是一个随时刻不断增大的值,论文中它的范围为[0.,0.]。既然[公式]越来越大,则[公式]越来越小,[公式]越来越小,[公式]越来越大。现在我们在来考虑公式1,[公式]的权重[公式]随着时刻增加越来越大,表明我们所加的高斯噪声越来越多,这和我们整体思路部分所述是一致的,即越往后所加的噪声越多。
现在,我们已经得到了[公式]时刻和[公式]时刻两个图像的关系,但是[公式]时刻的图像是未知的。我们需要再由[公式]时刻推导出[公式]时刻图像,然后再由[公式]时刻推导出[公式]时刻图像,依此类推,直到由[公式]时刻推导出[公式]时刻图像即可。
逆向过程是将高斯噪声还原为预期的过程。先来看看我们已知条件有什么,其实就一个[公式]时刻的高斯噪声。我们希望将[公式]时刻的高斯噪声变成[公式]时刻的图像,是很难一步到位的,因此我们思考能不能和正向过程一样,先考虑[公式]时刻图像和[公式]时刻的关系,然后一步步向前推导得出结论呢。好的,思路有了,那就先来想想如何由已知的[公式]时刻图像得到[公式]时刻图像叭。
接着,我们利用贝叶斯公式来求解。公式如下:
那么我们将利用贝叶斯公式来求[公式]时刻图像,公式如下:
[公式] ——公式8
公式8中[公式]我们可以求得,就是刚刚正向过程求的嘛。但[公式]和[公式]是未知的。又由公式7可知,bittorrent sync源码可由[公式]得到每一时刻的图像,那当然可以得到[公式]和[公式]时刻的图像,故将公式8加一个[公式]作为已知条件,将公式8变成公式9,如下:
[公式] ——公式9
现在可以发现公式9右边3项都是可以算的啦,我们列出它们的公式和对应的分布,如下图所示:
知道了公式9等式右边3项服从的分布,我们就可以计算出等式左边的[公式]。大家知道怎么计算嘛,这个很简单啦,没有什么技巧,就是纯算。在附录->高斯分布性质部分我们知道了高斯分布的表达式为:[公式]。那么我们只需要求出公式9等式右边3个高斯分布表达式,然后进行乘除运算即可求得[公式]。
好了,我们上图中得到了式子[公式]其实就是[公式]的表达式了。知道了这个表达式有什么用呢,主要是求出均值和方差。首先我们应该知道对高斯分布进行乘除运算的结果仍然是高斯分布,也就是说[公式]服从高斯分布,那么他的表达式就为 [公式],我们对比两个表达式,就可以计算出[公式]和[公式],如下图所示:
现在我们有了均值[公式]和方差[公式]就可以求出[公式]了,也就是求得了[公式]时刻的图像。推导到这里不知道大家听懂了多少呢?其实你动动小手来算一算你会发现它还是很简单的。但是不知道大家有没有发现一个问题,我们刚刚求得的最终结果[公式]和[公式]中含义一个[公式],这个[公式]是什么啊,他是我们最后想要的结果,现在怎么当成已知量了呢?这一块确实有点奇怪,我们先来看看我们从哪里引入了[公式]。往上翻翻你会发现使用贝叶斯公式时我们利用了正向过程中推导的公式7来表示[公式]和[公式],但是现在看来那个地方会引入一个新的未知量[公式],该怎么办呢?这时我们考虑用公式7来反向估计[公式],即反解公式7得出[公式]的表达式,如下:
[公式] ——公式
得到[公式]的估计值,此时将公式代入到上图的[公式]中,计算后得到最后估计的 [公式],表达式如下:
[公式] ——公式
好了,现在在整理一下[公式]时刻图像的均值[公式]和方差[公式],如下图所示:
有了公式我们就可以估计出[公式]时刻的图像了,接着就可以一步步求出[公式]、[公式]、[公式]、[公式]的图像啦。
这一小节原理详解部分就为大家介绍到这里了,大家听懂了多少呢。相信你阅读了此部分后,对Diffusion Model的原理其实已经有了哥大概的解了,但是肯定还有一些疑惑的地方,不用担心,代码部分会进一步帮助大家。
代码下载及使用本次代码下载地址: Diffusion Model代码
先来说说代码的使用吧,代码其实包含两个项目,一个的kdj 买卖源码ddpm.py,另一个是ddpm_condition.py。大家可以理解为ddpm.py是最简单的扩散模型,ddpm_condition.py是ddpm.py的优化。本节会以ddpm.py为大家讲解。代码使用起来非常简单,首先在ddpm.py文件中指定数据集路径,即设置dataset_path的值,然后我们就可以运行代码了。需要注意的是,如果你使用的是CPU的话,那么你可能还需要修改一下代码中的device参数,这个就很简单啦,大家自己摸索摸索就能研究明白。
这里来简单说说ddpm的意思,英文全称为Denoising Diffusion Probabilistic Model,中文译为去噪扩散概率模型。
代码流程图这里我们直接来看论文中给的流程图好了,如下:
看到这个图你大概率是懵逼的,我来稍稍为大家解释一下。首先这个图表示整个算法的流程分为了训练阶段(Training)和采样阶段(Sampling)。
我们在正向过程中加入的噪声其实都是已知的,是可以作为真实值的。而逆向过程相当于一个去噪过程,我们用一个模型来预测噪声,让正向过程每一步加入的噪声和逆向过程对应步骤预测的噪声尽可能一致,而逆向过程预测噪声的方式就是丢入模型训练,其实就是Training中的第五步。
代码解析首先,按照我们理论部分应该有一个正向过程,其最重要的就是最后得出的公式7,如下:
[公式]
那么我们在代码中看一看是如何利用这个公式7的,代码如下:
Ɛ为随机的标准高斯分布,其实也就是真实值。大家可以看出,上式的返回值sqrt_alpha_hat * x + sqrt_one_minus_alpha_hat其实就表示公式7。注:这个代码我省略了很多细节,我只把关键的代码展示给大家看,要想完全明白,还需要大家记住调试调试了
接着我们就通过一个模型预测噪声,如下:
model的结构很简单,就是一个Unet结构,然后里面嵌套了几个Transformer机制,我就不带大家跳进去慢慢看了。现在有了预测值,也有了真实值Ɛ返回后Ɛ用noise表示,就可以计算他们的损失并不断迭代了。
上述其实就是训练过程的大体结构,我省略了很多,要是大家有任何问题的话可以评论区留言讨论。现在来看看采样过程的代码吧!!!
上述代码关键的就是 x = 1 / torch.sqrt(alpha) * (x - ((1 - alpha) / (torch.sqrt(1 - alpha_hat))) * predicted_noise) + torch.sqrt(beta) * noise这个公式,其对应着代码流程图中Sampling阶段中的第4步。需要注意一下这里的跟方差[公式]这个公式给的是[公式],但其实在我们理论计算时为[公式],这里做了近似处理计算,diamond 源码 下载即[公式]和[公式]都是非常小且近似0的数,故把[公式]当成1计算,这里注意一下就好。
代码小结可以看出,这一部分我所用的篇幅很少,只列出了关键的部分,很多细节需要大家自己感悟。比如代码中时刻T的用法,其实是较难理解的,代码中将其作为正余弦位置编码处理。如果你对位置编码不熟悉,可以看一下我的 这篇文章的附录部分,有详细的介绍位置编码,相信你读后会有所收获。
参考链接由浅入深了解Diffusion
附录高斯分布性质高斯分布又称正态分布,其表达式为:
[公式]
其中[公式]为均值,[公式]为方差。若随机变量服X从正态均值为[公式],方差为[公式]的高斯分布,一般记为[公式]。此外,有一点大家需要知道,如果我们知道一个随机变量服从高斯分布,且知道他们的均值和方差,那么我们就能写出该随机变量的表达式。
高斯分布还有一些非常好的性质,现举一些例子帮助大家理解。
版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。
3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。
加入 3D视觉开发者社区学习行业前沿知识,赋能开发者技能提升!加入 3D视觉AI开放平台体验AI算法能力,助力开发者视觉算法落地!
往期推荐:1、 开发者社区「运营官」招募启动啦! - 知乎 (zhihu.com)
2、 综述:基于点云的自动驾驶3D目标检测和分类方法 - 知乎 (zhihu.com)
3、 最新综述:基于深度学习方式的单目物体姿态估计与跟踪 - 知乎 (zhihu.com)
独家揭秘!教你从Flaticon和Iconfinder批量下载免费图标!
小伙伴们,早安!
上周末,我分享了超过款可商用图标,未领取的记得查看。当时,我许下承诺,会提供独家教程。现在,它如约而至。
本教程旨在教大家如何从 Iconfinder 和 Flaticon 批量下载免费图标。
首先,从 Flaticon 批量下载:
Flaticon 图标质量高,数量多,适用于PPT制作。但近期,该网站已将免费图标更改为PNG格式预览。使用SVG下载插件的批量获取方法不再有效。
通过编辑图标的方法,可以获取所有免费图标,且无次数限制。不过,带有皇冠的会员图标无法通过此方式下载。
为了批量下载 Flaticon 免费图标,可以使用以下步骤:
1. 打开免费图标集,右键查看网页源代码。
2. 复制代码。
3. 使用链接提取工具,输入代码筛选SVG地址。
4. 将链接粘贴到批量下载工具中,下载所有图标。
请注意,下载链接有有效期,若遇到错误,刷新网页源代码获取新地址。
接着,从 Iconfinder 批量下载:
Iconfinder 提供高质量免费图标,支持多种尺寸PNG下载,也可免费获取SVG格式。
批量下载步骤如下:
1. 打开查看网页源代码。
2. 复制代码。
3. 使用源码内容提取工具,输入代码获取图标下载地址。
4. 将地址粘贴至批量下载工具,下载所有图标。
通过本文,你将学会批量下载两个高质量图标网站的矢量图标。
本文在公众号 [自律的音律] 发布,如有帮助记得点赞收藏。
拓展阅读:三家法国PPT设计公司的案例分析,值得一探。
欢迎访问我的个人主页或专栏,分享PPT领域的知识与故事。
推荐一个PPT神器网站,满足各种PPT制作需求。
如何选择靠谱的微信小程序开发公司
小程序开发公司主要分以下5种类型,每种类型的公司业务的侧重点有所不同,适合不同的小程序开发需求者。你可以根据自己公司的具体情况衡量下,筛选出性价比更高的选择。买产品和服务,适合最重要,没有什么最好答案,因为评判的标准是变化的。一、独立开发公司
从开发上来说,拥有技术,能独立完成开发,满足各种独特功能开发需求。客户通过首次付费购买源码,加上每年续费产品和服务费用,就能够实现长久的使用。随着会员需求的升级,后期可以持续完善小程序的功能。一般有长期发展需求的企业,建议选择独立开发的小程序。
二、二次开发公司
随着小程序热度提升,利润突显。凭借成熟模式与高价占领的市场,那么自然就有人出售低配版来赚钱。那时,在淘宝上各类源码层出不穷,更有不少程序员对获得的盗版源码进行二次开发和优化,在没有授权的情况下,直接出售。前期尝试阶段,可以选择有技术和售后团队的公司合作。有长期发展需求的平台类小程序不建议选择,后期发展起来,知识产权问题也是个头疼的问题。
三、购买源码公司
除了上述两种需要技术的以外,也有人从源头购买技术流开发的程序,自己包装后作为专业商家,向广大需要小程序的公司或个人进行销售获利。购买源码只用花一次的钱,但是通过这个源码可以做出无数个小程序,只要能拉到客户,就能赚钱。市面上开发一款小程序卖几千上万,但购买了源码的公司分钟就能做出来,成本微乎其微。由于多个小程序共用服务器,后期小程序的响应速度问题,很难解决。没有技术和售后支持,小程序后期使用也是一大难题。
四、创意运营为主的公司
是不是花高价从终端流那里购买小程序的人都是傻子呢?当然不是啦!小程序只是你宣传的工具,利润是通过流量变现转化的。作为运营想要通过运作小程序来获利,要么需要的是创意,要么需要的就是个人IP。
五、韭菜流公司
各个行业都有骗子,对应小程序来说自然就是韭菜流了。严格来说韭菜流也是终端流的一种,不过他们最大的特点就是特能忽悠。对于韭菜流来说,所有人可以是他的客户,尤其是没有互联网经验的人。他们会给你许诺无数好处,然后让你掏钱。
高端韭菜流就会包装自己做会销,一般以官方授权为名,使用“腾讯”及“微信”‘支付宝“等注册商标内容,让商户误以为是微信官方举办的招商活动。官方提醒:小程序没有任何的“官方授权”、“官方代理”、“独家代理”等合作形式。
上面这些小程序开发公司里,乱象丛生,正确的选择小程序开发公司就要仔细看清楚了。我相信在未来小程序一定会异军突起,抓住机会就是红利,抓不住就只能眼红。
独家小程序赚钱揭秘!教小白从0-1制作自己的微信小程序(一)
在探索微信小程序赚钱之道的过程中,枫哥深感市场上对小白如何通过小程序实现盈利的指导不够详尽,于是撰写此文,为各位提供正确指引。小程序主要分为商城类、游戏类和工具类,本篇主要讲解工具类小程序,如计算器、抽奖、签到、去水印等。让我们一起深入分析小程序的收益来源与制作步骤。
小程序的盈利模式主要来自广告收益和内置充值功能。广告收益包括banner广告、插屏广告、激励广告、视频广告和格子广告等。其中,视频广告和视频贴片广告的收益模式相同。原生模板广告则允许开发者自定义展示内容,并可以接入广告联盟。而内置充值功能则允许用户在使用特定功能时进行付费,为开发者带来睡后收益。
让我们以风靡一时的“羊了个羊”为例,其卡关后观看秒广告的模式为游戏内收益的一种。据报道,此类广告收益可观。而某程序员通过自研小程序实现盈利+的故事,也展示了小程序赚钱的可能性。
对于小白而言,搭建微信小程序赚钱是否可行?答案是肯定的。枫哥推荐采用代理模式,避免直接自建,减少技术门槛和风险。市面上的小程序主要分为SAAS模板小程序和独立源码小程序两大类。SAAS模板小程序开通速度快,价格便宜,功能丰富,但小程序并非独立存在,容易受模板公司制约。独立源码小程序则拥有独立的源代码,价格较高,但数据安全,不受软件公司限制。
接下来,我们将详细介绍微信小程序的开通流程,以及枫哥的真实经历和教训,以帮助大家避免常见坑点,顺利开启小程序赚钱之路。枫哥以社群类小程序为例,通过某宝平台找到了合适的小程序模板。在选择小程序时,建议优先考虑皇冠、钻石等级的小程序,预算在以内,以确保操作简单、易于维护。在与客服沟通过程中,枫哥发现了多个潜在问题,包括需要自行办理营业执照、认证费用以及服务器选择等。为避免这些额外费用和风险,枫哥采取了合理措施,如自行办理营业执照、通过正规渠道进行小程序认证,并选择性价比高的服务器,最终成功避免了多个陷阱,为小程序的上线打下了坚实的基础。
对于如何制作自己的小程序,枫哥将在后续文章中详细阐述。无论你是新手小白,还是寻求快速盈利的创业者,本系列文章都将为你提供从0到1制作微信小程序的全面指南,帮助你轻松实现小程序盈利。
如何下载亚马逊影响红人视频,全网独家教程亲测
针对如何下载亚马逊影响红人视频的问题,经过最新技术调整,传统下载方式已失效。在电脑端尝试打开时,页面无法加载。接下来,我将分享一个有效解决方案。
首先,打开您感兴趣的亚马逊商品页面,按照常规步骤查看商品展示。这时,按住键盘上的“CTRL+U”键,将页面切换至源代码模式。在新打开的页面中,您会看到商品相关代码。
接着,继续按住“CTRL+F”键,打开搜索工具,输入关键词“hls”,并按回车键。搜索结果将指向影响红人视频的特定链接,如图所示。
找到对应影响红人的视频链接后,点击回车键,视频页面将自动加载。请注意,这里的关键操作是直接将链接复制至手机中的UC浏览器。
在UC浏览器中打开复制的链接,页面将加载视频内容。此时,您会发现一个明显的下载选项,通常位于页面顶部或底部。选择该选项,视频将开始下载至您的手机设备。
下载完成后,您可能需要进行格式转换,将视频转为mp4格式,方便后续观看或分享。完成格式转换后,您即可欣赏或使用所下载的亚马逊影响红人视频。
希望这个教程能够帮助您成功下载亚马逊影响红人视频,祝您使用愉快!
YoloV7改进策略:独家原创,全网首发,复现Drone-Yolo,以及改进方法
我开始这篇文章,旨在分享对Drone-Yolo模型的深入研究和改良,这一模型在无人机数据集上取得了显著的进步。首先,我成功地复现了Drone-Yolo模型,它的mAP0.5指标在VisDrone-test上的提升达到了惊人的.4%,而在VisDrone-val上,更是实现了.%的飞跃性增长,这无疑证实了其在小目标检测领域的强大性能。
在YoloV7的官方结果中,我聚焦于BiC模块的优化。该模块由三个输入和一个输出构成,我根据YoloV6的源代码,并结合YoloV7的特点,对BiC模块进行了适应性调整,以支持不同通道的数据输入和输出,具体代码实现展示了我的创新思考和实践。
通过实施这些改进,我在YoloV7中加入了BiC模块后的测试结果显示,性能得到了显著提升。我不仅复制了原作者的优秀成绩,甚至还超越了它,这无疑显示了我的方法具有很高的实用价值和竞争力。
接着,我对SF模块和网络结构进行了进一步的优化。这次调整不仅影响了mAP@.5的评价,同时对mAP@.5:.也有着积极的影响,整体提升了模型的检测精度和鲁棒性。
2024-11-30 20:04
2024-11-30 19:49
2024-11-30 18:41
2024-11-30 18:33
2024-11-30 18:01