自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(259)
  • 收藏
  • 关注

原创 ubuntu20.04安装QGIS

将最新稳定版 QGIS (3.36.x Maidenhead) 的 QGIS 存储库添加到。Note:这种方法安装的是最新版本,可能会有一些兼容问题。我这里是卸载了重新安装,,删不干净,最后手动 搜索并收删除相关文件。,删不干净,最后手动 搜索并收删除相关文件。:这种方法安装的是最新版本,可能会有一些兼容问题。我这里是卸载了重新安装,

2024-03-27 17:14:49 1175

原创 pl_vio线特征·part II

现在CSDN有字数限制了,被迫拆分为两篇文章。图2 空间直线投影到像素平面要想知道线特征的观测模型,我们需要知道线特征从归一化平面到像素平面的投影内参矩阵 K\cal{K}K 。如图2,点 CCC 和 DDD 是直线 L=(n⊤,d⊤)⊤\mathcal{L} =(\mathbf{n}^{\top},\mathbf{d}^{\top})^{\top}L=(n⊤,d⊤)⊤ 上两点,点 ccc 和 ddd 是它们在像素平面上的投影。 c=KCc = KCc=KC,d=KDd=KDd=KD ,KKK是相机的内参

2023-12-17 14:04:37 537

原创 pl_vio线特征·part I

然而, 使用由法线向量和方向向量表示的 3D 线, 可以简单地从两个几何视图执行三角测量, 并且也可以方便地对线几何变换进行建模。此外,正交表示和普吕克坐标可以相互转换,这意味着我们可以在 SLAM 系统中出于不同的目的同时采用它们。的定义, 这四个 DoF 包括来自旋转矩阵 (将线坐标变换到相机坐标系) 的 3 个 DoF, 以及来自距离。是由直线和坐标原点确定的平面法向量。当在两个不同的摄像机视图中观察到新的线地标时,可以轻松计算出普吕克坐标。匹配的结果,对应关系,其实就是存储的全局ID信息。

2023-12-16 19:34:37 975

原创 最小二乘问题和非线性优化

在进行最小二乘问题中,我们会遇到一些异常观测值使得观测残差特别大,如果不对这些异常点做处理会影响在优化过程中,优化器会尝试最小化异常的残差项,最后影响状态估计的精度,鲁棒核函数就是用来降低这些异常观测值造成的影响。可得,当我们使用了鲁棒核函数之后,只需要将各项残差的核函数的一阶二阶导数值计算出,再按照以上形式对信息矩阵和信息向量进行更新即可。通过这种方式,我们同样将其近似一个二次函数,并且和我们之前展开的结果比较,不难发现在这里我们实际上是用。因此,合理的设置阻尼因子,能够达到动态对迭代速度进行调节。

2023-08-07 14:38:57 791

转载 加速Nerf训练:nerfacc

官方文档paper-v1paper-v2搬运自此处ray matching在Nerf的训练中,我们往往需要首先定义一个rays_o(射线的origin)以及rays_d(射线的方向),然后通过取不同的t值(预定义或者其他方式),获取这条射线上的不同的点:然而,在实际情况中,这条射线上的很多点所代表的空间可能是empty的,其对应的density为0,这些点对这条射线的rendering完全没有任何作用。假设我们在训练的时候可以跳过这些空的区域,我们就可以减少每条线上所采样的点,理论上进而加速训练。为了

2023-07-12 14:56:11 849

转载 Pytorch-Lightning-Learning

LightningModule:Pytorch Lightning的两大API之一,是torch.nn.Module的高级封装。(1)定义模型__init__():同torch.nn.Module中的__init__,用于构建模型。:同torch.nn.Module中的forward,通过__init__中的各个模块实现前向传播。(2)训练模型#训练模型 training_step(* args , ** kwargs) """训练一批数据并反向传播。

2023-07-07 21:32:31 466

原创 Marching Cubes算法

简单看一下图应该就明白了。

2023-07-06 14:58:25 239

原创 C++回调函数理解

看了一些介绍感觉太官方了,我的简单理解就是从模式设计思想出发,回调函数的目的就是为了将变化的模块抽离出来,延迟实现;这里还有一种方法可以避免这样的问题,可以把非static的回调函数 包装为另一个static函数,这种方式也是一种应用比较广的方法。但这种实现有一个很明显的缺点:static 函数不能访问非static 成员变量或函数,会严重限制回调函数可以实现的功能。简而言之,std::funtion是定义函数类型(输入、输出),std::bind是绑定特定的函数(具体的要调用的函数)。

2023-05-27 00:01:39 984

原创 vscode使用插件remote-ssh远程连接服务器

生成密钥对,是为了免密登录?我直接使用的git配置的时候的密钥对。用上了公司百万级的服务器 😆 😆 😆 😆。安装插件进行连接就行,

2023-05-17 14:46:37 3518

原创 ch07-Pytorch的训练技巧

所谓的模型微调,其实就是模型的迁移学习,在深度学习中,通过不断的迭代,更新卷基层中的权值,这里的权值可以称之为 knowledge , 然后我们可以将这些 knowledge 进行迁移,主要目的是将这些 knowledge 运用到新的模型中,这样既可以减小由于数据量不足导致的过拟合现象,同时又能加快模型的训练速度。GPU 每接收到一个 batch 的数据,使用率就跳到逐渐升高,处理完这个 batch 的数据后,使用率又逐渐降低,等到 CPU 把下一个 batch 的数据传过来。

2023-05-12 22:29:24 319

原创 ch06-Pytorch的正则化与归一化

在训练时,由于 dropout 为 0.5,因此理论上输出值是 5000,而由于在训练时,dropout 层会把权值除以 1-p=0.5,也就是乘以 2,因此在 train 模式的输出是 10000 附近的数(上下随机浮动是由于概率的不确定性引起的)。下面实验使用的依然是线性回归的例子,两个网络均是 3 层的全连接层,每层前面都设置 dropout,一个网络的 dropout 设置为 0,另一个网络的 dropout 设置为 0.5,并使用 TensorBoard 可视化每层权值的变化情况。

2023-05-11 21:25:38 596

转载 OpenCV 相机转换为 OpenGL 相机

本文假设您已经熟悉针孔相机的概念,这是OpenCV库中典型相机的相机校准模型。关于相机模型和投影几何的更多细节,最好的解释来自Richard Hartley和Andrew Zisserman的书《Multiple View Geometry in Computer Vision》,特别是第6章“相机模型”(这是我的极其偏见的看法)。我在本教程的其余部分将缩写该书为“H-Z书”。使用OpenGL函数调用(例如glFrustrum()和glOrtho())可以设置许多相机参数。

2023-05-05 14:59:03 860

原创 kitti数据集预处理

加速度和角速率均使用两个坐标系指定,一个附加到车身 (x, y, z),另一个映射到该位置的地球表面的切平面 (f, l, u) .我们有时会遇到与 OXTS 设备的短暂(约 1 秒)通信中断,为此我们对所有值进行线性插值并将最后 3 个条目设置为“-1”以指示丢失的信息。我们定义了“汽车”、“货车”、“卡车”、“行人”、“人(坐着的)”、“骑自行车的人”、“电车”和“杂项”(例如,拖车、赛格威)的类。在完成光流数据的加载和解析后,函数将根据需要调整光流数据的尺寸,以确保其与其他数据具有相同的尺寸。

2023-04-26 21:53:17 2129

原创 ch05-学习率调整策略、可视化与Hook

1、有序调整:Step、MultiStep、Exponential 和CosineAnnealing学习率更新之前,就知道学习率在什么时候会调整、调整为多少;2、自适应调整:ReduceLROnPleateau监控某一个参数,当该参数不再上升或下降就进行学习率调整。3、自定义调整:lambda存在多个参数组,且需要对多个参数组设置不同的学习率调整策略可采用。要调整学习率,至少应当具有初始学习率,那么该如何设置初始学习率?

2023-04-17 12:36:40 355

原创 ch04-损失优化

ch04-损失优化0.引言1.权值初始化1.1. 梯度消失与爆炸1.2. Xavier 初始化1.3. Kaiming 初始化1.4. 常用的权值始化方法1.5. 总结2.损失函数 (一)2.1. 损失函数的概念2.2. 交叉熵损失函数2.3. NLL/BCE/BCEWithLogits Loss2.4. 总结3.损失函数 (二)3.1. PyTorch 中的损失函数3.2. 总结4.优化器(一)4.1. 什么是优化器4.2. Optimizer 的属性4.3. Optimizer 的方法4.4. 总结5.

2023-04-14 00:29:03 423

原创 ch03-PyTorch模型搭建

本节中,我们学习了 nn.Module 的概念以及模型创建的两个要素。下节中,我们将学习容器 Containers 以及 AlexNet 的搭建。本节中,我们学习了 3 种不同的模型容器:Sequential、ModuleList、ModuleDict,以及 AlexNet 的搭建。下节课中,我们将学习 nn 中网络层的具体使用。本节课中,我们学习了 nn 模块中卷积层。在下次课程中,我们将学习 nn 模块中的其他常用网络层。本节中,我们学习了 nn 模块中池化层、线性层和激活函数层。

2023-04-12 00:31:53 840

原创 ch02-PyTorch数据预处理

本节课中,我们学习了数据预处理模块 transforms 中的数据增强方法:裁剪、翻转和旋转。在下次课程中 ,我们将会学习 transforms 中的其他数据增强方法。transforms 图像变换、方法操作及自定义方法上节中,我们学习了 transforms 中的裁剪、旋转和翻转,本节我们将继续学习 transforms 中的其他数据增强方法。尽管 PyTorch 提供了许多 transforms 方法,然而在实际应用中,可能还需要根据项目需求来自定义一些 transforms 方法。

2023-04-11 01:03:34 831

原创 python文件操作

上述代码中,os.walk() 遍历了 path/to/directory 目录以及其所有子目录,并分别处理了当前目录下的文件和子目录,使用 os.path.join() 拼接当前路径和文件名/子目录名。注意,os.listdir()函数只会列出指定目录下的直接子级文件和目录,并不会递归列出子目录下的文件和目录。如果需要列出指定目录下的所有文件和子目录,可以使用os.walk()函数。os.listdir()函数可以列出指定路径下的所有文件和子目录,返回一个包含所有文件和目录名称的列表。

2023-04-10 21:31:44 443

原创 vscode 调试 Python 代码

【代码】vscode 调试 Python 代码。

2023-04-06 11:56:45 728 5

原创 ch01-PyTorch基础概念

略.参考1参考2Variable:主要用于封装Tensor,进行自动求导,是torch.autograd中的数据类型。Variable是Pytorch的0.4.0版本之前的一个重要的数据结构,但是从0.4.0开始,它已经并入了Tensor中了。data:被封装的Tensorgrad:data的梯度grad_fn:创建Tensor的Function,是自动求导的关键requires_grad:指示是否需要梯度is_leaf:指示是否是叶子。

2023-04-02 21:03:14 295

转载 新视角合成 (Novel View Synthesis)

辅助理解Nerf摘抄自这里,抄一遍读一遍吧。这个讲的是真浅显易懂。新视角合成任务 (Novel View Synthesis) 指的是给定源图像 (Source Image) 及源姿态 (Source Pose),以及目标姿态 (Target Pose),渲染生成目标姿态对应的的图片 (Target Image)。新视角合成在 3D 重建、AR/VR 等领域有着广泛的应用。源图像 (Source Image) 好理解,但是源姿态 (Source Pose)指的是什么呢?答案是从相机坐标转换为世界坐标的变换矩

2023-03-29 16:47:10 1650

原创 位置编码Positional Encoding

摘抄自这里。在以前的模型中,NLP的每个Sequence都是一个token一个token的输入到模型当中。比如有一句话是“我喜欢吃洋葱”,那么输入模型的顺序就是“我”,“喜”,“欢“,”吃“,”洋“,”葱”,一个字一个字的。上面的输入方式其实就引入了一个问题。一个模型每次只吃了一个字,那么模型只能学习到前后两个字的信息,无法知道整句话讲了什么。为了解决这个问题,Transformer模型引用了Self-attention来解决这个问题。

2023-03-23 11:42:02 4118 7

原创 PyTorch加载自己的数据集

创建一个类,继承自torch.utils.data.Dataset,并重写__len__()和__init__用于向类中传入外部参数,同时定义样本集__len__()方法应该返回数据集的大小方法应该返回一个样本这里另外给出一个例子,其中图片存放在一个文件夹,另外有一个csv文件给出了图片名称对应的标签。Args:Args:Returns:其中:batch_size:样本是按“批”读入的,batch_size就是每次读入的样本数。

2023-03-23 10:47:17 2848 1

原创 nuScenes Map Expansion Tutorial

本地配置还是比较麻烦,使用官方的教程进行学习,官方的教程是基于colab的。其实我更好奇他是如何将数据转换为json文件的?

2023-03-13 11:38:38 1247

原创 opencv裁剪旋转矩阵区域

仿射变换方法需要预先对整张图进行旋转,通过观察旋转后的图像可以发现,有一部分图像被旋转出了图像边界,如果你要抠取的目标正好在图像边缘附近,那么很容易出界导致图像抠取的缺失。同时需要对宽、高和角度做出动态的调整;透视变换的方法直接对抠取区域进行了映射,这种方法可以省略旋转的步骤,并且不会出现抠取内容的缺失。同时只需要对4个顶点之间的映射关系做好定义即可,不需要考虑角度的问题。相对的,透视变换相对于仿射变换计算量更大一些,不过这在c++的底层实现上带来的时延差距小于ms。

2023-03-10 11:13:46 374

原创 opencv的并行处理cv::ParallelLoopBody

因此,cv::ParallelLoopBody 的作用就是实现并行处理算法,以提高图像或视频处理的速度。cv::Range 表示要处理的数据范围,这里是 cv::Range(0, image.rows),表示从第 0 行到最后一行,这是对整个图像进行处理。函数接受两个参数:一个 cv::Range 对象和一个 cv::ParallelLoopBody 对象。类的自定义类,它的 operator() 函数将在多个线程上并行执行。函数,从而实现图像的并行处理。类的实例,也就是继承了。

2023-02-28 11:26:02 867 4

原创 PyTorch深度学习

‒ 原視頻:https://www.bilibili.com/video/BV1Gi4y1m77E/?‒ 自定义一个 **Dataset 类,它是继承自 pytorch的Dataset这个类,这个类主要实现两个功能:一个是根据样本编号index来获取样本特征,如身高体重,以及获取它的类别;epoch 和 batch的关系就好比我们背一本英语单词,有1000个单词,分10个单元,每个单词相当于一个训练样本,把整本书背一遍称为一个epoch,一个单元的单词称为一个batch即是一个批次。

2023-02-07 21:54:46 2347 5

原创 Word里MathType无法使用为灰色

在安装完成后,单独打开MathType,点击:help–>unlock。然后重启Word,刺激不?

2023-01-05 21:13:56 1732 3

原创 pytorch学习记录

用户需要先构建神经网络结构,然后在给定的结构上填入数据,再进行一次又一次的运行。但缺点也非常明显,即不够灵活,而且被优化后的网络,对用户不友好,调试时难以轻松知道程序的状态, 而且一旦用户想要根据计算的状态,动态的修改神经网络结构,那么实现起来会非常困难。它直观, 精简, 极度灵活。PyTorch这一工具的定位: 帮助科研人员和工程师, 快速探索和调整模型, 快速构建实验,更适合从0到1的创新工作, 而静态图Tensorflow,更适合已经有了模型, 我们要运用到某些高强度的训练和测试的应用环境下。

2023-01-04 16:36:51 369 1

原创 CNN神经网络

基础的就不赘述了。主要看推导。[convolution layer + Relu] --> pooling layer --> [convolution layer + Relu] --> pooling layer --> Fully Connected --> …微积分中卷积的表达式为:S(t)=∫x(t−a)w(a)daS(t)=\int x(t-a) w(a) d aS(t)=∫x(t−a)w(a)da离散形式是:s(t)=∑ax(t−a)w(a)s(t)=\sum_a x(t-a) w

2022-12-29 17:26:32 505 2

原创 深度学习环境搭建

打开IDE:settings -> project:*** -> Python Interpreter,add Python Interpreter -> conda environment -> existing environment,选择创建好的conda 虚拟环境。通过安装Anaconda来解决Jupyter Notebook的安装问题,因为Anaconda已经自动安装了Jupter Notebook及其他工具,还有python中超过180个科学包及其依赖项。

2022-12-23 17:25:55 784

原创 感知机&&BP神经网络

在第五步选择不同的误分类点,最后得出的模型也不相同,但都能正确的将样本进行区分开。:模型已经确定,参数未知;对模型的求解就是利用观测值来求解模型的参数。,请利用感知机算法求感知机模型。现有如下训练数据集,正样本点。

2022-12-22 18:29:33 294

原创 带参数的反射工厂模式

普通的反射工厂模式无法传入参数,工厂为单例模式。

2022-12-11 02:32:49 141

原创 工厂模式学习

在这个示例中,我们定义了一个抽象类 Product,表示产品的基类,它定义了一个抽象函数 use,用于表示产品的使用方法。在这个示例中,我们定义了一个基类 Base,并定义了两个子类 A 和 B,它们都实现了 print 方法。在这个示例中,我们使用了 C++ 中的反射机制,即在运行时通过类名来查找并调用相应的创建函数,从而实现了动态创建对象的功能。接下来,我们定义了一个工厂类 Factory,它提供了一个静态成员函数 createProduct,用于根据产品名称返回相应的产品对象。承接上一篇我的需求。

2022-12-10 02:36:22 174

原创 策略模式学习

最近想整理一下代码。我的想法是使用继承的方案,使用多态写一个interface,然后不同的方法来继承它。最近ChatGPT比较火,顺便问了一下它:它推荐的是策略模式,我也觉得很适合我的使用场景,因此在此处记录一下它的回答,并未整理,以作后续参考。这个问题的答案取决于您的具体要求。但是,如果您想要能够随时更改计算平均值的方法,那么您可以使用策略模式来设计您的代码。策略模式允许将算法封装到独立的类中,并通过组合来使用它们。这使您可以在运行时更改算法,而无需修改原始代码。例如,您可以在您的代码中定义一个名为 的

2022-12-08 12:41:59 464

原创 冬天跑步装备

如果你无法精确的保证跑步完10分钟可以进入温暖环境,请在训练场所准备个棉大衣,或者稍微多穿一些。运动后,人体的免疫系统会有一个“开窗期”,这个时候人体的免疫细胞的活性会降低,更容易受到细菌与病毒的侵袭,所以不注意保暖和防风就很容易感冒。另一方面,毕业后运动场所离得很远,也无法像学校那样穿个短裤跑完立马回寝室加衣服。由于腿上都是肌肉,不像上身有那么多内脏器官,耐寒的能力要强很多,所以不用特别讲究。有时卫衣外面再套一个棉马甲或者棉服,适合再冷一些穿着,就是一个保暖层不够,再加一个保暖层。对于我应该是不需要的。

2022-11-30 21:15:28 273

原创 Life-long Mapping

在长时间的建图过程中,基于图优化的 SLAM 的方法存在以下问题:PoseGraph 中的节点随着机器人走过的距离越来越多,以至于求解规模不断增大,影响优化效率。而 Lifelong Mapping 的基本思想是实现机器人在进行导航过程中进行建图,使得 PoseGraph 的规模不能随着运行轨迹的增长而增加,而是和建图面积相关联。实现 Lifelong Mapping 的思路是定期删除 PoseGraph 中冗余节点,在这过程中有两个问题需要考虑:SLAM 的目的是构建周边环境的地图。因此,选取冗余节点的时

2022-11-21 11:43:02 615

原创 高精地图_语义地图_众包地图相关论文笔记

2021作者:华为诺亚方舟实验室看华为的论文我似乎找到了他们写论文的固有格式:传感器:单目相机(提取语义特征) + IMU + 两个编码器 + GNSSIV.METHODOLOGYA. Semantic Features and DetectionB. Semantic Data Association with HD mapstep 1 在里程计先验位姿附近进行采样得到候选位姿(预测),并根据采样位姿将地图上的特征投影到图像上step 2 执行局部一致性的粗关联,找到近似最优的采样姿态,同时消除由于大的先

2022-11-21 11:13:49 1687 2

原创 泛函与变分法

变分法求解的是泛函极值问题,变分法将泛函求极值问题通过欧拉-拉格朗日方程(满足欧拉-拉格朗日方程是泛函具有极值的必要非充分条件)转换为微分方程的求解。

2022-11-16 18:05:44 640

原创 cartographer_FixedRatioSampler

比例采样器 cartographer::common::FixedRatioSampler 目的是按照固定的比例采样数据。所有的距离传感器都只有一个采样器,所以就算不同的传感器也会同等的按照比例来选择。所以这样看来,并不是按照固定速率采用数据。而是对数据进行了按比例选择使用。构造函数设置频率 ratio。

2022-10-19 10:37:01 233 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除