机器学习课程学习周报十八

机器学习课程学习周报十八

文章目录

  • 机器学习课程学习周报十八
    • 摘要
    • Abstract
    • 一、机器学习部分
      • 1. 再探Diffusion的数学原理
        • 1.1 回顾生成模型的任务
        • 1.2 DDPM (Denoising Diffusion Probabilistic Models)
        • 1.3 DDPM的证据下界
    • 总结

摘要

本周周报深入探讨了Diffusion模型的数学原理,重点分析了生成模型如何通过正向和逆向过程实现从简单分布到复杂分布的映射。详细介绍了DDPM(去噪扩散概率模型)的工作机制,包括正向加噪过程和反向去噪过程。通过对ELBO证据下界的推导,解释了模型的优化目标和实现方法。

Abstract

This weekly report delves into the mathematical principles of Diffusion models, focusing on how generative models achieve mapping from simple distributions to complex ones through forward and reverse processes. The report provides an in-depth explanation of the workings of DDPM (Denoising Diffusion Probabilistic Models), including the forward noise addition and reverse denoising processes. By deriving the ELBO evidence lower bound, the report elucidates the optimization objectives and implementation methods of the model.

一、机器学习部分

1. 再探Diffusion的数学原理

1.1 回顾生成模型的任务

在这里插入图片描述
生成模型是我们希望一个能随机生成与训练数据一致的模型。关键问题是我们如何对复杂训练数据的分布进行建模,以及如何从这个复杂分布中进行采样。但我们已知,从一个简单分布进行采样是容易的,从简单分布到观测数据分布(训练数据)是可以拟合的。

那么生成模型的解题思路为:将观测数据分布映射到简单分布,即:Encoder的作用,而在Diffusion模型中这一步称为Forward Process(正向过程或者加噪过程);再从简单分布中映射到生成数据分布,即:Decoder的作用,而在Diffusion模型中这一步称为Reverse Process(逆向过程或者去噪过程)。在训练的过程中,我们需要完整地进行正向和逆向的过程(Encoder到Decoder的过程),而在推理的过程中,我们只需要进行逆向的过程(Decoder的过程)。

而这个简单的分布,我们一般使用的都是高斯分布。选用高斯分布的原因是,利用高斯混合模型,一个复杂分布可以用多个高斯分布来表示,假设有K个高斯分布,这K个高斯分布称为混合模型的隐变量,则复杂分布的概率分布是:

P θ ( x ) = ∑ i = 1 K P ( z i ) ∗ P θ ( x ∣ z i ) {P_\theta }(x) = \sum\limits_{i = 1}^K {P({z_i}) * {P_\theta }(x|{z_i})} Pθ(x)=i=1KP(zi)Pθ(xzi)

这里 P ( z i ) {P({z_i})} P(zi)表示第 i i i个高斯分布在观测数据中占所占的概率,是我们以前学习高斯混合模型时提到的 α \alpha α P θ ( x ∣ z i ) {{P_\theta }(x|{z_i})} Pθ(xzi)表示第 i i i个高斯分布的概率分布函数。

K并非是一个超参数,而是可以由离散转为连续。由上可知, ∫ P ( z ) = 1 \int {P(z) = 1} P(z)=1,所以我们用一个连续的标准高斯分布来表示, P ( z ) ∼ N ( 0 , 1 ) P(z) \sim N(0,1) P(z)N(0,1),则上面离散的转为连续的,这里并不一定非要是高斯分布,只不过是高斯分布比较简单:

P θ ( x ) = ∫ P ( z ) ∗ P θ ( x ∣ z ) d z {P_\theta }(x) = \int {P(z)} * {P_\theta }(x|z)dz Pθ(x)=P(z)Pθ(xz)dz

根据上一次周报,我们对VAE的学习可知,我们要拟合这个生成数据的分布 P θ ( x ) {P_\theta }(x) Pθ(x),使用的是极大似然估计,而为了最大化 log ⁡ ( P θ ( x ) ) \log ({P_\theta }(x)) log(Pθ(x)),引入了观测数据分布到简单分布( q ( x ) q(x) q(x) N ( z ) N(z) N(z))的映射 q ( z ∣ x ) q(z|x) q(zx)来辅助解决问题,最后问题可以转化为求ELBO证据下界:

在这里插入图片描述

上图是VAE和Diffusion模型分别要最大化的ELBO证据下界。

1.2 DDPM (Denoising Diffusion Probabilistic Models)

在这里插入图片描述

Forward Process:向观测数据 X 0 {X_0} X0中逐步加入噪声,直到观测数据变成高斯分布 X T {X_T} XT

Reverse Process:从一个高斯分布 X T {X_T} XT中采样,逐步消除噪声,直到变成清晰的数据 X 0 {X_0} X0

正向添加噪声的过程

x t = 1 − β t ∗ x t − 1 + β t ∗ ε t − 1 {x_t} = \sqrt {1 - {\beta _t}} * {x_{t - 1}} + \sqrt {{\beta _t}} * {\varepsilon _{t - 1}} xt=1βt xt1+βt εt1

x t {x_t} xt是加过噪声的图片, x t − 1 {x_{t - 1}} xt1是这次还未加上新噪声的图片, ε t − 1 {\varepsilon _{t - 1}} εt1是随机生成的一个高斯噪声,在DDPM中一共加了1000次噪声。

在这里插入图片描述

重参数采样

若y是一个高斯分布 y ∼ N ( μ , σ 2 ) y \sim N(\mu ,{\sigma ^2}) yN(μ,σ2),则:

y − μ σ ∼ N ( 0 , 1 ) \frac{{y - \mu }}{\sigma } \sim N(0,1) σyμN(0,1)

ε \varepsilon ε为一个标准高斯分布,则:

y = σ ∗ ε + μ ∼ N ( μ , σ 2 ) y = \sigma * \varepsilon + \mu \sim N(\mu ,{\sigma ^2}) y=σε+μN(μ,σ2)

对比加噪公式: x t = 1 − β t ∗ x t − 1 + β t ∗ ε t − 1 {x_t} = \sqrt {1 - {\beta _t}} * {x_{t - 1}} + \sqrt {{\beta _t}} * {\varepsilon _{t - 1}} xt=1βt xt1+βt εt1,在DDPM论文中 ε t − 1 {\varepsilon _{t - 1}} εt1服从标准高斯分布,所以 x t {x_t} xt满足高斯分布,且:

x t ∼ N ( 1 − β t ∗ x t − 1 , β t ) {x_t} \sim N(\sqrt {1 - {\beta _t}} * {x_{t - 1}},{\beta _t}) xtN(1βt xt1,βt)

DDPM中的定义

一个真实分布的数据(观测数据/训练数据),其分布满足 x 0 ∼ q ( x ) {x_0} \sim q(x) x0q(x)。一共加了T次噪声,得到 x 1 , x 2 , … , x T {x_1},{x_2}, \ldots ,{x_T} x1,x2,,xT。每次加噪声操作是对前一次加完噪声的结果进行操作(这是一个马尔可夫链Markov chain):

q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t ∗ x t − 1 , β t I ) q({x_t}|{x_{t - 1}}) = N({x_t};\sqrt {1 - {\beta _t}} * {x_{t - 1}},{\beta _t}I) q(xtxt1)=N(xt;1βt xt1,βtI)

β t {{\beta _t}} βt是超参数,在DDPM中, β t {{\beta _t}} βt是随着t线性增长的(随着t的增大, x t {x_t} xt趋近于标准高斯分布, 1 − β t ∗ x t − 1 \sqrt {1 - {\beta _t}} * {x_{t - 1}} 1βt xt1接近于0, β t I {\beta _t}I βtI接近于 I I I)。

在这里插入图片描述

上图表明 x t {x_t} xt可以根据 x 0 {x_0} x0 t t t直接推导出来,根据推导得到的 x t = α ˉ t ∗ x 0 + 1 − α ˉ t ∗ ε {x_t} = \sqrt {{{\bar \alpha }_t}} * {x_0} + \sqrt {1 - {{\bar \alpha }_t}} * \varepsilon xt=αˉt x0+1αˉt ε,可以得到:

q ( x t ∣ x 0 ) = N ( x t ; α ˉ t ∗ x 0 , ( 1 − α ˉ t ) I ) q({x_t}|{x_0}) = N({x_t};\sqrt {{{\bar \alpha }_t}} * {x_0},(1 - {{\bar \alpha }_t})I) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)

反向去除噪声的过程

在这里插入图片描述

从一个高斯分布采样,通过反向过程生成观测图像, P θ ( ∗ ) {P_\theta }(*) Pθ()表示是需要模型预测的部分。

P θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T {P_\theta }({x_0}) = \int {{p_\theta }({x_{0:T}})d{x_{1:T}}} Pθ(x0)=pθ(x0:T)dx1:T

p θ ( x 0 : T ) = p ( x T ) ∗ p θ ( x T − 1 ∣ x T ) ∗ p θ ( x T − 2 ∣ x T − 1 ) ∗ ⋯ ∗ p θ ( x 1 ∣ x 0 ) {p_\theta }({x_{0:T}}) = p({x_T}) * {p_\theta }({x_{T - 1}}|{x_T}) * {p_\theta }({x_{T - 2}}|{x_{T - 1}}) * \cdots * {p_\theta }({x_1}|{x_0}) pθ(x0:T)=p(xT)pθ(xT1xT)pθ(xT2xT1)pθ(x1x0)

其中以 x T {x_T} xT,一张高斯噪声图为起点, p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt1xt)定义为高斯分布,即 p ( x T ) p({x_T}) p(xT)乘上 p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt1xt)模型预测得到的高斯分布,可得到去噪第一步得的图片,不断重复去噪过程即可得到

模型预测的高斯分布可写为:

p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) {p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))

1.3 DDPM的证据下界

通过1.1节,我们知道DDPM中要最大化的证据下界是:

E q ( x 1 : x T ∣ x 0 ) [ log ⁡ ( P ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ) ] {E_{q({x_1}:{x_T}|{x_0})}}[\log \left( {\frac{{P({x_0}:{x_T})}}{{q({x_1}:{x_T}|{x_0})}}} \right)] Eq(x1:xTx0)[log(q(x1:xTx0)P(x0:xT))]

化简这个式子有些复杂,这里直接引用Understanding Diffusion Models: A Unified Perspective中的结果:

在这里插入图片描述
在这里插入图片描述

结果就是这个式子:

E q ( x 1 ∣ x 0 ) [ log ⁡ p θ ( x 0 ∣ x 1 ) ] − D K L ( q ( x T ∣ x 0 ) ∣ ∣ p ( x T ) ) − ∑ t = 2 T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ] {E_{q({x_1}|{x_0})}}\left[ {\log {p_\theta }({x_0}|{x_1})} \right] - {D_{KL}}(q({x_T}|{x_0})||p({x_T})) - \sum\limits_{t = 2}^T {{E_{q({x_t}|{x_0})}}\left[ {{D_{KL}}(q({x_{t - 1}}|{x_t},{x_0})||{p_\theta }({x_{t - 1}}|{x_t}))} \right]} Eq(x1x0)[logpθ(x0x1)]DKL(q(xTx0)∣∣p(xT))t=2TEq(xtx0)[DKL(q(xt1xt,x0)∣∣pθ(xt1xt))]

其中 − D K L ( q ( x T ∣ x 0 ) ∣ ∣ p ( x T ) ) -{D_{KL}}(q({x_T}|{x_0})||p({x_T})) DKL(q(xTx0)∣∣p(xT))与模型的参数毫无关系,因为在前向的扩散过程中,我们在1.2节中已经推导过 q ( x t ∣ x 0 ) = N ( x t ; α ˉ t ∗ x 0 , ( 1 − α ˉ t ) I ) q({x_t}|{x_0}) = N({x_t};\sqrt {{{\bar \alpha }_t}} * {x_0},(1 - {{\bar \alpha }_t})I) q(xtx0)=N(xt;αˉt x0,(1αˉt)I),而 p ( x T ) p({x_T}) p(xT)则是个服从标准正态分布的噪声图,因此这一项与模型无关,都是事先规定好的。

− ∑ t = 2 T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ] - \sum\limits_{t = 2}^T {{E_{q({x_t}|{x_0})}}\left[ {{D_{KL}}(q({x_{t - 1}}|{x_t},{x_0})||{p_\theta }({x_{t - 1}}|{x_t}))} \right]} t=2TEq(xtx0)[DKL(q(xt1xt,x0)∣∣pθ(xt1xt))]中, q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)已经在1.2中的推导过了, p θ ( x t − 1 ∣ x t ) {{p_\theta }({x_{t - 1}}|{x_t})} pθ(xt1xt)在1.2中提过。

E q ( x 1 ∣ x 0 ) [ log ⁡ p θ ( x 0 ∣ x 1 ) ] {E_{q({x_1}|{x_0})}}\left[ {\log {p_\theta }({x_0}|{x_1})} \right] Eq(x1x0)[logpθ(x0x1)]这一项与上面一项的推导过程类似。

我们主要来看 − ∑ t = 2 T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ] - \sum\limits_{t = 2}^T {{E_{q({x_t}|{x_0})}}\left[ {{D_{KL}}(q({x_{t - 1}}|{x_t},{x_0})||{p_\theta }({x_{t - 1}}|{x_t}))} \right]} t=2TEq(xtx0)[DKL(q(xt1xt,x0)∣∣pθ(xt1xt))]的计算:

在这里插入图片描述

KL散度中的第一项 q ( x t − 1 ∣ x t , x 0 ) q({x_{t - 1}}|{x_t},{x_0}) q(xt1xt,x0)的意思是给定干净的图片 x 0 {x_0} x0和加过 t t t次噪声的图片 x t {x_t} xt,如何求 x t {x_t} xt前一步 x t − 1 {x_{t - 1}} xt1的问题,

补充一个 q ( x t − 1 ∣ x t , x 0 ) q({x_{t - 1}}|{x_t},{x_0}) q(xt1xt,x0)化简的过程:

在这里插入图片描述

回到 − ∑ t = 2 T E q ( x t ∣ x 0 ) [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ] - \sum\limits_{t = 2}^T {{E_{q({x_t}|{x_0})}}\left[ {{D_{KL}}(q({x_{t - 1}}|{x_t},{x_0})||{p_\theta }({x_{t - 1}}|{x_t}))} \right]} t=2TEq(xtx0)[DKL(q(xt1xt,x0)∣∣pθ(xt1xt))]的计算:

我们知道了 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)的分布,我们在1.2节中也知道了 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) {p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))这个分布。

两个高斯分布的KL散度的计算是有解析解的,如下:

在这里插入图片描述

但是有更简单的方法来解决:
在这里插入图片描述
在这里插入图片描述

根据上述推导,我们知道 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)的高斯分布是个确定的分布,其参数 μ ~ ( x t , x 0 ) \tilde \mu ({x_t},{x_0}) μ~(xt,x0) σ ~ t {{\tilde \sigma }_t} σ~t是确定的, p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) {p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))这个高斯分布的两个参数都是由模型确定的,在DDPM中我们设定固定住了 p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt1xt) Σ θ ( x t , t ) {\Sigma _\theta }({x_t},t) Σθ(xt,t),并保证其与 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)这个高斯分布的方差是一致的。因此,我们只考虑 p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt1xt)中的 μ θ ( x t , t ) {\mu _\theta }({x_t},t) μθ(xt,t),让其越来越接近 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)这个确定的高斯分布的均值,就可以使KL散度最小化。
在这里插入图片描述

我们将 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt1xt,x0)这个确定的高斯分布的均值更进一步推导,代入从 x 0 {{x_0}} x0 x t {{x_t}} xt的关系。

在这里插入图片描述

在这里插入图片描述

因此前向扩散和反向生成可以写为下面的式子:

在这里插入图片描述

值得注意的是,在更进一步的推导中,我们替换了 x 0 {x_0} x0,引入了 ε t {\varepsilon _t} εt(或者说是 ε \varepsilon ε ε \varepsilon ε在上面第二张图出现,指代的就是 ε t {\varepsilon _t} εt), ε t {\varepsilon _{t}} εt是前向扩散中每一步添加的高斯噪声, ε t {\varepsilon _{t}} εt是在反向生成过程中唯一不确定的部分,因此这个 ε t {\varepsilon _{t}} εt是我们反向生成中需要用noise predictor进行预测的。

总结

本次周报系统性地分析了Diffusion模型的理论基础,特别是DDPM模型的操作原理和优化目标。通过对正向和逆向过程的详细推导,深入理解了如何从高斯噪声中逐步生成清晰图像的过程。下周准备阅读论文Understanding Diffusion Models: A Unified Perspective,希望更系统地了解Diffusion模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JsonCpp库学习记录

使用源码的方式 到JsonCpp的开源库仓库下载最新的发行版本 解压压缩包 使用Python生成源码文件 在本路径下cmd打开控制台,使用python编译(前提是python环境已安装) python amalgamate.py 生成dist文件夹 jsoncpp为整合在一起的源码&#…

数通自学——VLAN虚拟局域网,eNSP实验讲解

VLAN虚拟局域网,eNSP实验讲解 一、概念二、eNSP仿真实验1、实验一:vlan演示(交换机端口access模式)2、实验二:vlan演示(交换机端口trunk模式) 一、概念 VLAN(Virtual Local Area Ne…

vmware运维技巧总结

vmware使用实践总结 技巧一、在线添加硬盘技巧二、lvm脚本挂载硬盘 技巧一、在线添加硬盘 适用于不重启vmware虚拟机添加硬盘 首先控制台新加一块100G的硬盘 此时虚拟机内部是识别不到的,lsblk查看如下 不重启的情况下,采用如下方案 步骤一、查找主机…

智慧港口大屏可视化产品原型设计

全球贸易的快速发展和技术的不断进步,港口作为国际贸易的重要枢纽,其运营效率和管理水平直接影响到全球供应链的顺畅。智慧港口的概念应运而生,旨在通过新一代信息技术,将港口相关业务和管理创新深度融合,实现港口的高…

使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南

使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南 初识 Qt 和 gRPC 什么是 Qt?什么是 gRPC? 项目结构概述创建 proto 文件定义 API 下载 api.proto 文件解析 proto 文件 1. package 与 option 语句2. 消息类型定义 TrafficSpeedUserUserSt…

利用Django实现MySQL数据库的内容在网页的增删改写

利用Django实现MySQL数据库的内容在网页的增删改写 1.建立项目2.定义模型3.创建视图4.创建模板5.创建表单和配置url6.最后修改7.效果 1.建立项目 输入命令django-admin startproject aaa 新建项目,项目名称命名为aaa,打开aaa文件夹,命令提示…

vscode 安装教程

双击vscode 安装包 同意,下一步 可以使用默认安装路径,也可以优化为这个 全选 取消勾选,点完成 在桌面创建一个空文件夹,拖动到vscode图标上 点击这个图标创建文件,注意必须以.py 结尾!&#xff0…

第三十二篇:TCP协议粘包和滑动窗口,TCP系列七

上一篇《第三十一篇:TCP协议如何解决丢包的问题,TCP系列六》讲了TCP如何解决丢包问题,本文将为大家讲解TCP是如何提高传输效率,减少传输时延的原理。 1. TCP是如何提高传输效率,减少传输时延的 ① 粘包 如果传输的数…

下载数据集用于图像分类并自动分为训练集和测试集方法

一、背景 最近需要用Vision Transformer(ViT)完成图像分类任务,因此查到了WZMIAOMIAO的GitHub,里面有各种图像处理的方法。而图像处理的前期工作就是获取大量的数据集,用于训练模型参数,以准确识别或分类我…

国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播

在当今社会,视频监控已经成为公共安全、企业管理、智能城市建设等领域不可或缺的一部分。然而,由于不同厂家和平台之间的兼容性问题,视频监控系统的联网和整合面临巨大挑战。为了解决这个问题,国家制定了《公共安全视频监控联网系…

LabVIEW非接触式模态参数识别系统开发

基于LabVIEW的模态参数识别系统采用非接触式声学方法,结合LabVIEW软件和高精度硬件,实现机械结构模态参数的快速准确识别。降低了模态分析技术门槛,提高测试效率和准确性。 项目背景与意义: 传统的模态分析方法,如锤击法&#x…

一个简单的图像分类项目(六)编写脚本:初步训练

训练的脚本 ,用于训练和测试。lib.train.py: import timefrom load_imags import train_loader, train_num from nets import *def main():# 定义网络print(Please choose a network:)print(1. ResNet18)print(2. VGG)# 选择网络while True:net_choose input()if…

【C++】How the C++ Compiler Works

Firstly it needs to pre-process our code which means that any pre-processor statements get evaluated and once our code has been pre-processed we move on to more or less tokenizing(记号化) and parsing(解析) and basically sorting out(整理) this English C lan…

第2次CCF CSP认证真题解

1、相邻数对 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/2/problem/0 本题和第1次认证的第1题“相反数”差不多&#xff0c;都是考察循环遍历比较和计数。 100分代码&#xff1a; #include <iostream> using namespace std; int main(int argc, char …

一款强大的开源OCR工具,支持90+语言识别

大家好&#xff0c;今天给大家分享一款功能强大的开源光学字符识别&#xff08;OCR&#xff09;工具Surya OCR&#xff0c;它基于先进的深度学习技术&#xff0c;提供了高效的字符识别能力&#xff0c;并支持多种语言的文本检测与识别。 项目介绍 核心功能 1.多语言支持 Sur…

破局:DLinear

1. Introduction (1) time series forecasting (TSF)&#xff1b; (2) 回顾 “ Transformer (Vaswani et al. 2017) ” 的各领域优秀表现&#xff1a; (3) IMS vs. DMS : → Consequently, IMS forecasting is preferable when there is a highly-accurate single-step fore…

量化交易打怪升级全攻略

上钟&#xff01; 继续分享量化干货~ 这次要唠的是Stat Arb的新作《Quant Roadmap》(中译名《量化交易路线图》)&#xff0c;为了方便&#xff0c;下文就称呼作者为“老S”&#xff0c;根据公开资料显示&#xff0c;他可是正儿八经的的量化研究员出身&#xff0c;在漂亮国头部对…

【electron8】electron实现“图片”的另存为

注&#xff1a;该列出的代码&#xff0c;都在文章内示例出 1. 另存为按钮事件&#xff1a; const saveAsHandler async () > {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的&#xff0c;所以我需要根据接口返回的路…

全国智能手机使用数据集-dta格式(包含2015、2017、2019三个版本)

数据简介&#xff1a;为推动经济社会高质量发展&#xff0c;缓解经济下行压力&#xff0c;中国加大推动5G基建、大数据中心等科技领域基础设施的建设和完善。数字技术深入各行各业&#xff0c;催生了新业态、新模式、新机会和新就业形式。智能手机作为劳动者使用数字技术的重要…

二叉树的存储方式和遍历方式

文章目录 二叉树的存储方式二叉树的遍历方式DFS--递归遍历DFS--迭代遍历BFS--层次遍历 LC102 二叉树的存储方式 链式存储&#xff08;指针&#xff09;或 顺序存储&#xff08;数组&#xff09; (1)链式存储&#xff1a;通过指针把分布在各个地址的节点串联一起。 (2)顺序存储…