ICE-BA原理

文章目录

      • 主要思想
      • 约束建立IMU&Local & globalBA
        • IMU预积分
        • LocalBA
        • GlobalBA
        • 求解方法
          • 常用的求解思路
          • 改进增量BA方法

论文:
《ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM》
ICE-BA:增量、一致且高效的视觉惯性SLAM的Bundle Adjustment

主要思想

  1. 算法框架Local & globalBA:
    该算法框架包含局部优化(Local BA)和全局优化(Global BA)两个部分。局部优化在一个临时滑动窗口内进行,以减少累积误差并尽快扩展地图;全局优化则以较低的频率运行,优化那些已从局部滑动窗口移除但在全局地图中选择为关键帧的帧。
  2. 高效的增量Bundle Adjustment(ICE-BA)
    提出一种增量求解方法,使用Schur补+PCG加速求解。在每次迭代时,不对整个信息矩阵重新计算,仅对变化量较大的参数进行重新线性化。PCG用于求解位姿,而点的坐标使用回代计算得到。
  3. 全局一致性问题的解决
    在很多先进的SLAM系统中,全局一致性问题尚未得到解决。本文的方法保证在闭环过程中最小化重投影函数和惯性约束函数。

约束建立IMU&Local & globalBA

命名解释:
位姿 C t = ( T t , M t ) = ( ( R T , p t ) , ( v t , b t ) ) C_t=(T_t, M_t)=((R_T,p_t), (v_t, b_t)) Ct=(Tt,Mt)=((RT,pt),(vt,bt))
点:3维: X j X_j Xj,二维图像坐标: x i j x_ij xij表示点 X j X_j Xj被第i帧相机观察到的图像坐标。
在这里插入图片描述

IMU预积分

IMU预积分与VINS类似,采用QVPB的变量模式,即姿态、速度、位置、偏差(加速度、陀螺仪偏差)。
f i j i m u ( C i , C j ) = ( e r T , e v T , e p T , e b T ) T ∼ N ( 0 , Σ i j i m u ) e r = L o g ( ( E x p ( Δ J i j r ( b i − b ^ i ) ) Δ R i j ) T R j R i T ) e v = R i ( v j − v i − g Δ t i j ) − ( Δ v i j + Δ J i j v ( b i − v i j ) ) e p = R i ( p j − p i − v i Δ t i j − 1 2 g Δ t i j 2 ) − ( Δ p i j + Δ J i j p ( b i − b ^ i ) ) \begin{aligned} &f_{ij}^{\mathrm{imu}}(\mathbf{C}_{i},\mathbf{C}_{j})=(\mathbf{e}_{r}^{T},\mathbf{e}_{v}^{T},\mathbf{e}_{p}^{T},\mathbf{e}_{b}^{T})^{T}\sim\mathcal{N}(\mathbf{0},\mathbf{\Sigma}_{ij}^{\mathrm{imu}}) \\ &\mathbf{e}_{r}=\mathrm{Log}((\mathrm{Exp}(\Delta\mathbf{J}_{ij}^{r}(\mathbf{b}_{i}-\hat{\mathbf{b}}_{i}))\Delta\mathbf{R}_{ij})^{T}\mathbf{R}_{j}\mathbf{R}_{i}^{T}) \\ &\text{e} _{v}=\mathbf{R}_{i}(\mathbf{v}_{j}-\mathbf{v}_{i}-\mathbf{g}\Delta t_{ij})-(\Delta\mathbf{v}_{ij}+\Delta\mathbf{J}_{ij}^{v}(\mathbf{b}_{i}-\mathbf{v}_{ij})) \\ &\mathbf{e}_{p} =\mathbf{R}_{i}(\mathbf{p}_{j}-\mathbf{p}_{i}-\mathbf{v}_{i}\Delta t_{ij}-\frac{1}{2}\mathbf{g}\Delta t_{ij}^{2}) \\ &-\left(\Delta\mathbf{p}_{ij}+\Delta\mathbf{J}_{ij}^{p}(\mathbf{b}_{i}-\hat{\mathbf{b}}_{i})\right) \end{aligned} fijimu(Ci,Cj)=(erT,evT,epT,ebT)TN(0,Σijimu)er=Log((Exp(ΔJijr(bib^i))ΔRij)TRjRiT)ev=Ri(vjvigΔtij)(Δvij+ΔJijv(bivij))ep=Ri(pjpiviΔtij21gΔtij2)(Δpij+ΔJijp(bib^i))

此外,由于初始帧(锚点)相机位姿及yaw不可观,在VIO SLAM系统中,且IMU不包含磁力计。因为首帧相机位姿需要固定为先验。

视觉误差也同样与VINS类似,与VINS一致,包含3个方程:

  • 先验,marg后的数据
  • 视觉重投影,点的参数只有深度逆。
  • imu预积分数据
LocalBA

包含一定窗口大小的误差方程,窗口中包含普通帧与关键帧。约束方程如下:

arg ⁡ min ⁡ { C i , ρ j ∣ i = t 0 ⋯ t , j ∈ V i } ∑ i = t 0 t ∑ j ∈ V i ∣ ∣ f i j v i s ( T i , T s j , ρ j ) ∣ ∣ Σ i j v i s + ∣ ∣ f t 0 p r i o r ( C t 0 ) ∣ ∣ Σ t 0 p r i o r + ∑ i = t 0 t − 1 ∣ ∣ f i , i + 1 i m u ( C i , C i + 1 ) ∣ ∣ Σ i , i + 1 i m u \arg\operatorname*{min}_{\{\mathbf{C}_{i},\rho_{j}|i=t_{0}\cdots t,j\in\mathcal{V}_{i}\}}\sum_{i=t_{0}}^{t}\sum_{j\in\mathcal{V}_{i}}||f_{ij}^{\mathrm{vis}}(\mathbf{T}_{i},\mathbf{T}_{s_{j}},\rho_{j})||_{\boldsymbol{\Sigma}_{ij}^{\mathrm{vis}}}\\+||f_{t_{0}}^{\mathrm{prior}}(\mathbf{C}_{t_{0}})||_{\boldsymbol{\Sigma}_{t_{0}}^{\mathrm{prior}}}+\sum_{i=t_{0}}^{t-1}||f_{i,i+1}^{\mathrm{imu}}(\mathbf{C}_{i},\mathbf{C}_{i+1})||_{\boldsymbol{\Sigma}_{i,i+1}^{\mathrm{imu}}} arg{Ci,ρji=t0t,jVi}mini=t0tjVi∣∣fijvis(Ti,Tsj,ρj)Σijvis+∣∣ft0prior(Ct0)Σt0prior+i=t0t1∣∣fi,i+1imu(Ci,Ci+1)Σi,i+1imu

其中 V i \mathcal{V}_{i} Vi表示第 i帧相机观测到的左右点的集合。

GlobalBA

全局BA工作在低频的状态下,只处理关键帧。
关键帧的选定标准:当某帧包含了一定数个其他帧没有的特征点,则该帧被认定为关键帧。
其约束如下:
arg ⁡ min ⁡ { C i , ρ j ∣ i ∈ { k 1 ⋯ k m } , j ∈ V i } ∑ i = k 1 k m ∑ j ∈ V i ∣ ∣ f i j v i s ( T i , T s j , ρ j ) ∣ ∣ Σ i j v i s + ∣ ∣ f 0 p r i o r ( C k 1 ) ∣ ∣ Σ 0 p r i o r + ∑ i = 1 m − 1 ∣ ∣ f k i , k i + 1 i m u ( C k i , C k i + 1 ) ∣ ∣ Σ k i , k i + 1 i m u + ∑ ∣ ∣ f i r e l ( { T k ∈ L i } ) ∣ ∣ Σ i r e l \begin{aligned} &\arg\min_{\{\mathbf{C}_{i},\rho_{j}|i\in\{k_{1}\cdots k_{m}\},j\in\mathcal{V}_{i}\}}\sum_{i=k_{1}}^{k_{m}}\sum_{j\in\mathcal{V}_{i}}||f_{ij}^{\mathrm{vis}}(\mathbf{T}_{i},\mathbf{T}_{s_{j}},\rho_{j})||_{\boldsymbol{\Sigma}_{ij}^{\mathrm{vis}}}+ \\ &||f_{0}^{\mathrm{prior}}(\mathbf{C}_{k_{1}})||_{\boldsymbol{\Sigma}_{0}^{\mathrm{prior}}}+\sum_{i=1}^{m-1}||f_{k_{i},k_{i+1}}^{\mathrm{imu}}(\mathbf{C}_{k_{i}},\mathbf{C}_{k_{i+1}})||_{\boldsymbol{\Sigma}_{k_{i},k_{i+1}}^{\mathrm{imu}}}+ \\ &\sum||f_{i}^{\mathrm{rel}}(\{\mathbf{T}_{k\in\mathcal{L}_{i}}\})||_{\mathbf{\Sigma}_{i}^{\mathrm{rel}}} \end{aligned} arg{Ci,ρji{k1km},jVi}mini=k1kmjVi∣∣fijvis(Ti,Tsj,ρj)Σijvis+∣∣f0prior(Ck1)Σ0prior+i=1m1∣∣fki,ki+1imu(Cki,Cki+1)Σki,ki+1imu+∣∣firel({TkLi})Σirel
其中: L i \mathcal{L}_{i} Li表示与第i帧想关联的关键帧的集合。
相比localBAglobalBA多了一项Relative Marginalization相关的约束,用于约束最新被localBA marg的关键帧与窗口内最新的帧之间的关系。从而避免localBA的漂移。

求解方法

求解localBA以及globalBA构成的最小二乘问题,典型的方法是使用高斯牛顿法,逐步迭代得到全局最小解。
每次迭代时,需要通过计算最小二乘问题 arg ⁡ min ⁡ ϕ ∑ k ∣ ∣ f ~ k ( ϕ ) ∣ ∣ 2 \arg\min_{\phi}\sum_{k}||\tilde{f}_{k}(\phi)||^{2} argminϕk∣∣f~k(ϕ)2的信息矩阵A及雅可比矩阵b来得到参数的更新量:
δ ϕ = A − 1 b = ( J T F ) − 1 J T r \delta \phi = A^{-1}b=(J^TF)^{-1}J^Tr δϕ=A1b=(JTF)1JTr

注意最小二乘问题的雅可比 b b b,这里是有高斯牛顿法近似得到的,不同于 f k f_k fk的雅可比。
f k ( ϕ − ⊕ δ ϕ ) ≈ J k δ ϕ + e k f_k(\phi^-\oplus\delta\phi)\approx\mathbf{J}_k\delta\phi+\mathbf{e}_k fk(ϕδϕ)Jkδϕ+ek J k = ∂ f k ( ϕ − ⊕ δ ϕ ) ∂ δ ϕ ∣ δ ϕ = 0 \mathbf{J}_{k} = \frac{\partial f_{k}(\phi^{-}\oplus\delta\phi)}{\partial\delta\phi}|_{\delta\phi=\mathbf{0}} Jk=δϕfk(ϕδϕ)δϕ=0 e k = f k ( ϕ − ) \mathbf{e}_k = f_k(\phi^{-}) ek=fk(ϕ)

求解:
A δ ϕ = b [ A ∣ b ] = ∑ k [ A k ∣ b k ] [ A k ∣ b k ] = [ J k T J k ∣ − J k e k ] \begin{aligned} \mathbf{A}\delta\phi & =\mathbf{b} \\ [\mathbf{A}|\mathbf{b}]& =\sum_{k}[\mathbf{A}_{k}|\mathbf{b}_{k}] \\ [\mathbf{A}_{k}|\mathbf{b}_{k}]& =[\mathbf{J}_k^T\mathbf{J}_k|-\mathbf{J}_k\mathbf{e}_k] \end{aligned} Aδϕ[Ab][Akbk]=b=k[Akbk]=[JkTJkJkek]

常用的求解思路

技术手段:增量更新信息矩阵;Schur分块+PCG求解
由于SLAM的信息矩阵的特殊性:
在这里插入图片描述

其点云的为对角块矩阵,比位姿的维度大很多,利用Schur补,将point先marg出去,而后求解位姿,得到位姿后,通过回代再得到点的坐标解。
首先将信息矩阵的增广矩阵分块
[ A ∣ b ] = [ U W u W T V v ] [\mathbf{A}|\mathbf{b}]=\left[\begin{array}{cc|c}\mathbf{U}&\mathbf{W}&\mathbf{u}\\\mathbf{W}^T&\mathbf{V}&\mathbf{v}\end{array}\right] [Ab]=[UWTWVuv]
ϕ = ( ϕ c T , ϕ p T ) T \phi = (\phi_{c}^{T},\phi_{p}^{T})^{T} ϕ=(ϕcT,ϕpT)T

采用增量式计算信息矩阵及雅可比的方式:
[ A ∣ b ] + = [ A ∣ b ] − + [ ∑ k ∈ L δ A k ∑ k ∈ L δ b k ] [\mathbf{A}|\mathbf{b}]^{+}=[\mathbf{A}|\mathbf{b}]^{-}+[\begin{array}{c}\sum_{k\in\mathcal{L}}\delta\mathbf{A}_{k}&\sum_{k\in\mathcal{L}}\delta\mathbf{b}_{k}\end{array}] [Ab]+=[Ab]+[kLδAkkLδbk]

使用 S S S表示marg点后得到的关于位姿的信息矩阵,问题变为:
S δ ϕ c = s [ S ∣ s ] = [ U − W V − 1 W T u − W V − 1 v ] \begin{aligned}&\mathbf{S}\delta\phi_{c}=\mathbf{s}\\&[\mathbf{S}|\mathbf{s}]=\left[\begin{array}{c|c}\mathbf{U}-\mathbf{W}\mathbf{V}^{-1}\mathbf{W}^{T}&\mathbf{u}-\mathbf{W}\mathbf{V}^{-1}\mathbf{v}\end{array}\right]\end{aligned} Sδϕc=s[Ss]=[UWV1WTuWV1v]
具体计算:
[ S i 1 i 2 ∣ s i ] = [ U i 1 i 2 − ∑ j ∈ V i 1 ∪ V i 2 S i 1 i 2 j u i − ∑ j ∈ V i s i j ] \left.\left[\mathbf{S}_{i_{1}i_{2}}|\mathbf{s}_{i}\right]=\left[\begin{array}{cc}\mathbf{U}_{i_{1}i_{2}}-\sum_{j\in\mathcal{V}_{i_{1}}\cup\mathcal{V}_{i_{2}}}\mathbf{S}_{i_{1}i_{2}}^{j}&\mathbf{u}_{i}-\sum_{j\in\mathcal{V}_{i}}\mathbf{s}_{i}^{j}\end{array}\right.\right] [Si1i2si]=[Ui1i2jVi1Vi2Si1i2juijVisij]
[ S i 1 i 2 j ∣ s i j ] = [ W i 1 j V j j − 1 W i 2 j T ∣ W i j V j j − 1 v j ] ] [\mathbf{S}_{i_{1}i_{2}}^{j}|\mathbf{s}_{i}^{j}]=\left[\begin{array}{c}{\mathbf{W}_{i_{1}j}\mathbf{V}_{jj}^{-1}\mathbf{W}_{i_{2}j}^{T} \big| \mathbf{W}_{ij}\mathbf{V}_{jj}^{-1}\mathbf{v}_{j} \big]}\\\end{array}\right] [Si1i2jsij]=[Wi1jVjj1Wi2jT WijVjj1vj]]

作者提出了增量式的S的更新方式:
[ S i 1 i 2 ∣ s i ] + = [ S i 1 i 2 ∣ s i ] − + [ ∑ j ∈ P i 1 i 2 δ S i 1 i 2 j ∣ ∑ j ∈ P i i δ s i j ] ] P i 1 i 2 = P ∪ V i 1 ∪ V i 2 \begin{aligned} [\mathbf{S}_{i_{1}i_{2}}|\mathbf{s}_{i}]^{+}& \left.=\left[\mathbf{S}_{i_{1}i_{2}}|\mathbf{s}_{i}\right]^{-}+\left[\begin{array}{c}{\sum_{j\in\mathcal{P}_{i_{1}i_{2}}}\delta\mathbf{S}_{i_{1}i_{2}}^{j} \Big| \sum_{j\in\mathcal{P}_{ii}}\delta\mathbf{s}_{i}^{j} \Big]}\\\end{array}\right.\right] \\ \mathcal{P}_{i_{1}i_{2}}& =\mathcal{P}\cup\mathcal{V}_{i_{1}}\cup\mathcal{V}_{i_{2}} \end{aligned} [Si1i2si]+Pi1i2=[Si1i2si]+[jPi1i2δSi1i2j jPiiδsij]]=PVi1Vi2

在得到 [ S ∣ s ] [S|s] [Ss]后,由于S的稀疏性( s i 1 , i 2 s_{i_1,i_2} si1,i2非0的条件是, i 1 i_1 i1, i 2 i_2 i2相机有共同观测点),使用PCG求解 ϕ c \phi_{c} ϕc,而后使用回代法求得 ϕ p \phi_p ϕp
δ ϕ p j = V j j − 1 ( v j − ∑ i ∈ X j W i j T δ ϕ c i ) \delta\phi_{p_{j}}=\mathbf{V}_{jj}^{-1}\left(\mathbf{v}_{j}-\sum_{i\in\mathcal{X}_{j}}\mathbf{W}_{ij}^{T}\delta\phi_{c_{i}}\right) δϕpj=Vjj1 vjiXjWijTδϕci
X j \mathcal{X}_{j} Xj表示能够观测点点j的相机集合。

这里引入文中原话:
“due to the nature of SLAM problem, new states and measurements always arrive incrementally. As a result, only a small portion of variables change at each iteration”。这句话的因果。迭代iteration是指下降法中的迭代,每次迭代都需要对变量进行更新,从而得到新的线性化点。SLAM是时间顺序的,每帧会增加一些观测。这里混淆了每帧的到来,和每次的迭代这两个含义。从而使得增量法的出发点有了一定的问题。

关于iSAM的增量法可行原因是,iSAM是基于好的线性化点假设,可以理解为通过一次迭代便能够接近最小解。而使用iSAM的方法也可以计算一次迭代,而iSAM的增量计算不能工作在每次的迭代中。

此外,引入作者另一篇论文《Robust Keyframe-based Dense SLAM with an RGB-D Camera》关于这部分求解的流程图:
普通解法:
在这里插入图片描述

增量解法流程:
在这里插入图片描述

从这篇RGBD论文中,作者将变量的更新值大于一定阈值的变量才会进行重新线性化,即更新雅可比。从而解释了上面关于SLAM每次迭代只需要更新很少雅可比的原因。但于此同时,同步引入误差到解中,一种精度换效率的方法。

改进增量BA方法

1、 增量ImprovementforLocalBA
IBA(Schur补,PCG增量求解) 能够显著加快global BA的求解速度。因为globalBA中存放的都是关键帧,帧间共同观测的点比较少,从而会保证S的稀疏性,从而保证PCG的有效性。
IBA(Schur补,PCG增量求解) 能够显著加快global BA的求解速度。因为globalBA中存放的都是关键帧,帧间共同观测的点比较少,从而会保证S的稀疏性,从而保证PCG的有效性。
作者提出将 ( x ) j \mathcal(x)_j (x)j集合分为多个小的集合,如下所示:
在这里插入图片描述

点的深度也对应上图,分为对应个。从而使得S矩阵从稠密矩阵变为对角带状矩阵。从而增加稀疏性。
2、 IncrementalPCGforIBA
δ ϕ c \delta\phi_c δϕc比较小时,对应的雅可比不更新。
3、 RelativeMarginalization
为了减少localBA由于边缘化的先验等引入的漂移误差。作者提出通过相对边缘化,保持先于边缘化和global BA 之间的一致性。
将当前位姿 C i C_i Ci,以及观测点的第一帧 C s j C_{s_j} Csj表示到参考帧下。
即都乘了 T k 0 − 1 T_{k_0}^{-1} Tk01

参考帧选的是最近的关键帧,用相对参考帧的描述(位姿和点在参考系下的表示)。而不是绝对的位姿和点的世界坐标系的表示。

总结:
这篇论文提出了几个关于增量迭代求解的技术思路,精度换效率。多是在技术角度上提出,而非算法理论创新。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

多商户SaaS版扫码点餐系统开源

基于前后端分离的 多商户 SaaS 版扫码点餐系统,支持后台点餐、多人同时在线点餐、购物车共享、餐桌状态实时监控,菜品管理、餐桌管理等众多功能。 源码下载:多商户 SaaS 版扫码点餐系统.zip 功能特色 手机扫码点餐功能:用户可…

如何评价2023年国际高校数学建模竞赛B题?

问题1:在三星堆发现的一个外圆直径为85厘米,内圆直径为40厘米(假设)的青铜车轮,青铜车轮有5条车轴(射线),5条内弧线本质是双曲线,顶点与内圆相切,内弧双曲线的…

植物病害分级调研

Web of Science搜索,关键字“plant disease severity recognition”,共407篇,限制2023年以后共71篇 2019、2020 《Disentangled Representation Learning for Leaf Diseases Recognition》 2019 IF:0.8 论文:Disen…

Xcode进行真机测试时总是断连,如何解决?

嗨。大家好,我是兰若姐姐。最近我在用真机进行app自动化测试的时候,经常会遇到xcode和手机断连,每次断连之后需要重新连接,每次断开都会出现以下截图的报错 当这种情况出现时,之前执行的用例就相当于白执行了&#xff…

爬虫瑞数5案例:某大学总医院

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、瑞数简介 瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,…

Go语言并发编程-Goroutine调度

goroutine 概念 在Go中,每个并发执行的单元称为goroutine。通常称为Go协程。 go 关键字启动goroutine go中使用关键字 go 即可启动新的goroutine。 示例代码: 两个函数分别输出奇数和偶数。采用常规调用顺序执行,和采用go并发调用&…

大模型学习笔记十一:视觉大模型

一、判别式模型和生成式模型 1)判别式模型Discriminative ①给某一个样本,判断属于某个类别的概率,擅长分类任务,计算量少。(学习策略函数Y f(X)或者条件概率P(YIX)) ②不能反映训练数据本身的特性 ③学习…

优思学院|直方图与条形图的具体区别

在六西格玛方法、质量管理工具中,数据的分析和可视化是关键步骤。直方图和条形图是两种常用的图表工具,但它们在用途和显示方式上有显著区别。本文将详细探讨这两种图表的定义、特性、应用及如何选择适合的图表。 1. 直方图和条形图的定义 直方图是一种…

人工智能未来发展前景将会怎样?

当我们探讨人工智能未来的发展前景时,可以从多个角度来详细说明其可能的影响和趋势: 技术进步与应用扩展 1.深度学习与机器学习: 进一步优化和算法进展:深度学习已经取得了巨大成就,但仍面临挑战,如对小数…

程序员想要6万一个月,需要什么能力,要吃什么样的苦?

让我们来算一道小学数学题:6w*1272w,年包72w的程序员起码是阿里P7-P8的水平了,论工作职责来说,起码得是大厂的一个小tech leader,如果是在小公司,基本上是公司骨干级成员,或是统筹整个项目和小组…

FFmpeg播放视频

VS2017+FFmpeg6.2.r113110+SDL2.30.5 1.下载 ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC++控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下,并设置调试命令

如何让您的反爬虫策略更具弹性?揭秘管理技巧

摘要: 本文深入探讨了反爬虫策略的最新趋势与实战技巧,旨在帮助网站所有者和数据分析师构建更加灵活高效的爬虫管理系统。通过理解反爬机制、动态应对策略及合法数据采集的最佳实践,确保数据收集在遵守网络规则的同时,实现业务目…

Kettle 登录示例 POST请求

登录接口是post请求,组装Body为json字符串 var body "{\"username\":\""username"\",\"password\": \""password"\",\"code\":\""verification"\",\"uuid\…

YOLOv7网络结构学习

YOLOV7详细解读(一)网络架构解读 YOLOV7学习记录之原理代码介绍 【Make YOLO Great Again】YOLOv1-v7全系列大解析(Backbone篇) yolov7 图解 深入浅出 Yolo 系列之 Yolov7 基础网络结构详解 我觉得Head、Neck和Head的划分不太…

FedAvg的简单实现(详解)

对于联邦学习正在学习中,下文中若有错误出现,望指正 介绍 本文在简单实现联邦平均算法时,使用客户-服务器架构,其基本流程是: 1、server初始化模型参数,所有clients将这个初始模型下载到本地 2、clien…

每个人都有良知,只是被遮蔽的程度不同

85天 【困之勉行,下笨功夫】 每个人的良知余光都在,困之勉行努力用余光去精细明察,须下“人一己百,人十己千”的努力; 生活中,我们往往会看到,绝顶聪明的人往往愿意下笨功夫,而资质…

linux开机后不用登陆,无法正常进入系统,出现:/#的提示符

linux开机后不用登陆,无法正常进入系统,出现:/#的提示符 解决方案: 1、输入命令 ls /dev/mapper 此时会出现3个文件。其中rhel-root文件 是我们下面所要用的文件。 ls的目的就是为了让大家能知道自己带"-root" 文件的前缀是什…

C语言switch的使用

switch的使用语句 switch(表达式) { case 值1: 语句1; break; case 值2: 语句2; break; default: break; } 注意事项:1.表达式计算结果只能为(字符/整数) 2.case值只能是(字…

SpringData JPA Mongodb 查询部分字段

JPA 网上用的好像不多&#xff0c;找了好多材料以后最终找了这个可行的方案&#xff1a; Query(fields "{tender_id:1,_id:0}")List<MGPltTender> findByTenderIdIsNotNull(PageRequest pageRequest); 调用&#xff1a; Sort sort Sort.by(popularType.getC…

推荐3款堪称神器的工具软件,实用强大颜值高,你不能错过

Flameshot Flameshot是一款功能强大且易于使用的开源屏幕截图软件&#xff0c;广泛应用于Linux、Windows和macOS等平台。它不仅支持图形界面&#xff08;GUI&#xff09;操作&#xff0c;还提供命令行接口&#xff08;CLI&#xff09;&#xff0c;使得用户可以根据自己的需求选…