Delta

ORB-SLAM3论文解读

淺唱寂寞╮ 提交于 2020-08-16 06:10:47
ORB-SLAM3论文解读 ORB-SLAM3论文解读 主要的创新点 数据关联模型 系统整体 Atlas地图集 跟踪线程 局部建图线程 回环和地图合并线程 相机模型 相机模型带来的重定位问题 相机模型带来的双目问题 视觉惯性SLAM部分 IMU初始化 纯视觉最大后验估计 纯惯性最大后验估计 视觉惯性联合最大后验估计 跟踪和建图 地图合并和回环检测 场景识别 纯视觉地图合并 地图缝合 地图优化 视觉惯性地图合并 实验和结论 ORB-SLAM3论文解读 ORB-SLAM1和2的作者Juan已经毕业了,其工作仍然由同一课题组的Carlos继续完成并撰写论文和代码,这次论文同样对应着开源代码,youtube演示效果惊人,很多场景下无需大量修改即可直接使用,可谓是工作党的KPI,学生党的SCI。 废话少说,直入主题。ORB-SLAM3与前两次作品相比,引入和视觉惯性和多地图模式的SLAM。其算法支持的传感器也有单目、双目、RGBD相机等。在相机的成像模型中 ,采用了针孔、鱼眼相机模型(见摘要的第一段)。 代码传送门:链接: https://github.com/UZ-SLAMLab/ORB_SLAM3 . 论文传送门:链接: https://arxiv.org/pdf/2007.11898.pdf . 主要的创新点 大佬的自吹自擂部分中也提到,他们的主要创新点有两点: “完全

1分钟教你完美解决地图开发中WebGL着色器32位浮点数精度损失问题

放肆的年华 提交于 2020-08-15 15:53:39
以下内容转载自木的树的文章《WebGL着色器32位浮点数精度损失问题》 作者:木的树 链接: https://www.cnblogs.com/dojo-lzz/p/11250327.html 来源:博客园 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 前言 Javascript API GL 是基于WebGL技术打造的3D版地图API,3D化的视野更为自由,交互更加流畅。 提供丰富的功能接口,包括点、线、面绘制,自定义图层、个性化样式及绘图、测距工具等,使开发者更加容易的实现产品构思。 充分发挥GPU的并行计算能力,同时结合WebWorker多线程技术,大幅度提升了大数据量的渲染性能。最高支持百万级点、线、面绘制,同时可以保持高帧率运行。 同步推出基于Javascript API GL的 位置数据可视化API库 ,欢迎体验。 问题 WebGL浮点数精度最大的问题是就是因为js是64位精度的,js往着色器里面穿的时候只能是32位浮点数,有效数是8位,精度丢失比较严重。 分析 在基础底图中,所有的要素拿到的都是瓦片里面的相对坐标,坐标范围在0-256之间。在每次渲染时都会重新实时计算瓦片相对中心点的一个偏移来计算瓦片自己的矩阵,这种情况下精度损失比较小,而且每个zoom级别都会加载新的瓦片,不会出现精度损失过大问题。 但是对于一些覆盖物,比如marker

XGBoost 重要参数(调参使用)

醉酒当歌 提交于 2020-08-15 04:51:26
XGBoost 重要参数(调参使用) 数据比赛Kaggle,天池中最常见的就是XGBoost和LightGBM。 模型是在数据比赛中尤为重要的,但是实际上,在比赛的过程中,大部分朋友在模型上花的时间却是相对较少的,大家都倾向于将宝贵的时间留在特征提取与模型融合这些方面。在实战中,我们会先做一个baseline的demo,尽可能快尽可能多的挖掘出模型的潜力,以便后期将精力花在特征和模型融合上。这里就需要一些调参功底。 本文从这两种模型的一共百余参数中选取重要的十余个进行探讨研究。并给大家展示快速轻量级的调参方式。当然,有更高一步要求的朋友,还是得戳 LightGBM 和 XGBoost 这两个官方文档链接。 XGBoost 的重要参数 XGBoost的参数一共分为三类: 通用参数 :宏观函数控制。 Booster参数 :控制每一步的booster(tree/regression)。booster参数一般可以调控模型的效果和计算代价。我们所说的调参,很这是大程度上都是在调整booster参数。 学习目标参数 :控制训练目标的表现。我们对于问题的划分主要体现在学习目标参数上。比如我们要做分类还是回归,做二分类还是多分类,这都是目标参数所提供的。 完整参数请戳官方文档 通用参数 booster :我们有两种参数选择, gbtree 和 gblinear

java.lang.String 的 + 号操作到底做了什么?

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-15 04:45:28
作者:丶Pz https://www.cnblogs.com/panzi/p/11956782.html 在之前的面试经历中,对于 String 的考察还是挺频繁的,大致考察以下几个知识点: String 常量池 new String() == 和 equals 的区别 native 方法 String.intern() 虽然面试中大体答对了,但是今天早上微信群里的一个问题我却答不上来,这个问题是这样的: String str3 = "what"; String str4 = str3 + " a nice day"; //运行时, + 相当于 new,所以堆中会有 "what a nice day"对象,常量池中会有"what"," a nice day"两个对象,而不会有 "what a nice day"对象。 //这句话大佬们看看对不对啊,我怎么感觉不对啊 //常量池不会有"what a nice day" 对象吗? 看完这个问题,说实话我也是有点懵的,我只是知道 "what a nice day"不会在常量池,但是不知道具体的原因,后来群里的同学说 + 号是调用了 StringBuffer 的append 方法。 我去证实了,发现确实调用了 append 方法,但是当时没有 调用toString()方法,我很疑惑。(最后经过证实,是 StringBuilder

梯度提升树(GBDT)原理小结

大憨熊 提交于 2020-08-15 03:54:11
    在 集成学习之Adaboost算法原理小结 中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法,本文统一简称GBDT。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。 1. GBDT概述     GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。     在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$f_{t-1}(x)$, 损失函数是$L(y, f_{t-1

RedisTemplate常用集合使用说明-opsForHash(四)

被刻印的时光 ゝ 提交于 2020-08-14 12:06:47
1、 put ( H key, HK hashKey, HV value) 新增hashMap值。 redisTemplate.opsForHash().put( "hashValue" , "map1" , "map1-1" ); redisTemplate.opsForHash().put( "hashValue" , "map2" , "map2-2" ); 2、 values ( H key) 获取指定变量中的hashMap值。 List<Object> hashList = redisTemplate.opsForHash().values( "hashValue" ); System.out.println( "通过values(H key)方法获取变量中的hashMap值:" + hashList); 3、 entries ( H key) 获取变量中的键值对。 Map<Object,Object> map = redisTemplate.opsForHash().entries( "hashValue" ); System.out.println( "通过entries(H key)方法获取变量中的键值对:" + map); 4、 get ( H key, Object hashKey) 获取变量中的指定map键是否有值,如果存在该map键则获取值

Circle Loss:从统一的相似性对的优化角度进行深度特征学习 | CVPR 2020 Oral

别等时光非礼了梦想. 提交于 2020-08-14 08:47:56
> 论文提出了Circle loss,不仅能够对类内优化和类间优化进行单独地处理,还能根据不同的相似度值调整对应的梯度。总体而言,Circle loss更灵活,而且优化目标更明确,在多个实验上都有较好的表现,个人认为是一个很好的工作   来源:晓飞的算法工程笔记 公众号 论文: Circle Loss: A Unified Perspective of Pair Similarity Optimization 论文地址: https://arxiv.org/abs/2002.10857 Introduction   论文认为两类基础的深度特征学习方法classification learning(比如softmax)和pair-wise learning(比如triplet loss)均是为了最小化类内相似度$s_n$和类间相似度$s_p$,理想是$(s_n=0, s_p = 1)$。而大部分常用的损失函数都是将$s_n$和$s_p$embed成相似度对,然后用各自研究的策略最小化$(s_n-s_p)$的值。这种策略提升$s_p$等同于下降$s_n$,但其实这种对称的优化方法很容易存在以下问题: 缺乏优化的灵活性。由于基于损失函数同时优化$s_n$和$s_p$,导致$s_n$和$s_p$的梯度的幅值是一样的。当$s_n$和$s_p$均很小时,依然会使用较大的梯度惩罚$s_n$

TL2837x-EasyEVM开发板 拓展IO信号、底板连接器

醉酒当歌 提交于 2020-08-14 07:02:08
前言 TL2837x-EasyEVM是一款基于广州创龙SOM-TL2837x核心板所设计的高端单/双核浮点开发板,它为用户提供了SOM-TL2837x核心板的测试平台,用于快速评估SOM-TL2837x核心板的整体性能。 TL2837x-EasyEVM正面图 拓展IO信号 J6引出了ePWM、GPIO拓展信号,J7引出了eQEP、McBSP、GPIO拓展信号,J8引出uPP、GPIO拓展信号,J9引出了Sigma-Delta、SPI、I2C、SCI、GPIO拓展信号,其引脚定义如下: 图 23 扩展接口J6 图 24 图 25 扩展接口J7 图 26 图 27扩展接口J8 图 28 图 29扩展接口J9 图 30 底板 连接器 开发板使用底板+核心板设计模式,核心板通过2 x 60pin公头B2B,2 x 60pin母头B2B,间距0.5mm,合高4.0mm,共240pin,与底板对应的B2B连接,以下为底板B2B的引脚定义: 图 31 图 32 图 33 图 34 图 35 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/4442343

基于RANSAC的图像全景拼接

天大地大妈咪最大 提交于 2020-08-14 04:48:07
基于RANSAC的图像全景拼接 RANSAC算法 RANSAC是一种迭代算法,用来从观测数据中估算出数学模型的参数,此基础上便可以分离内群与离群数据。简单来说就是一般来讲观测的数据里经常会出现很多噪音,比如说像SIFT匹配有时就会因为不同地方有类似的图案导致匹配错误。而RANSAC就是通过反复取样,也就是从整个观测数据中随机抽一些数据估算模型参数之后看和所有数据误差有多大,然后取误差最小视为最好以及分离内群与离群数据。 全景拼接原理介绍 针对某个场景拍摄多张/序列图像 通过匹配特征(sift匹配)计算下一张图像与上一张图像之间的变换结构。 图像映射,将下一张图像叠加到上一张图像的坐标系中 变换后的融合/合成 重复上述步骤 全景图像拼接最重要的两个步骤就是: 特征点匹配 这部分主要采用SIFT算法实现,之前的博客有介绍就不再详细介绍了,主要是为了找到两幅图像相同的特征点并将其进行匹配。 图片匹配 图片匹配就是找到图像之间所有重叠的部分,将其拼接后就能得到一幅全景图。 图像配准 图像配准是对图像进行变换,使变换后的图像能够在很好的拼接在上一张图片的坐标系。为了能够进行图像对比和更精细的图像分析,图像配准是一步非常重要的操作因为图片存在歪斜或两张图片的平面与平面之间景深不同(近大远小),直接将两张图片进行映射变换会导致图片中部分物体有重影现象(鬼影)。为了尽量减小这种情况

最大熵模型原理小结

末鹿安然 提交于 2020-08-14 02:44:12
   最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理做一个小结。 1. 熵和条件熵的回顾     在 决策树算法原理(上) 一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾。     熵度量了事物的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵的表达式如下: $$H(X) = -\sum\limits_{i=1}^{n}p_i logp_i$$     其中n代表X的n种不同的离散取值。而$p_i$代表了X取值为i的概率,log为以2或者e为底的对数。     熟悉了一个变量X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量X和Y的联合熵表达式: $$H(X,Y) = -\sum\limits_{x_i \in X}\sum\limits_{y_i \in Y}p(x_i,y_i)logp(x_i,y_i)$$     有了联合熵,又可以得到条件熵的表达式H(Y|X),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性