Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations

  • 文章概括
  • 摘要
  • 1. 介绍
  • 2. 相关工作
  • 3. 粒子滤波器网络
    • *A. 粒子滤波器算法*
    • *B. 神经网络实现*
  • 4. 视觉定位
  • 5. 实验
    • *A. 实验装置*
    • *B. 比较基线*
    • *C. 结果与讨论*
  • 6.结论

文章概括

作者:Peter Karkus,David Hsu and Wee Sun Lee
来源:暂无
原文:https://natanaso.github.io/rcw-icra18/assets/ref/ICRA-MRP18_paper_15.pdf
代码、数据和视频:暂无
系列文章目录:
上一篇:
论文笔记(十一):Learning to Track with Object Permanence
下一篇:

摘要

粒子过滤器通过对有代表性的点进行抽样并独立更新,顺序地近似于后验分布。这个想法被应用于各个领域,例如机器人学中的不确定性推理。剩下的一个挑战是构建系统的概率模型,这对于复杂的传感器,如照相机,可能特别困难。我们介绍了粒子过滤网络(PF-nets),它在一个单一的神经网络结构中编码了学习的概率系统模型和粒子过滤算法。这种统一的表示方法允许端到端学习模型,规避了传统的基于模型的方法的困难。我们将PF-nets应用于一项具有挑战性的视觉定位任务,该任务要求将摄像机图像的视觉特征与二维地板图中编码的几何图形相匹配。在初步实验中,端到端PF-nets的表现一直优于其他学习架构,以及传统的基于模型的方法。

1. 介绍

粒子过滤器,也被称为顺序蒙特卡洛方法,建立在用一组粒子(即分布的加权样本)代表任何概率分布的强大理念上[1]。它们被广泛用于各种领域,如机器人学[2]、[3]和计算机视觉[4]、[5],以及统计学、物理学、计量经济学和财务学[6]、[7]、[8]。基于样本的表征在机器人学中很重要,因为我们必须处理不确定性,从而对不同类别的概率分布进行推理。事实上,它们被广泛用于定位[2]、SLAM[9]和部分可观察性下的规划[10]等算法中。这些方法的基本限制是它们需要一个系统的概率模型。不幸的是,手动构建概率模型或从数据中学习概率模型仍然很困难[11], [12], [13]。

最近的一项新兴工作将算法结构整合到深度神经网络中,并以端到端的方式学习模型,规避了传统模型学习的困难[14]、[15]、[16]、[17]、[18]、[19]、[20]。其中一些工作涉及到不确定性,并明确地以卡尔曼滤波[15]和直方图滤波[16]、[17]、[21]的形式纳入滤波。这些滤波方法分别用高斯和离散直方图表示概率分布,因此,它们不适合机器人技术中出现的许多问题。

我们介绍了粒子过滤网络(PF-nets),这是一个深度的递归神经网络(RNN)架构,它将粒子过滤算法与学习的概率过渡和观察模型一起编码(图1)。算法和模型都被捕获在一个统一的网络表示中,这允许端到端的训练,即为最终的任务目标共同优化模型。与以前的工作相比,粒子表示法可以有效地近似任意的、连续的分布,使PF-nets适用于广泛的问题。在这里,我们将它们应用于根据部分视觉观察在地图上定位机器人的挑战性任务(图2)。

图1:PF-nets采用算法先验进行概率状态估计:学习的模型和粒子过滤器算法都被编码在一个统一的表示中。

图2:视觉定位。给出一张二维地图和来自机载摄像机的图像,对机器人进行定位。观察模型必须将视觉特征与地图的几何形状相匹配,同时忽略地图上没有标明的物体。

一个机器人在一个以前没有见过的环境中航行,而它不知道自己的确切位置。其任务是在给定的二维平面图和来自机载传感器(如照相机)的历史观测数据的情况下,定期估计其位置。粒子过滤器被认为是使用激光测距仪进行定位的工业标准[2]。这里我们考虑视觉传感器而不是测距仪。现在的困难是获得一个概率观测模型,从丰富的相机图像中提取信息,并将其与地面地图中编码的二维几何形状相匹配。我们可以从数据中学习这样的模型,但担心的是模型错误对状态估计的后果,以及缺乏合适的训练数据。我们建议不直接学习模型,而是将其与过渡模型和推理算法一起编码在一个神经网络结构中,并从观察序列到状态估计进行端到端训练。现在,这些模型为最终目标而共同优化;它们在容易获得的轨迹数据上进行训练,而不是在地面真实的观测概率上。

在House3D数据集上的初步结果[22]显示,PF-nets对视觉定位是有效的,而且学到的模型可以推广到新环境。 通过端到端的训练,PF-nets可以学习对环境中的对象具有模式鲁棒性的模型,而不是传统的基于模型的方法。统一的神经网络表示为融合来自不同传感器的信息提供了机会;并为定位整合几何和语义信息。PF-nets中的粒子表示,当与适当的算法结构相结合时,也可能允许在未来将部分可观察的规划扩展到大的状态空间。

2. 相关工作

将算法优先权与深度神经网络相结合的做法最近越来越受到关注。这一想法被应用于马尔科夫决策过程中的价值迭代[14]、图中搜索[18]、[19]、[23]、路径积分最优控制[24]、二次方程序优化[20]、[25]以及部分可观察性下的规划等方面的决策[17]、[26]。Haarnoja等人解决了概率状态估计的问题,他们在神经网络中对卡尔曼滤波器进行编码[15]。概率分布被限制为单模高斯。Jonschkowski等人引入了端到端的直方图滤波器[16],类似的滤波器被[17]和[21]用于部分可观察性下的策略学习。直方图滤波器使用的是离散表示法,因此它们在本质上仅限于小的状态空间。相比之下,我们使用粒子滤波器,它可以有效地近似大的连续空间上的无限制的分布类别。

机器人定位的问题已经被粒子滤波方法成功地解决了,在这种情况下通常称为蒙特卡洛定位。蒙特卡洛定位通常假定机器人上安装有激光测距仪,为此已经建立了简单的分析观测模型[27]。已经有人尝试将单眼或深度相机[28]、[29]、[30]、[31]纳入其中,但是为粒子过滤获得概率观测模型仍然很困难。PFnets将概率模型和粒子过滤算法都编码在一个神经网络中,因此可以端到端学习定位,从相机图像到状态估计。我们不需要对模型进行直接监督,而是期望通过端到端的训练出现有效的模型。

3. 粒子滤波器网络

我们介绍了用于学习概率状态估计的粒子过滤网络(PF-nets)。PF网将粒子过滤算法以及过渡和观测模型编码在一个单一的深度RNN结构中,因此结合了算法推理和深度学习的好处(图3和图4)。在网络中编码算法允许端到端地联合学习转移和观察模型,直接针对状态估计目标进行优化,从而规避了传统基于模型的学习的困难。神经网络表示还为传感器融合提供了一种有原则的方法。 我们可以简单地添加多个观察模型组件,或者共同学习一个端到端的多个传感器模式的观察模型。与LSTM网络[38]等通用架构相比,PF-nets明确地编码了用于顺序概率估计的结构,即概率分布的粒子表示,以及过渡和观测的贝叶斯更新。在这一节中,我们介绍了PF-net结构的细节。我们将PF-nets应用于视觉定位,但在未来的工作中,该方法也可用于其他状态估计领域。

图3:PF-nets将过渡和观测模型与粒子过滤算法一起编码在一个RNN中,其中粒子集对应于RNN的隐藏状态。

图4:PF-nets的更新过程。过渡和观察模型都是可学习的神经网络组件。权重在粒子间共享。

A. 粒子滤波器算法

粒子过滤器通过周期性地逼近观测后的状态后验分布,即时间ttt的信念bt(s)b_t(s)bt​(s)来估计系统的状态。信念由一组粒子逼近,即概率分布的加权样本,

bt(s)≈⟨stk,wtk⟩,(1)b_t(s)\approx\left \langle s^k_t,w^k_t \right \rangle,(1) bt​(s)≈⟨stk​,wtk​⟩,(1)

其中∑kwk=1\sum_{k}w_k = 1∑k​wk​=1和k=1...Kk = 1...Kk=1...K。这里KKK表示粒子的数量,sks_ksk​和wkw_kwk​分别表示粒子状态和权重。粒子表示法可以近似于一类不受限制的概率分布。在任何一点上,状态都可以通过粒子的加权平均数来估计,

s‾t=∑kwtkstk.(2)\overline{s}_t = \sum_{k}w^k_ts^k_t.(2) st​=k∑​wtk​stk​.(2)

当收到一个新的观察结果时,粒子以贝叶斯方式定期更新。首先,粒子的状态通过从概率过渡模型中取样更新,

stk∼T(s∣ut,st−1k),(3)s^k_t \sim T(s|u_t,s^k_{t-1}),(3) stk​∼T(s∣ut​,st−1k​),(3)

其中TTT是过渡模型,定义了给定前一个状态st−1ks^k_{t-1}st−1k​和测距仪读数utu_tut​的概率。假设测距仪具有高斯噪声,过渡模型通常也是高斯的。

第二,为每个粒子计算观察似然,ftkf_t^kftk​,

ftk=Z(ot∣stk;M),(4)f^k_t = Z(o_t|s^k_t;\mathbb{M}), (4) ftk​=Z(ot​∣stk​;M),(4)

其中,观察模型ZZZ定义了观察的条件概率,即在给定状态stks^k_tstk​和二维底图M\mathbb{M}M的情况下,摄像机图像oto_tot​。然后,粒子权重根据似然性被更新,

wtk=ftkwt−1kc−1,(5)w^k_t = f^k_tw^k_{t-1}c^{-1}, (5) wtk​=ftk​wt−1k​c−1,(5)

其中c=∑j∈Kftjwt−1jc=\sum_{j∈K}f_t^jw_{t-1}^jc=∑j∈K​ftj​wt−1j​ 是一个归一化系数。

粒子过滤的一个常见问题是粒子退化,当几个粒子的权重接近零时。这个问题通常是通过重新取样来解决的。我们从当前的粒子集中重复抽取新的粒子集,其中一个粒子是以其权重定义的概率来选择的,

p(k)=wtk.(6)p(k) = w^k_t. (6) p(k)=wtk​.(6)

然后,权重被更新为均匀分布,

wt′k=1/K.(7)w'^k_t = 1/K.(7) wt′k​=1/K.(7)

新的粒子集近似于相同的分布,但将其表现力投入到空间的重要区域。这个集合可能包含重复的粒子,但由于随机的过渡更新,它们以后会出现分歧。

B. 神经网络实现

我们将粒子过滤算法实现为RNN,其中RNN的隐藏状态对应于粒子集。过渡和观察模型被表示为神经网络组件,可以从数据中学习。整体架构见图3,更新步骤的详细结构见图4。

将粒子过滤算法作为RNN实现的关键思想是将神经网络视为计算图,或可微程序,并以可微方式实现算法步骤(1)-(5),作用于计算图的张量。粒子过滤中的大多数操作都是可微的,例如乘法和加法。然而,在一般情况下,我们必须解决不可微分的操作,例如(11)中从学习分布中取样,以及(6)-(7)中重新取样颗粒。我们可以使用这两种操作的可微分近似值,如下。

我们对过渡模型T使用高斯分布,这在机器人定位领域通常是这样的。如果我们把高斯分布的采样变成可微分的操作,例如通过变异自动编码器[32]中使用的 “重新参数化技巧”,就可以学到分布的参数。

重采样操作的问题是,新的粒子权重被设置为常数,这反过来又会产生零梯度。我们通过引入软抽样(softresampling)来解决这个问题,软抽样是重抽样操作的一个可微调的近似值。与(6)不同的是,我们对粒子的采样概率为:

q(k)=αwtk+(1−α)1/K,(8)q(k) = αw^k_t + (1-α)1/K,(8) q(k)=αwtk​+(1−α)1/K,(8)

是粒子权重和一个对应于均匀分布的常数的组合,其中ααα是一个权衡参数。然后,新的权重由重要性抽样公式计算出来,

wt′k=wtkq(k)−1,(9)w'^k_t = w^k_tq(k)^{-1}, (9) wt′k​=wtk​q(k)−1,(9)

当α≠1α≠1α​=1时,它有一个非零梯度。软采样将最佳采样分布(α=1)(α=1)(α=1)与均匀采样分布(α=0)(α=0)(α=0)进行了交换,保持了对先前粒子权重的依赖性,从而为训练提供了梯度。

现在我们已经以一种可微分的方式实现了所有的操作。给定一个特定的任务,我们必须选择状态的表示,TTT和ZZZ的网络结构,以及粒子的数量,KKK。请注意,我们可以为训练和评估选择不同的K设置。在下一节中,我们将讨论我们对视觉定位任务的设计选择。

4. 视觉定位

考虑到一个差分驱动(differential drive)的机器人在一个它以前没有见过的室内环境中导航。该机器人配备了一个机载摄像头和测距传感器,但它对自己的位置并不确定。它的任务是根据过去的观察历史定期估计位置,给定一个编码建筑物几何形状的二维平面图。从形式上看,我们寻求使二维姿态估计和实际机器人姿态在轨迹上的平均平方差最小,

min∑t(x‾t−xt∗)2+(y‾t−yt∗)2+β(ϕ‾t−ϕt∗)2,(10)min\sum_t(\overline{x}_t-x^{*}_t)^2+(\overline{y}_t-y^{*}_t)^2+β(\overline{\phi}_t-\phi^{*}_t)^2, (10) mint∑​(xt​−xt∗​)2+(y​t​−yt∗​)2+β(ϕ​t​−ϕt∗​)2,(10)

其中x‾t,y‾t,ϕ‾t\overline{x}_t, \overline{y}_t, \overline{\phi}_txt​,y​t​,ϕ​t​和xt∗,yt∗,ϕt∗x^∗_t, y_t^∗, \phi^∗_txt∗​,yt∗​,ϕt∗​分别是时间ttt的估计值和真实的机器人姿势;βββ是一个常数参数。挑战是双重的。首先,我们必须定期更新给定模糊观测值的状态后验,其中后验是连续空间上的非标准、多模态分布。其次,我们需要获得给定状态和地图的摄像机图像的概率。这涉及到从二维平面图和摄像机拍摄的三维场景中提取和比较建筑物的几何结构。

我们将PF-nets应用于这个视觉定位任务。PF-nets解决了这两个关键的挑战:它们明确地编码了粒子过滤的结构,用于对非标准的连续分布进行连续估计;它们将观察模型表示为神经网络,从而可以从数据中端到端地学习适当的特征。

我们将PF-net中的状态定义为机器人的姿势,s={x,y,ϕ}s=\{x, y, \phi\}s={x,y,ϕ},其中xxx和yyy是机器人的坐标,ϕ\phiϕ是方向。然后,粒子是由候选姿势和相应的权重组成的一对。我们使用K=30K = 30K=30个粒子进行训练,K=30...100K = 30...100K=30...100个粒子进行评估。过渡和观察模型是具有适当结构的可微分神经网络。

过渡模型传播粒子状态,给定相对运动,utu_tut​,由机器人坐标框架中的测距仪定义。我们将相对姿态转换为全局坐标框架,即ut′u'_tut′​,并将其与高斯噪声一起添加到状态中。然后,过渡模型是

T(stk∣ut′,st−1k)=N(st−1k+ut′;diag(σt,σt,σr)),(11)T(s^k_t|u'_t,s^k_{t-1})=\mathcal{N}(s^k_{t-1}+u'_t;diag(\sigma_t,\sigma_t,\sigma_r)), (11) T(stk​∣ut′​,st−1k​)=N(st−1k​+ut′​;diag(σt​,σt​,σr​)),(11)

其中,N(μ;∑)\mathcal{N}(\mu;\sum)N(μ;∑)表示多变量高斯分布,σtσ_tσt​和σrσ_rσr​分别为平移和旋转的标准偏差。在初步实验中,我们手动设置了σtσ_tσt​和σrσ_rσr​,但在未来我们可能会从数据中学习它们,与观测模型一起进行优化。

观察模型定义了给定粒子状态stks^k_tstk​和底层地图MMM的观察概率oto_tot​。我们使用图5所示网络。首先,通过空间转换组件从M\mathbb{M}M和stks^k_tstk​获得一个局部地图。我们采用空间变换器网络(Spatial Transformer Network)[34],该网络将仿生图像变换作为一个神经网络来实现。与[34]不同的是,我们为每个粒子定义了仿生变换矩阵AAA,使得变换后的图像是来自姿势stks^k_tstk​的局部视图。然后,我们通过两个独立的卷积组件(CNN)从局部图和观测输入中提取特征。这些特征图被串联起来并送入一个局部全连接层,重塑为一个矢量,并送入最后一个全连接层。输出是一个标量,ftkf_t^kftk​,即粒子状态的可能性。每个粒子的似然值都被获得,粒子的权重通过公式(5)进行更新。我们注意到,观察特征只需要对所有粒子计算一次;而且该网络适用于任何大小的地板图。


图5:PF-nets中用于定位的观测模型。输入是底层地图M\mathbb{M}M,时间ttt的观测oto_tot​,以及粒子状态stks^k_tstk​。输出是粒子概率ftkf_t^kftk​。CNNCNNCNN、LFCLFCLFC和FCFCFC分别表示卷积、局部完全连接和完全连接的组件。

更新被应用于每个粒子,粒子权重被归一化。然后我们可以使用公式(8)-(9)重新取样;或者简单地将粒子带到下一步。在我们的实验中,我们没有在训练中使用重采样;但是,我们相信在未来的工作中,当训练长轨迹和高不确定性时,重采样是有益的。

5. 实验

我们在初步模拟实验中评估了PF-nets,它们成功地学习了具有挑战性的定位任务。通过端到端的训练,学习到的观察模型可以结合多种传感器模式,并能概括到新的环境中。与传统的基于模型的方法相比,PF-nets可以端到端学习更有效的模型。

A. 实验装置

我们在House3D虚拟环境中进行了实验[22],这是一个3-D模拟器,其中有大量人类设计的、来自SUNCG数据集[35]的现实住宅建筑。

我们在200栋建筑中生成了45000条长度为24的随机无碰撞轨迹用于训练,并从47栋建筑的单独集合中生成了830条轨迹用于评估。机器人要么以p=0.8p=0.8p=0.8的概率向前移动,要么以p=0.2p=0.2p=0.2的概率进行旋转。距离和旋转角度分别在[20cm,80cm][20cm, 80cm][20cm,80cm]和[15◦,60◦][15^◦, 60^◦][15◦,60◦]范围内均匀采样。初始信念和基础初始状态也是随机选择的。我们选取一个点,从以该点为中心的多变量高斯中抽取初始状态和初始粒子,使用∑=diag(30cm,30cm,30◦)\sum=diag(30cm, 30cm, 30^◦)∑=diag(30cm,30cm,30◦)。我们沿轨迹渲染摄像机图像,并从模拟器中获得地板图。地板图是一个自上而下的视图,显示建筑元素,即墙壁。该地图并不显示环境中的其他物体,例如家具。观察模型必须识别并忽略这些物体,以实现基于几何的定位。

我们考虑了该任务的两种变体:一种是简化的变体,即只在摄像机图像上渲染墙壁(表一中只有墙壁);另一种是渲染所有物体(所有物体)。后一种设置对于基于几何的定位来说是很难的,因为大多数可见的物体都没有显示在地图上,因此物体与摄像机的距离并不直接对应于地图上的距离。我们在不同的实验中尝试了不同的传感器:深度相机(depthdepthdepth),单眼相机(RGBRGBRGB),以及两者的结合,一个RGB-D相机(RGB−DRGB-DRGB−D)。为了与传统的激光模型进行比较,我们使用了一个虚拟测距仪(激光),将二维深度地图转换为一维虚拟激光扫描图。

表一

我们在Tensorflow[36]中实现了PF-nets,并使用RMSProp优化器[37]通过时间的反向传播进行训练。

B. 比较基线

1)传播的不确定性: 传播的不确定性表示由于传播的初始不确定性而产生的估计误差。我们只进行过渡更新,但不进行观测更新,因此不确定性从未减少。

2)激光模型PF: 这种基于模型的基线是用人工构建的激光测距仪模型进行粒子过滤。在实践中经常使用的模型有两个:光束模型和似然场模型[27]。我们使用了ROS[2]的AMCL包中的光束模型的实现,它可以被认为是行业标准。为了进行公平的比较,我们使用在墙壁上生成的虚拟测距仪数据调整了模型参数。

3)直方图滤波器网络: 为了评估粒子表示在网络学习架构中的重要性,我们与端到端直方图滤波器[16], [17]进行了比较,适应于视觉定位。直方图滤波器网络采用了类似于PF-nets的概率状态估计的算法先验,但置信度是由直方图表示的,即离散状态的概率值表。直方图表示法不能很好地扩展到大的状态空间。在我们的直方图网络中,我们将状态空间离散为地板图的大小,缩小了20倍;还有16个离散方向。我们无法用更细的离散化来达到更好的效果。

4)LSTM网络: 为了进一步评估信念表示在我们网络中的重要性,我们与一个LSTM结构进行了比较,该结构采用了基于地图的定位的先验,但没有采用专门用于概率状态估计的算法先验。该网络在每一步接收图像和局部地图,并输出一个相对状态估计。相对状态被添加到之前的状态中,而地图则从更新的状态转化为下一步的本地视图。此外,我们还尝试了vanilla LSTM公式的多种变体,直接从全局地图、观察和当前状态映射到下一个状态,但我们并没有在这种架构上取得成功。

C. 结果与讨论

初步结果总结在表I中。我们报告了为xxx、yyy分量计算的均方根误差(RMSE),在47个以前未见过的环境中,对830个测试轨迹的固定集合进行了平均。测试轨迹有24步长,与训练轨迹的生成方式相同。

经过学习的PF-nets成功地减少了使用视觉观察的状态不确定性,即使环境中充斥着分散注意力的家具和家用物品。PF-nets中的算法预设,即粒子过滤器算法,有利于顺序状态估计。PF-nets的表现一直优于其他具有较弱优先权的学习架构(直方图滤波网络、LSTM网络)。

对于激光传感器来说,与传统的基于模型的方法(激光)相比,学习到的PF-net模型更加强大。当环境中只有墙壁被呈现出来时,它们的表现相似,但当有额外的物体存在时,学习到的模型明显更好。传统的激光模型将激光扫描与单个激光束解耦,因此它没有原则性的方法来区分墙壁和物体,只能将它们视为离群检测。相比之下,PF-nets学习一个端到端的模型。激光扫描是联合处理的,因此学习的模型可以利用激光束之间的关系来检测物体。端到端方法也使学习能够补偿不完美的地图,例如缺失的墙壁、玻璃窗或地图边缘的人工制品,我们在House3D数据集中观察到了这些。

学习到的深度和RGB模型比激光模型表现更好,表明PF-nets学习到了深度和RGB图像中编码的更丰富的信息。RGB模型的表现比深度模型差,但差距不大。这表明,深度神经网络学会了从RGB图像中提取几何图形,这本身就是一项具有挑战性的任务。对于组合的RGB-D传感器,我们简单地将深度和RGB输入串联起来。与仅有深度的图像相比,性能没有明显改善;尽管如此,我们相信端到端方法可能学会了用更好的网络结构来融合来自多个传感器的信息。

目前,我们只考虑了在初始状态不确定性相对较低的跟踪环境下的定位问题。未来的工作应该研究具有较大初始不确定性的更困难的定位设置。我们的方法的一个局限性是,我们需要计算每个粒子的观察似然。对于复杂的模型和许多粒子来说,这可能是很昂贵的计算,而大的不确定性通常需要1,000-10,000个粒子用于室内机器人定位[2]。请注意,计算的复杂性来自于粒子过滤的性质,而不是神经网络的表示。

图6:从训练(上)和测试(下)环境中提取的地图和RGB摄像机图像的例子。训练(上)和测试(下)环境中提取的地图和RGB摄像机图像。地图是 不是按比例绘制的。所有物体都是在摄像机图像上呈现的。但不是在地面地图上。

6.结论

我们提出将算法推理和深度学习整合到概率状态估计中,通过在一个统一的网络学习架构中编码粒子过滤器算法和概率模型。在视觉定位领域的初步结果是很有希望的。

未来的工作可能会将我们对PF网的实验扩展到现实世界的视觉定位,这是一个对移动机器人应用非常感兴趣的问题。PF网也可以应用于其他领域,例如视觉物体跟踪或同时定位和映射。最后,我们相信粒子表示法对于在神经网络中编码更复杂的算法是很重要的,它可以实现真正的大规模推理,例如在部分可观察性下进行规划。

论文笔记(十二):Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations相关推荐

  1. 论文笔记(二十二):Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval

    Soft Tracking Using Contacts for Cluttered Objects to Perform Blind Object Retrieval 文章概括 摘要 1. 介绍 2 ...

  2. 《C++游戏开发》笔记十二 战争迷雾:初步实现

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:// ...

  3. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  4. ROS学习笔记十二:使用roswtf

    ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...

  5. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  6. 【Visual C++】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理

    相信大家都熟悉<仙剑奇侠传98柔情版>的人机交互方式,用的仅仅是键盘.在那个物质并不充裕的时代,一台配置并不高的电脑,一款名叫<仙剑奇侠传>的游戏,却能承载一代人对梦想的追逐. ...

  7. 论文笔记 Federated Optimization in Heterogeneous Networks

    论文题目:<Federated Optimization in Heterogeneous Networks> 论文地址:https://arxiv.org/pdf/1812.06127. ...

  8. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

  9. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

最新文章

  1. BTC.com率先发起使用开放联盟网关协议OFGP,联合iBitcome钱包携手送糖果
  2. torch.log函数
  3. 利用OpenCV的函数createTrackbar创建滑动条查看二值化的最优阈值的源码及讲解
  4. SAPABAP性能优化技巧—使用二分查找(Binary Search)选项
  5. ActiveMQ相关概念
  6. php 新浪面试题,新浪网技术部笔试题
  7. linux 挂载多余空间,linux 空间不够,磁盘挂载
  8. 数据结构实验之栈四:括号匹配
  9. java枚举类中字段有没有必要加final____枚举类字段 Field ‘xxx‘ may be ‘final‘
  10. 天下无贼中经典的句子
  11. SpringBoot注册组件之@Import@ImportResource@ComponentScan
  12. linq to sql的多条件动态查询(上)
  13. .NET资源站点汇总
  14. 超分辨 :SRCNN
  15. centos 解压压缩包到指定目录
  16. python中pd是什么意思_python pd
  17. 为CentOS 6、7升级gcc至4.8、4.9、5.2、6.3、7.3等高版本
  18. 北斗时钟服务器(GPS卫星同步时钟)应用电子政务系统
  19. CBoard BI 数据可视化 支持国产开源
  20. cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech

热门文章

  1. Flink中TaskManager、Slot和Parallelism
  2. SSL证书 DV,OV,EV的区别
  3. 有哪些考研人相见恨晚的好用APP?985上岸老师兄的分享
  4. [转]李平:大型网站的灵魂——性能
  5. 2022—SWJTU-寒假ACM校队选拔赛第二场-题解
  6. opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速(vs2015异常解决)
  7. 6小时精通springcloud第09讲:微服务安全认证
  8. 个推的appid是指什么_集成指南
  9. 【真人手势动画制作软件】万彩手影大师教程 | 添加动作动画
  10. 【EC200U】GPS定位应用案例