贝叶斯树定义与构建的寻行数墨

Title: 贝叶斯树定义与构建的寻行数墨 —— Notes for “The Bayes Tree: An Algorithmic Foundation for Probabilistic Robot Mapping”


文章目录

  • I. 前言
  • II. 贝叶斯树的定义
    • 1. 贝叶斯树的背景
    • 2. 贝叶斯树的特点
    • 3. 贝叶斯树的定义
  • III. 贝叶斯树的构建
    • 1. 贝叶斯树的构建算法
    • 2. 贝叶斯树的构建实例
    • 3. 贝叶斯树的构建过程
  • IV. 总结
  • 参考文献


关联博文:

因子图、边缘化与消元算法的抽丝剥茧 —— Notes for “Factor Graphs for Robot Perception”

基于 GTSAM 的因子图简单实例

GTSAM 中的鲁棒噪声模型与 M-估计 (GTSAM Robust Noise Model and M-Estimator)

贝叶斯树定义与构建的寻行数墨 —— Notes for “The Bayes Tree: An Algorithmic Foundation for Probabilistic Robot Mapping” ⇐ \quad\Leftarrow\quad 本篇


I. 前言

之前博客写到 SLAM 问题的因子图建模以及因子图计算中通过消元获得贝叶斯网络的过程. 这里我们继续跟着原作者的研究一起看看并记录一下.

Kaess 等人在论文 “The Bayes Tree: An Algorithmic Foundation for Probabilistic Robot Mapping”[1] 中提出了一种新型的数据结构 —— 贝叶斯树 (Bayes Tree).

本篇博文中,

- 先简单翻译原作者对贝叶斯树的介绍, 以了解该数据结构的特性;

- 然后应用实例介绍如何基于已获得的贝叶斯网络构建贝叶斯树.

作为基础的因子图、噪声模型等内容可参见关联博文, 此处不再重复.


II. 贝叶斯树的定义

1. 贝叶斯树的背景

原论文 Introduction 部分介绍了贝叶斯树引入的背景[1], 此处直接摘录并翻译.

Kaess 等人已提出了基于稀疏特性的平方根信息矩阵的增量更新算法 iSAM (Incremental Smoothing and Mapping). 该方法存在的问题是需要周期地批量计算变量重排序以及重线性化, 降低了计算效率及算法实时性.

概率推理视角下的图模型在 SLAM 中的应用已有一段时间, 也有一些较好的结果.

为了组合图模型以及稀疏线性代数的优点, 提出了一种新颖的数据结构 —— 贝叶斯树.

我们的方法建立在视矩阵分解为对因子图进行消元得到贝叶斯网络 (Bayes Net) 的过程. 其中贝叶斯网络等价于平方根信息矩阵 (Square Root Information Matrix) 的图模型.

在贝叶斯网络中执行边缘化和优化计算一般不容易. 然而, 由消元/分解等到的贝叶斯网络是弦的 (Chordal). 而弦的贝叶斯网络能够转换为树结构图模型. 在这种树结构图模型中就可以容易地执行边缘化和优化计算了.

最有名的树结构形式的数据结构是团树 (Clique Tree), 在 AI 文献中也称为联结树 (Junction Tree). 图树也已经在 SLAM (Simultaneous Localization and Mapping) 领域被研究探索过了.

然而, 我们提出的新的数据结构 —— 贝叶斯树, 是有向的也更自然地对应于 QR 分解所得的结果, 而且可以允许我们在该树中就条件概率密度进行分析. 我们进一步展示增量推理对应于贝叶斯树的简单编辑, 并进一步提出一种新颖的增量式变量排序策略.

弦的 (Chordal), 满足任意长度大于 3 的无向环都有一根弦


2. 贝叶斯树的特点

翻译原论文 Abstract 部分对贝叶斯树的特性描述[1]如下.

贝叶斯树提供了一种算法基础, 能够更好地理解存在的图模型推理算法及其关联的稀疏矩阵因子分解方法.

类似于团树, 贝叶斯树能够编码因式化分解的概率密度. 但又与团树不同, 贝叶斯树是有向的, 并更自然地映射 SLAM 问题的平方根信息矩阵.

贝叶斯树能够对 SLAM 问题提供三项洞察:

- 就概率密度而言, 贝叶斯树能对批量矩阵分解产生更好地理解.

- 能够将相对抽象的矩阵分解的更新过程转化为简单的贝叶斯树编辑及其条件密度.

- 应用贝叶斯树可获得一个针对稀疏非线性增量优化的新颖算法, 该算法将增量更新与约简变量集合的流畅再线性化融合以获得更高的计算效率, 同时融合了快速收敛到精准解的特性.


3. 贝叶斯树的定义

同样摘录翻译原论文中关于贝叶斯树的定义[1]如下.

通过因子图消元算法得到的贝叶斯网络是弦的. 这种贝叶斯网络可以转换为方便进行优化计算和边缘化计算的树结构图模型.

贝叶斯树是有向树, 它的节点代表对应的弦的贝叶斯网络中的 (Clique C k C_k Ck, 其中 k k k 为节点指标).

(Clique), 图中的完全子图, 每对不同顶点之间恰有一条边相连.

从这方面看, 贝叶斯树类似于团树. 但是贝叶斯树是有向的, 并且在编码因式分解的概率密度的方式上更接近于贝叶斯网络.

实际上, 我们在贝叶斯树的每个节点上定义条件概率密度
P ( F k ∣ S k ) (II-3-1) P(F_k | S_k) \tag{II-3-1} P(FkSk)(II-3-1)
其中, 分离子 (Separator) S k S_k Sk 是该节点代表的团 C k C_k Ck 和该节点的父团 (Parent Clique) Π k \Pi_k Πk 的交集, 即
S k ≜ C k ∩ Π k (II-3-2) S_k \triangleq C_k \cap \Pi_k \tag{II-3-2} SkCkΠk(II-3-2)
前端变量 (Frontal Variables) F k F_k Fk 为剩余变量, 即
F k ≜ C k \ S k (II-3-3) F_k \triangleq C_k \backslash S_k \tag{II-3-3} FkCk\Sk(II-3-3)
C k C_k Ck 可以写成
C k = F k : S k (II-3-4) C_k = F_k : S_k \tag{II-3-4} Ck=Fk:Sk(II-3-4)
这样就得出由贝叶斯树定义的关于全体状态变量 Θ \Theta Θ 的联合概率密度
P ( Θ ) = ∏ k P ( F k ∣ S k ) (II-3-5) P(\Theta) = \prod_k P(F_k | S_k) \tag{II-3-5} P(Θ)=kP(FkSk)(II-3-5)
需要说明, 对于根团 C r = F r C_r = F_r Cr=Fr, 其分离子为空, 即根团概率密度为一先验概率 P ( F r ) P(F_r) P(Fr).

基于以上贝叶斯树的定义, 团 C k C_k Ck 的分离子 S k S_k Sk 总是其父团 Π k \Pi_k Πk 的子集 (式 (II-3-2)). 因此贝叶斯树上有向边 (Direct Edges) 具有和贝叶斯网络一样的语义信息 —— 条件作用 (Conditioning).

以上的内容都是概念性的, 也比较抽象, 之前没有接触过的话, 会被绕得云里雾里的.

以上仅做铺垫, 下面我们进入具体内容:

如何将一个已经由因子图通过消元/边缘化获得的贝叶斯网络转化为可以实现增量式推理的贝叶斯树


III. 贝叶斯树的构建

1. 贝叶斯树的构建算法

        算法: 从由因子图消元得到的弦的贝叶斯网络构建产生贝叶斯树[1]

[1]   For (以消元顺序的逆序, 遍历贝叶斯网络中的每一个条件概率密度 P ( θ j ∣ S j ) P(\theta_j|S_j) P(θjSj)):

[2]        if (父集为空, 即 S j = { } S_j=\{\} Sj={}):

[3]                开始一个包含 θ j \theta_j θj 的新根团 F r F_r Fr

[4]        else:

[5]                识别父团 C p C_p Cp, 该父团需包含分离子 S j S_j Sj 中第一个被消元的变量, 作为父团的一个前端变量

[6]                if (父团 C p = F p ∪ S p C_p=F_p \cup S_p Cp=FpSp 等于条件概率中的分离子 S j S_j Sj):

[7]                          把条件概率插入父团 C p C_p Cp 中去

[8]                else:

[9]                          作为父团 C p C_p Cp 的子团, 开始一个包含变量 θ j \theta_j θj 的新子团 C ′ C' C


2. 贝叶斯树的构建实例

沿用之前博文中的因子图实例如下. 在高斯噪声模型下, 因子图描述的概率系统的最大后验估计, 经过负对数 ( − log ⁡ ( ⋅ ) -\log(\cdot) log()) 处理后, 可以得到非线性二乘问题的局部线性化 Jacobian 矩阵[2]. 这样因子图和 Jacobian 矩阵之间形成了映射.

因子图 (Factor Graph)雅可比矩阵 (Jacobian)
factor_graph_1jacobian-A-3

通过对因子图进行消元/边缘化后得到的贝叶斯网络如下. 因子图的消元过程又对应着最大后验估计负对数处理导出的非线性二乘问题的局部线性化系统的 QR 分解. 这个 QR 分解得到的矩阵 R \mathbf{R} R 就称为平方根信息矩阵. 因子图消元后对贝叶斯网络进行边缘化计算对应着计算 QR 分解后局部线性化系统的解[2]. 这样因子图消元得到的贝叶斯网络和平方根信息矩阵 R \mathbf{R} R 存在关联关系.

贝叶斯网络 (Bayes Net)平方根信息矩阵 (Square Root Information Matrix)
bayes_net_2square_root_information_matrix_R_4

因子图的消元顺序 l 1 → l 2 → x 1 → x 2 → x 3 l_1 \rightarrow l_2 \rightarrow x_1 \rightarrow x_2 \rightarrow x_3 l1l2x1x2x3.

得到了贝叶斯网络后, 如何通过贝叶斯树的构建算法一步一步的构建贝叶斯树呢?


3. 贝叶斯树的构建过程

下面我们按照贝叶斯树的构建算法一步一步分解执行.

步骤实现
确定消元顺序的逆 x 3 → x 2 → x 1 → l 2 → l 1 x_3 \rightarrow x_2 \rightarrow x_1 \rightarrow l_2 \rightarrow l_1 x3x2x1l2l1
处理 P ( x 3 ) P(x_3) P(x3)判断 “父集为空” 成立
开始一个新的根团 C r = F r = { x 3 } C_r=F_r = \{x_3\} Cr=Fr={x3}
(注意根团没有分离子)
处理 P ( x 2 ∣ x 3 ) P(x_2\vert x_3) P(x2x3)判断 “父集为空” 不成立
识别父团为 F r F_r Fr
满足分离子 S j = { x 3 } S_j = \{x_3\} Sj={x3} 中的第一个消除元素 x 3 x_3 x3 包含在父团的前端变量集合 F r F_r Fr
判断 “父团 F r F_r Fr 与条件概率中的分离子 S j S_j Sj 相等” 成立
把条件概率插入父团 F r F_r Fr 中去
父团变为 F r = { x 2 , x 3 } F_r=\{x_2, x_3\} Fr={x2,x3}
处理 P ( x 1 ∣ x 2 ) P(x_1 \vert x_2) P(x1x2)判断 “父集为空” 不成立
识别父团为 F r = { x 2 , x 3 } F_r=\{x_2,x_3\} Fr={x2,x3}
满足分离子 S j = { x 2 } S_j = \{x_2\} Sj={x2} 中的第一个消除元素 x 2 x_2 x2 包含在父团的前端变量集合 F r F_r Fr
判断 “父团 F r F_r Fr 与条件概率中的分离子 S j S_j Sj 相等” 不成立
因为 F r = { x 2 , x 3 } ‾ ≠ S j = { x 2 } ‾ \underline{F_r=\{x_2, x_3\}} \neq \underline{S_j=\{x_2\}} Fr={x2,x3}=Sj={x2}
开始新的团 C 1 ′ = { x 1 , x 2 } C'_1=\{x_1, x_2\} C1={x1,x2}, 作为 F r F_r Fr 的子团
新团的分离子 S 1 ′ = C 1 ′ ∩ C p = { x 1 , x 2 } ∩ { x 2 , x 3 } = { x 2 } S'_1= C'_1 \cap C_p = \{x_1, x_2\} \cap \{x_2, x_3\} = \{x_2\} S1=C1Cp={x1,x2}{x2,x3}={x2}
新团的前端变量集合 F 1 ′ = C 1 ′ \ S 1 ′ = { x 1 } F'_1 = C'_1 \backslash S'_1 = \{x_1\} F1=C1\S1={x1}
新团记为 C 1 ′ = { x 1 } : { x 2 } C'_1 = \{x_1\} : \{x_2\} C1={x1}:{x2}
处理 P ( l 2 ∣ x 3 ) P(l_2 \vert x_3) P(l2x3)判断 “父集为空” 不成立
识别父团为 F r = { x 2 , x 3 } F_r=\{x_2,x_3\} Fr={x2,x3}
满足分离子 S j = { x 3 } S_j = \{x_3\} Sj={x3} 中的第一个消除元素 x 3 x_3 x3 包含在父团的前端变量集合 F r F_r Fr
判断 “父团 F r F_r Fr 与条件概率中的分离子 S j S_j Sj 相等” 不成立
因为 F r = { x 2 , x 3 } ‾ ≠ S j = { x 3 } ‾ \underline{F_r=\{x_2, x_3\}} \neq \underline{S_j=\{x_3\}} Fr={x2,x3}=Sj={x3}
开始新的团 C 2 ′ = { l 2 , x 3 } C'_2=\{l_2, x_3\} C2={l2,x3}, 作为 F r F_r Fr 的子团
新团的分离子 S 2 ′ = C 2 ′ ∩ C p = { l 2 , x 3 } ∩ { x 2 , x 3 } = { x 3 } S'_2= C'_2 \cap C_p = \{l_2, x_3\} \cap \{x_2, x_3\} = \{x_3\} S2=C2Cp={l2,x3}{x2,x3}={x3}
新团的前端变量集合 F 2 ′ = C 2 ′ \ S 2 ′ = { l 2 } F'_2 = C'_2 \backslash S'_2 = \{l_2\} F2=C2\S2={l2}
新团记为 C 2 ′ = { l 2 } : { x 3 } C'_2 = \{l_2\} : \{x_3\} C2={l2}:{x3}
处理 P ( l 1 ∣ x 1 , x 2 ) P(l_1 \vert x_1, x_2) P(l1x1,x2)判断 “父集为空” 不成立
分离子 S j = { x 1 , x 2 } S_j = \{x_1, x_2\} Sj={x1,x2} 中的第一个消除元素为 x 1 x_1 x1
前端变量集合包含 x 1 x_1 x1 的团为 C 1 ′ = { x 1 } : { x 2 } C'_1 = \{x_1\} : \{x_2\} C1={x1}:{x2}
故识别到父团为 C 1 ′ = { x 1 } : { x 2 } C'_1 = \{x_1\} : \{x_2\} C1={x1}:{x2}
判断 “父团 C 1 ′ = { x 1 , x 2 } C'_1=\{x_1, x_2\} C1={x1,x2} 与条件概率中的分离子 S j = { x 1 , x 2 } S_j=\{x_1, x_2\} Sj={x1,x2} 相等” 成立
把条件概率插入父团 C 1 ′ C'_1 C1 中去
父团变为 C 1 ′ = { l 1 , x 1 , x 2 } C'_1=\{l_1, x_1, x_2\} C1={l1,x1,x2}
更新分离子 S 1 ′ = C 1 ′ ∩ F r = { l 1 , x 1 , x 2 } ∩ { x 2 , x 3 } = { x 2 } S'_1= C'_1 \cap F_r = \{l_1, x_1, x_2\} \cap \{x_2, x_3\} = \{x_2\} S1=C1Fr={l1,x1,x2}{x2,x3}={x2}
更新前端变量集合 F 1 ′ = C 1 ′ \ S 1 ′ = { l 1 , x 1 } F'_1 = C'_1 \backslash S'_1 = \{l_1, x_1\} F1=C1\S1={l1,x1}
该团记为 C 1 ′ = { l 1 , x 1 } : { x 2 } C'_1 = \{l_1,x_1\} : \{x_2\} C1={l1,x1}:{x2}

得到根团 F r = x 2 , x 3 F_r={x_2, x_3} Fr=x2,x3, 子团 C 1 ′ = { l 1 , x 1 } : { x 2 } C'_1=\{l_1, x_1\}:\{x_2\} C1={l1,x1}:{x2} 和子团 C 2 ′ = { l 2 } : { x 3 } C'_2=\{l_2\}:\{x_3\} C2={l2}:{x3}, 很自然地贝叶斯树就可以画出来了.

贝叶斯树 (Bayes Tree)
bayes_tree_1
{ x 2 , x 3 } \{x_2, x_3\} {x2,x3} 定义了概率密度 P ( x 2 , x 3 ) P(x_2, x_3) P(x2,x3)
{ l 1 , x 1 } : { x 2 } \{l_1, x_1\}:\{x_2\} {l1,x1}:{x2} 定义了条件概率密度 P ( l 1 , x 1 ∣ x 2 ) P(l_1, x_1 \vert x_2) P(l1,x1x2)
{ l 2 } : { x 3 } \{l_2\}:\{x_3\} {l2}:{x3} 定义了条件概率密度 P ( l 2 ∣ x 3 ) P(l_2 \vert x_3) P(l2x3)
{ l 1 , x 1 } : { x 2 } \{l_1, x_1\}:\{x_2\} {l1,x1}:{x2} 与团 { l 2 } : { x 3 } \{l_2\}:\{x_3\} {l2}:{x3} 之间的相对独立

比较分析贝叶斯树与平方根信息矩阵, 可以发现贝叶斯树以图形的形式较好地刻画/映射了平方更信息矩阵的结构信息.

平方根信息矩阵 (Square Root Information Matrix)
square_root_information_matrix_colored
矩阵中同一颜色的行代表在贝叶斯树中处于同一团
矩阵中不同颜色的行代表在贝叶斯树中处于不同的团
虚线框则与分离子有关
根团始终在矩阵的最底行

这样本实例的贝叶斯树就构建完毕了.


IV. 总结

本篇博文根据参考文献,

对贝叶斯树这一为 SLAM 因子图处理而引入的新数据结构进行了介绍,

然后介绍了由贝叶斯网络建立贝叶斯树的算法, 并用实例进行了演示模拟.

图模型 (因子图、贝叶斯网络、贝叶斯树等) 与数值模型 (最大后验概率、最小二乘法、Jacobian 矩阵、平方根信息矩阵等) 相互关联与印证中, 可以发现好多值得细细品味的地方, 赞叹一步一步把这些框架搭起来的前赴后继的研究人员的创造力!

预告一下, 后面将介绍基于贝叶斯树的增量更新, 来体验贝叶斯树的功效.


参考文献

[1] Kaess, M., Ila, V., Roberts, R., Dellaert, F. (2010). The Bayes Tree: An Algorithmic Foundation for Probabilistic Robot Mapping. In: Hsu, D., Isler, V., Latombe, JC., Lin, M.C. (eds) Algorithmic Foundations of Robotics IX. Springer Tracts in Advanced Robotics, vol 68. Springer, Berlin, Heidelberg

[2] Frank Dellaert, Michael Kaess, Factor Graphs for Robot Perception, Foundations and Trends in Robotics, Vol. 6, No. 1-2 (2017) 1–139

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

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

相关文章

springboot源码解析之Model和Map参数解析

springboot源码解析之Model和Map参数解析 标签:源码:springboot 测试代码 Controller public class HelloController {RequestMapping("/helloModelAndMap")public String helloModelAndMap(HttpServletRequest request, Model model, Map<String, Object> …

鸿蒙文章专题-2021年鸿蒙相关的文章废弃

#原因 至于为什么说2021年我的鸿蒙专栏的文章废弃了&#xff0c;只是说没有了参考意义&#xff0c;是因为鸿蒙4.0以前的版本语言从以Java为主过渡为以ArkTS为主。以前的Java版本的工程已经无法再使用了&#xff0c;后续的开发都必须以ArkTS开发语言为主。 其中而且整个项目结构…

Vue深度教程

一、Vue简介 1.简介 2.快速上手 二、基础 1.创建一个Vue应用 2.模板语法 3.响应式基础 4.计算属性 5.Class与 Style绑定 6.条件渲染 7.列表渲染 8.事件处理 9.表单输入绑定 10.生命周期钩子 11.侦听器 12.模板引用 13.组件基础 三、深入组件 1.组件注册 2.Props 3.组件事件 …

vue ui Starting GUI 图形化配置web新项目

前言&#xff1a;在vue框架里面&#xff0c; 以往大家都是习惯用命令行 vue create 、vue init webpack创建新前端项目&#xff0c;而vue ui是一个可视化的图形界面&#xff0c;对于新手来说更加友好了&#xff0c;不但可以创建、管理、还可以更新vue项目&#xff0c;也可以下载…

实现swiper 3d 轮播效果

先上个效果图&#xff0c;代码可以直接拿~ 安装swiper和vue-awesome-swiper 因为项目用的是nuxt2&#xff0c;所以考虑到swiper的兼容问题&#xff0c;选择的是"swiper": “^5.2.0” 首先是安装swiper和vue-awesome-swiper&#xff0c;并指定版本 npm install s…

在 SpringBoot3 中使用 Mybatis-Plus 报错

在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…

C语言如何设置随机数

本期介绍&#x1f356; 主要介绍&#xff1a;在C语言中如何创建一个随机数。 文章目录 1. rand函数2. srand函数3. time函数4. 设置随机数的范围 1. rand函数 想要生成随机数&#xff0c;就需要用到C语言提供的一个库函数叫rand&#xff0c;这个函数可以生成0~32767范围内的随机…

Ubuntu/Linux系统下Redis的基本操作命令

版本查询 redis-server --version # 或者redis-server -v 如上图所示&#xff0c;redis-server的版本为6.0.9,证明redis已经安装完成。 启动Redis服务 启动命令如下&#xff1a; redis-server启动成功如下所示&#xff1a; 启动过程中遇到如下问题时&#xff0c;杀死指定端…

可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案

NSI50150ADT4G产品概述&#xff1a; NSI50150ADT4G可调恒定电流稳压器 (CCR) &#xff0c;是一款简单、经济和耐用的器件&#xff0c;适用于为 LED 中的调节电流提供成本高效的方案&#xff08;与恒定电流二极管 CCD 类似&#xff09;。该 (CCR) 基于自偏置晶体管 (SBT) 技术&…

波奇学Linux:信号的发送和保存

信号的发送的对象是pcb task_struct{ int signal; //0000 0000 .... 0001 进程pcb中存在int型的signal来保存信号&#xff0c;用位图的方式&#xff0c;比特位的0&#xff0c;1表示是否收到信号 比特位位置表示信号的编号。 发信号的本质就是修改task_struct的信号位图对应的…

Android 日志原理解析

一、Logcat 二、Dumpsys C:\Users\pengcheng.ding>adb shell dumpsys --help usage: dumpsysTo dump all services. or:dumpsys [-t TIMEOUT] [--priority LEVEL] [--clients] [--dump] [--pid] [--thread] [--help | -l | --skip SERVICES | SERVICE [ARGS]]--help: show…

学生护眼台灯哪种好?揭秘央视公认好用的护眼台灯

现在近视已经成为了普遍的现象&#xff0c;尤其是学生群体&#xff0c;究其原因主要还是长期是电子设备、长时间的用眼疲劳以及不合适的用光环境&#xff0c;很多时候我们不经意的错误习惯都会导致不知不觉中近视。尤其是桌面上的那一盏台灯&#xff0c;如果台灯的质量太差也是…

Java批量操作文件系统

一、实验内容 编写一个文件管理器&#xff0c;实现文件的批量操作。文件管理器具体功能要求如下&#xff1a; 1、用户输入指令1&#xff0c;代表“指定关键字检索文件”&#xff0c;此时需要用户输入检索的目录和关键字&#xff0c;系统在用户指定的目录下检索出文件名中包含…

DataGrip(IDEA 内置)连接 SQL Server

原文&#xff1a;https://blog.iyatt.com/?p14265 测试环境&#xff1a; IDEA 2023.1SQL Server 2022 首先打开 SQL Server 配置管理工具 启用 TCP/IP 打开 Windows 服务管理 在服务列表中找到 SQL Server&#xff08;MSSQLSERVER&#xff09;&#xff0c;右键重新启…

PostgreSQL 安装部署

文章目录 一、PostgreSQL部署方式1.Yum方式部署2.RPM方式部署3.源码方式部署4.二进制方式部署5.Docker方式部署 二、PostgreSQL部署1.Yum方式部署1.1.部署数据库1.2.连接数据库 2.RPM方式部署2.1.部署数据库2.2.连接数据库 3.源码方式部署3.1.准备工作3.2.编译安装3.3.配置数据…

Android视角看鸿蒙第一课(工程目录)

Android视角看鸿蒙第一课&#xff08;工程目录&#xff09; 导读 鸿蒙马上就来了&#xff0c;这个工作很有可能落到Android开发的头上&#xff0c;既是机遇也是挑战&#xff0c;希望能跟上时代的浪潮&#xff0c;迫不得已开始学习鸿蒙开发&#xff0c;顺带分享记录下 我的学…

新书速览|PyTorch语音识别实战(人工智能技术丛书)

实战语音唤醒、音频特征抽取、语音情绪分类、Whisper语音转换、鸟叫多标签分类、多模态语音文字转换 01 本书内容 《PyTorch语音识别实战》使用PyTorch 2.0作为语音识别的基本框架&#xff0c;循序渐进地引导读者从搭建环境开始&#xff0c;逐步深入到语音识别基本理论、算法以…

解决QMYSQL driver not loaded问题

前言 之前都是在Qt5.51上开发&#xff0c;连接mysql数据库一直没有问题&#xff0c;换到5.15.2后一直报错 一查才发现\5.15.2\msvc2019_64\plugins\sqldrivers目录下没有qsqlmysql了&#xff0c;5.5.1是有的&#xff0c;5.15.2是要自己编译的。。。 下载源码 安装qt的时候没…

阿里云游戏访问与下载加速解决方案

随着全球化的发展&#xff0c;越来越多的企业开始将业务扩展到海外市场。然而&#xff0c;海外市场的挑战也是显而易见的。例如在游戏企业进军海外市场的过程中&#xff0c;网络延迟是一个常见的问题。由于地理位置的限制&#xff0c;海外用户登录访问游戏和游玩时&#xff0c;…

阿里云服务器Ngnix配置SSL证书开启HTTPS访问

文章目录 前言一、SSL证书是什么&#xff1f;二、如何获取免费SSL证书三、Ngnix配置SSL证书总结 前言 很多童鞋的网站默认访问都是通过80端口的Http服务进行访问&#xff0c;往往都会提示不安全&#xff0c;很多人以为Https有多么高大上&#xff0c;实际不然&#xff0c;他只是…