自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NeRF学习——复现训练中的问题记录

1.1 DataLoader 的多进程 pickle在刚开始执行时就遇到了这个错误,开始以为是环境问题,结果鼓捣半天没用,仔细分析了一下错误原因,发现主要是这句话的原因for iteration, batch in enumerate(data_loader):1也就是序列化的问题,后面还给出了多进程的报错,就应该是多进程的pickle问题,网上一搜,还真是,可能是Windows系统的原因导致的,在 configs 中的配置文件中修改 num_workers = 0,不使用多进程,就解决了报错

2024-08-03 10:54:46 1191

原创 NeRF学习——基于Pytorch代码复现的笔记

NeRF学习——基于Pytorch代码复现的笔记代码复现的框架是基于:pengsida 的 [Learning NeRF]源代码框架是基于 Linux 的,我在 Windows 上进行复现有些许 bug,Windows 上 bug 修复的框架版本:Learning NeRF希望各位可以通过学习 [NeRF-Pytorch] 来自己复现试试看!

2024-08-03 10:21:25 702

原创 Windows家庭版 WSL2非C盘详细安装配置与WSL代理设置+WSL基础环境CUDA安装

此命令将启用运行 WSL 和安装 Linux 的 Ubuntu 发行版(在C盘)所需的功能。但是,C盘空间太紧张,我更愿意把其安装在其他盘(D盘)注意:需要在windows功能中开启“Hyper-V”和“适用于Linux的Windows子系统”功能。功能开启后,管理员运行 PowerShell ,直接运行下面命令即可(默认WSL2),然后重启。Linux 生成的所有文件都默认存储在之前自定义的路径下的这个镜像文件中。WSL2 显卡驱动直接用的 windows 的,只需要安装CUDA Toolkit就可。

2024-06-04 19:38:07 1185 5

原创 详细解析Barlow Twins:自监督学习中的创新方法

首先先简单了解一下机器学习中,主要有三种学习范式:监督学习、无监督学习和自监督学习:- **监督学习**:依赖带标签的数据,通过输入输出映射关系进行训练。- **无监督学习**:不依赖标签,关注数据的内在结构和模式。- **自监督学习**:利用数据本身生成标签,通过预训练任务学习有效的特征表示。## Barlow TwinsBarlow Twins是一种基于信息论的**自监督学习方法**,其目标是减少神经元之间的冗余。该方法要求神经元对数据增强具有不变性,但彼此独立。

2024-05-30 21:43:43 860

原创 Recognition:基于HoG特征的最近邻分类器与SVM的人物检测器

使用经典图像处理的方法开发简单人物检测器,其大致步骤如下:获取正样本训练数据,即包含人的图像块。获取负样本训练数据,即不包含(完整)人的图像块。提取方向梯度直方图(HoG)特征,以获取比原始像素值更稳健的图像描述符。使用这些训练数据训练我们选择的分类器。使用一个简单的最近邻搜索或支持向量机。使用滑动窗口方法从我们的验证图像中提取图像块和HoG特征,并在每个图像块上评估分类器,以便在验证图像中检测出人。

2024-05-24 10:40:44 1022

原创 隐式3D形状表示:Occupancy Networks

OccNet 的关键思想是,而不是显式地表示。与直接编码形状几何信息不同,OccNet 将形状的表面建模为非线性分类器的。:Occupancy Networks 将 3D 形状表示为非线性分类器函数的决策边界fθ​R3×X→01这里,X​ 表示输入空间(例如,体素网格或点云),函数在给定点的输出表示该点的是否占用(,下图中即红色在内部,蓝色在外部)

2024-05-08 15:43:44 787

原创 光度立体法估计法线与反射率重建场景

这个问题假设光照条件已知,目标表面是光滑且均匀的,并且照明是单向的。在相同的相机视点下,采集 K 张图像,每张图像使用不同的已知点光源。这些光源的位置和方向应该是已知的,并且在不同的图像中有所变化。因此,在梯度空间表示法中,我们可以通过结合反射率图和其他几何信息来有效地参数化法线,并利用这些信息来推断物体表面的形状和材质。通过如下的反射率图可以看到,对于每个像素,我们必须要有3个反射率图才能确定一个真正的法线,所以,我们。其接受灯光位置、像素法线、反射率和掩码作为输入,并返回重新照亮后的图像。

2024-04-26 21:47:55 1232

原创 马尔可夫随机场MRF与置信度传播BP(附例子讲解)

马尔可夫随机场(Markov Random Field,MRF),是概率无向图模型的一种,用于描述变量之间的关系,其中变量之间的连接是无向的。团块是图中结点的子集,其中子集中的节点两两之间都直接连接,而最大团块则是不能再添加其他节点而保持两两连接的最大子集。消息传递的核心是通过计算变量之间的乘积来更新消息,并选择这个乘积中的最大值作为传递的消息,从而。输出MAP估计值,即对每个变量边缘概率最大的所对应的状态(每个时刻最可能的车道),用于存储每一个变量的MAP(即对于每一个时刻,最可能选择的车道)

2024-03-30 16:36:18 1004

原创 SAD法(附python实现)和Siamese神经网络计算图像的视差图

原理:是在给定窗口大小的情况下,对左图像和右图像的对应窗口进行比较,计算它们之间的绝对差的总和,从而确定最佳匹配的视差。利用图像卷积的思想,通过对每个候选视差值计算绝对差图像,并将其与一个均值滤波器进行卷积操作来实现视差图的计算。视差图:以左视图视差图为例,在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标。局部窗口匹配:块匹配方法通常只考虑局部窗口内的像素信息进行匹配,而对于同质区域,局部窗口内的。计算左图像窗口和右图像匹配窗口的绝对差的总和,即SAD值。

2024-03-30 16:34:57 1412 1

原创 NeRF学习——NeRF-Pytorch的源码解读

学习 github 上 NeRF 的 pytorch 实现项目(https://github.com/yenchenlin/nerf-pytorch)的一些笔记

2024-03-16 21:45:46 1761

原创 CMake+vcpkg+VS2022配置github上的cmake开源项目外部库

我们以采用 GitHub 上的开源库 [cuda-bundle-adjustment](https://github.com/fixstars/cuda-bundle-adjustment) 为例,其不能直接用vcpkg进行安装,只能通过cmake编译后链接到VS2022。将 cuda-bundle-adjustment 库通过 CMake 编译链接到 Visual Studio 2022 步骤操作:1. 克隆存储库:使用 git 命令克隆 cuda-bundle-adjustment

2024-03-15 21:52:26 845

原创 SfM——八点法计算F矩阵(基础矩阵)与三角测量

**基础矩阵**用于描述两个视图之间的几何关系1. 基础矩阵:基础矩阵 $F$ 是描述两个视图之间相机投影关系的矩阵。对于两个对应的图像坐标点 $(x, y, 1)$ 和 $(u, v, 1)$​ 在两个视图上,基础矩阵满足以下方程:

2024-03-15 17:22:00 1567

原创 DLT算法求解单应性矩阵

单应性矩阵描述了两个图像之间的投影变换关系,即从一张图到另一张图的变换。

2024-03-13 15:31:55 1305

原创 NeRF学习——NeRF初步认识

这种表示方式与传统的使用体素、网格或点云的显式表示不同,NeRF将整个场景看作一个连续的函数,即Radiance Fields。在训练阶段,NeRF使用已知场景的图像和相机参数作为输入,通过最小化生成图像与真实图像之间的差异来优化神经网络的参数。的问题(稀疏的地方采样多了,稠密的地方采样少了),所以针对某些粒子浓稠区域(表示遇到实体了),信息量大,需要重点采样。体积渲染:应用体积渲染过程,使用从粗网络和精网络获得的样本渲染每个射线的颜色。这样一来,神经网络便可以在信息量大的区域获得更有效,更正确的信息。

2024-03-09 21:28:20 1083

原创 Three.js+pcl.js 实现Web端的点云处理+显示【附源码】

在前面我们实现了PCD的加载器的基础上,这次将加上 ==**pcl.js**== —— 著名的PCL库的web版本,详情见https://pcl.js.org/,来处理我们加载上去的点云。1. **点云过滤示例1:**统计离群值移除算法2. **点云关键点提取示例2:**应用 ISS(Intrinsic Shape Signatures) 算法进行关键点提取**最小切割示例3:**最小切割算法

2023-12-10 09:35:23 4441 1

原创 Three.js 实现简单的PCD加载器(可从本地读取pcd文件)【附源码】

- 初始会显示我们之前 SfM 做出的点云,包括相机位置- 可以点击右上角**加载你本地的PCD**文件- 可以通过选择**多个文件加载多个点云**并显示在同一场景中- 可以通过左上角的**控制界面**查看/调整点云的属性,如点大小、颜色等- 可以通过右上角的控制界面选择旋转 / **显示点云颜色**(只有有颜色数据的PCD点云在开启该选项后会显示原本的颜色,其他的会消失)- 窗口大小变化时,渲染器和相机会自动适应新的窗口尺寸

2023-11-10 17:19:48 1950 14

原创 递归下降语法分析 实验实现(电子科技大学编译技术Icoding实验)

1. 以"new"开头的函数(例如 `newWhileStmt`、`newIfStmt`、`newCompoundStmt`、`newBinaryOper`、`newParaDecl`、`newBreakStmt`、`newContinueStmt` 和 `newReturnStmt`)是用于创建新的AST节点的函数。这些函数用于构造AST的不同节点类型,并返回一个新的**AST节点**。这些函数通常接受一些参数,用于指定节点的属性和子节点。

2023-10-29 10:43:55 4181 13

原创 4 OpenCV实现多目三维重建(多张图片增量式生成稀疏点云)【附源码】

源码即上面给出的 Include.h,Constructor.h,Constructor.cpp,Image.h,Image.cpp,main.cpp增量加图前(两张初始图的构建):注意目前只是完成了基本流程,有很多地方都需要优化,比如SIFT的参数设置RANSAC的参数设置初始图片的选择(很重要)还可以增加其他优化措施来剔除离谱点最重要的BA还没有加入!目前,出来的效果不好,革命尚未成功,同志还需努力!😭😭😭。

2023-10-20 20:21:25 3038 4

原创 Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)

此为电子科技大学编译技术将具体实现中的三个文件和自己的实验报告上传才能通过根据词法分析实验中给定的文法,利用flex设计一词法分析器,该分析器从标准输入读入源代码后,输出单词的类别编号及附加信息。附加信息规定如下: 当类别为Y_IDnum_INT或num_FLOAT时,附加信息为该类别对应的属性,如main10029.3等;当类别为 关键字 时,附件信息为KEYWORD;当类别为 运算符 时,附件信息为OPERATOR;当类别为 其它符号时,附件信息为SYMBOL例如对于源代码。

2023-10-14 19:50:59 2927 5

原创 侯捷 C++ STL标准库和泛型编程【C++学习笔记】 超详细 万字笔记总结 笔记合集

STL —— Standard Template Library,标准模板库C++ Standard LIbrary,C++标准库中包含STL(即STL+一些小东西)STL六大部件:容器(Containers)、分配器(Allocators)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、适配器(Adapters)实例:判断条件 predicate 为: —— 表示 >= 40 数为真在模板参数的关键字使用中与 是一样的在类型前面加上 :在这个例子中, 用于告诉

2023-10-06 10:11:41 1305 1

原创 侯捷 C++ STL标准库和泛型编程 —— 9 STL周围

最后一篇,完结辽!😋。

2023-10-05 08:39:57 213

原创 侯捷 C++ STL标准库和泛型编程 —— 8 适配器

的键盘输入读进去了,之后就是一个一个取出来赋值给 value 的操作。原理依旧是大量的**操作符重载 **—— 就可以改变原函数的作用。注意:对逆向迭代器取值,就是取其所指正向迭代器的前一个位置。其思想就是将该记的东西记起来,以便日后使用。都是属于 deque 的 Adapter。占据第一参数,第二参数绑定2,即。用C++11的新语法定义一个实例。指的是被绑函数中的第一个参数。其实现原理核心就是 —— 对。变为一个输出工具,分隔符是。后是否有充裕空间,对。,就会有如下用 copy。

2023-10-04 08:39:49 231

原创 侯捷 C++ STL标准库和泛型编程 —— 6 算法 + 7 仿函数

STL规定每个 Adaptable Function(之后可以改造的函数)都应该继承其中一个(因为之后。防函数是我们自己可能会写的,所以自己写的时候,如果想要融入STL,就要继承上面的两个之一。==该值的元素(不包括目标值本身),并返回一个指向该位置的迭代器。==该值的元素(包括目标值本身),并返回一个指向该位置的迭代器。仿函数专门为算法服务,设计成一个函数/仿函数是为了能传入算法。这里可以用任意的二元操作(可以是函数,也可以是仿函数)一样是前闭后开的原则,且他们都用的是二分查找的方法。

2023-10-03 08:38:51 257

原创 侯捷 C++ STL标准库和泛型编程 —— 4 分配器 + 5 迭代器

其从0到15有一共16个链表,分别代表8字节到16*8字节,例如 #0 的位置用 malloc 要一大块内存,然后做切割,切成一块一块的8字节空间。:用于定义类型特征的信息,从而在编译时根据类型的不同进行不同的操作或处理 —— 类似一个萃取机(针对不同类型做不同操作:偏特化)在源码中,算法都是模板函数,接受所有的 iterator,但一些算法只能用特定的 iterator,所以其会在。,用单向链表穿起来;是指的有不重要的拷贝赋值函数(例如复数用的自带的拷贝赋值函数)迭代器的分类对算法的效率有很大的影响。

2023-10-01 08:43:32 236

原创 侯捷 C++ STL标准库和泛型编程 —— 3 容器(关联式容器)

不能用 iterator 去改变元素的key(其有严谨的排列规则),但可以用 iterator 去改变元素的 data。在扩充时,按 vector 扩充为2倍大小,但会选择靠进这个数的一个质数做新的大小。,key 为指定的 key,data 为默认 data,并返回这个默认 data。不能用 iterator 去改变元素的 key(其有严谨的排列规则)禁止用 iterator 去改变元素的值(其有严谨的排列规则)以 rb-tree 为底层结构,因此有——元素自动排序,将返回与该键关联的 data;

2023-09-30 11:26:10 159

原创 侯捷 C++ STL标准库和泛型编程 —— 3 容器(序列式容器)

两个位置之间的距离 = buffer_size * 两个位置之间 buffer 的数量 + 末尾位置到 buffer 前端的长度 + 起始位置到 buffer 末尾的长度。除了 array,vector 这样是连续存储的容器,其他容器的 iterator 都是智能指针,其有大量的。随机数据填充容器:3063ms;用时编译器可以通过的,但在具体使用函数时,若遇到底层容器没有这个函数时,就会报错。是容器自带的排序函数,如果容器自带肯定是要比全局的排序函数好的。的大小一致,每次扩充都是扩充一个指针指向一个新的。

2023-09-27 08:42:05 130

原创 3 OpenCV两张图片实现稀疏点云的生成

在 PLY 文件的头部信息中,指定了点的数量以及点的属性,包括点的坐标和颜色通道(蓝色、绿色、红色)然后,你循环遍历点云数据,将点的坐标和颜色信息写入PLY文件。对于每对匹配的特征点,可以使用三角法来计算它们的三维坐标;手动输出点云 PLY 文件,并包括了 PLY 文件的头部信息以及点云数据的写入;使用了内点(inliers)的坐标从图像中提取了颜色信息,然后将颜色信息与三维点坐标关联起来,生成了带有颜色的稀疏点云。其接受本质矩阵 E 、特征点的对应关系、相机的内参信息以及输出的相对旋转矩阵。

2023-09-25 09:14:59 2358 2

原创 侯捷 C++ STL标准库和泛型编程 —— 1 STL概述 + 2 OOPvsGP

STL —— Standard Template Library,标准模板库C++ Standard LIbrary,C++标准库中包含STL(即STL+一些小东西)STL六大部件:容器(Containers)、分配器(Allocators)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、适配器(Adapters)容器:放数据分配器:是来支持容器将数据放到内存里算法:是一个个函数来处理存放在容器里的数据迭代器:就是来支持算法操作容器的仿函数。

2023-09-25 08:11:14 156

原创 2 OpenCV实现的F矩阵+RANSAC原理与实践

RANSAC 的缺点是计算这些参数所需的时间没有上限,其需要进行大量的随机采样和模型拟合,因此对于大规模数据集来说,计算复杂度较高,可能需要较长的时间来运行。RANSAC 的主要思想是随机采样数据点,用这些采样点拟合一个模型,然后计算其他数据点到这个模型的拟合误差;根据误差和阈值,将数据点分为。如果内点的数量达到了某个设定的阈值,且模型参数的估计是合理的(例如,模型的拟合误差小于一定阈值),则认为找到了一个满足条件的模型。计算所有数据点到模型的拟合误差,并将与模型拟合误差小于某个阈值的数据点标记为内点。

2023-09-20 09:24:16 677

原创 1 基于SIFT图像特征识别的匹配方法比较与实现

BFMatcher将尝试所有可能性,这种匹配算法非常慢,匹配所需的时间随着添加的特征数量线性增加,这导致更高的计算成本,所以尤其是对于大型数据集BFMatcher是一种简单但不一定是最有效的匹配方法FLANN 在牺牲一些精度的情况下,提供了更快的搜索速度,特别是在高维空间或大型数据集中准确度BF 匹配器:BF 匹配提供精确的最近邻搜索,这意味着它可以高精度地找到最接近的匹配项;它适用于精度至关重要的任务,例如某些图像识别或对象跟踪任务。

2023-09-10 17:25:35 865

原创 侯捷 八部曲 C++面向对象高级开发(上)+(下)【C++学习笔记】 超详细 万字笔记总结 笔记合集

本笔记根据侯捷老师的课程整理:C++面向对象高级编程(上)+(下)全网最详细的侯捷笔记整理,思路整理,17000字整理

2023-08-17 10:37:49 1460

原创 侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete

在常量成员函数中,数据不能被改变所以不需要COW;引用底部的实现也是指针,但是注意 object 和它的 reference 的。的签名signature 在C++中是视为相同的——二者不能同时存在。reference 通常不用于声明变量,用于参数类型和返回类型的描述。):表示这个成员函数保证不改变 class 的 data。是函数签名的一部分,所以加上后是可以共存的。,可以写出多个版本,前提是每一个版本的声明有。大小是相同的,地址也是相同的。的 object 占用的内存。,所以上面两个函数是共存的。

2023-08-16 17:32:00 233 1

原创 侯捷 C++ part2 兼谈对象模型笔记——6 多态 虚机制

例如:用一个 Shape(父类)的指针,调用 Circle(子类)的。,子类在继承中对于虚函数会通过指针的方式进行——因为可能其会被改写。多态优点:代码组织结构清晰,可读性强,利于前期和后期的扩展以及维护。:同样是 Shape 的指针,在链表中却指向了不同的类型。当类中有虚函数时(无论多少个),其就会多一个指针——,但虚函数可能会被改写,所以调用虚函数是==在汇编代码中,调用函数的时候,蓝框的操作用。,再找到调用的第n个虚函数函数——是通过对象来调用,是。,是用其调用虚函数——在汇编代码中,是通过。

2023-08-14 08:36:19 299

原创 侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

注:下面这样是不行的,第一行编译器找不到返回值类型。编译器通过赋值的返回值类型,自动匹配返回类型。,编译器会从容器中依次拿出数据。来得到参数pack里的数量。注意:改变原容器中的值需要。模板参数可变化,其语法为。

2023-08-12 07:09:16 216

原创 侯捷 C++ part2 兼谈对象模型笔记——4 specialization 特化

特化是泛化的反面,可以针对不同的类型,来设计不同的东西。注意绑定模板参数不能跳着绑定,需要从左到右。例如:想要当模板参数是指针时特别设计。例如:第一个模板参数我想针对。

2023-08-11 08:10:58 222

原创 侯捷 C++ part2 兼谈对象模型笔记——3 模板

例一,可以使用 对象来构造一个 的pair。后面还有参数,需要用中间框和下面框下一行的代码 —— c++11的内容。它即是模板的一部分,自己又是模板,则称为成员模板。智能指针也必须可以,所以其构造函数需要为==补充:只有模板的尖括号中,关键字。例二,父类指针是可以指向子类的,叫做。是有一个初始值,当没指定时就初始为。即模板中的一个模板参数也为模板。在要指定时,如最后一行中的。类型的—— 创建一个。

2023-08-10 07:05:37 161

原创 侯捷 C++ part2 兼谈对象模型笔记——2-xxx-like-classes

是迭代器包着的一个真正的指针,其指向。设计一个class,行为像一个函数。为例,这种智能指针还需要处理。Foo 中的函数 method。有一个小括号,所以函数中要有。Foo 类型的 object。

2023-08-09 07:15:59 180

原创 侯捷 C++ part2 兼谈对象模型笔记——1 转换

表示这个 ctor 只能在构造的时候使用,编译器不能拿来进行类型转换了。当上面两个都有转换功能的函数在一起,编译器调用时都可以用,报错。one-argument 表示只要一个实参就够了。将当前对象的类型转换成其他类型。将其他类型的对象转换为当前类型。

2023-08-08 07:51:12 188

原创 侯捷 C++面向对象编程笔记——10 继承与虚函数

Derived 的构造函数首先调用 Base 的 default 构造函数,然后调用 Component 的 default 构造函数,然后才执行自己。这里的 clone 函数就不能用之前的那个构造函数来创建副本了——其会放到父类中去,所以创建一个新的构造函数。补充:当一个子类继承自父类时,它可以被视为是父类的一种类型,因此可以使用父类的指针或引用来引用子类的对象;函数,父类通过调用找到的相应类型的 clone 函数来创建子类的副本。,把它放到父类的一个空间中,这样父类就可以找到新创建的子类。

2023-08-07 08:05:07 511

原创 侯捷 C++面向对象编程笔记——9 复合 委托

但当a要改变内容时, 系统会单独复制一份出来给a来改,b和c依然在共享。Container 的构造函数,编译器会自动先调用 Component 的 default 构造函数,再执行自己。即通过指针把任务委托给另一个类。注意如果要调用 Component 的其他构造函数需要自己写出来。是一个已经存在的功能很多的类(两头进出的队列);类似于c中结构里有结构——class里有class。复合中,内部和外部是一起出现的;该例只是复合的一种情况——设计模式。这是一个著名的设计模式——右边怎么变动都不会影响左边。

2023-08-06 07:40:30 485

空空如也

空空如也

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

TA关注的人

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