- 博客(105)
- 收藏
- 关注
原创 基于深度学习的3D点云特征提取方法梳理
点云深度学习研究综述 摘要:点云作为三维空间中的离散点集数据,在自动驾驶、机器人感知等领域具有重要应用。本文首先解析点云数据的本质特性(无序性、稀疏性和不均匀性),随后系统梳理点云深度学习的三大核心任务:分类、分割和检测。在特征提取方法方面,重点分析了早期两大技术流派:体素化方法(如VoxNet)通过3D卷积处理网格化数据,2.5D投影方法(如MVCNN)则利用2D卷积处理投影视图。研究指出,点云的不均匀特性对传统卷积方法构成挑战,推动了后续直接处理点云数据的新方法发展。
2025-11-22 18:42:47
1269
原创 Pytorch框架下自定义数据准备(DataSet与DataLoader编写技巧)
PyTorch中自定义Dataset的关键是重写__init__、__len__和__getitem__三个方法。__init__用于初始化数据集索引和元数据,避免加载全部数据;__len__返回样本总数;__getitem__负责按索引加载并处理单个样本。DataLoader则负责批量采样,通过collate_fn将多个样本打包成batch,并支持多进程加载。典型实现包含:构建样本索引表、实现数据加载逻辑,以及定义批量打包规则,最终形成高效的数据流管道。
2025-11-14 20:31:25
721
原创 线性卡尔曼滤波(KF)学习
一开始接触卡尔曼滤波感觉这个算法很高深莫测莫测,但了解之后发现实则不然,只要掌握了本质,理解和使用起来还是很轻松的。滤波这个词语是广泛运用在信号领域的,所谓滤波就是过滤掉信号中的杂波留下有用的信号。综合一堆可信度低的信息,最终得到一个更加可信的信息,这就是卡尔曼滤波算法的精髓所在。卡尔曼滤波就是综合观测的信息以及推测的信息得到一个更加准确的信息。举一个简单的例子:在开车时汽车码表上显示的时速为100km/h,这个数据是根据轮子的周长c乘以轮子的转速w计算出来的,这就是估计值,概率论术语叫先验值。
2025-09-15 14:35:01
992
原创 手把手搭建远程WSL(Windows Subsystem for Linux)服务器
本文介绍了如何在Windows系统上通过WSL搭建Linux开发环境,并实现远程访问。主要内容包括:1)WSL基础操作与管理;2)设置开机自启动;3)使用ZeroTier实现内网穿透;4)配置镜像网络模式使WSL共享主机IP;5)安装SSH服务并配置端口;6)Windows防火墙设置放行端口;7)使用VSCode远程连接。通过这套方案,可以在保留Windows办公优势的同时,获得类原生Linux的开发环境,并实现跨网络远程访问,为深度学习等工作提供便利。
2025-09-15 14:24:58
1460
原创 Pytorch基础学习--张量(生成,索引,变形)
张量(tensor)是pytorch框架中最基本的一个操作对象。需要弄明白,tensor是一种类似numpy中ndarray的数据容器,与物理意义上的张量不同。可以看出,一个tensor对象包含了:数据(data),数据类型(dtype),运算的设备(device),以及是否计算梯度(requires_grad)等属性,这些属性为使用tensor对象实现数据预处理以及模型自动求导提供了条件。
2025-08-21 15:02:47
1047
原创 3D检测笔记:3D目标检测算法基础
本文概述了基于激光雷达点云的3D目标检测算法框架与评价指标。主要内容包括:1)算法框架采用主干网络+任务头的结构,输入为三维坐标和反射率数据;2)评价指标介绍了单一指标(精确率、召回率)和综合指标(AP、mAP)的计算方法;3)将3D检测算法分为纯点云、纯视觉和多模态融合三大类,并简要说明各类特点;4)指出多模态融合是当前主流发展方向。文章为读者提供了3D目标检测的基础知识概览和技术发展脉络。
2025-08-21 12:50:33
1202
转载 3D检测笔记:3D目标检测算法发展
本文梳理了3D物体检测算法的发展历程,分为萌芽期、起步期和发展期三个阶段。萌芽期(2017年前)主要借鉴2D视觉检测方法,如VeloFCN和MV3D将点云映射到正视图或俯视图进行检测。起步期(2017年)出现两大里程碑工作:VoxelNet通过3D网格量化点云,PointNet++直接处理原始点云,分别代表了结构化与非结构化处理方法。发展期(2018-2020年)针对VoxelNet效率问题,SECOND引入稀疏卷积,PointPillar创新性地将3D点云量化为2D"柱子",在保持精度
2025-08-21 12:49:11
170
原创 3D检测笔记:相机模型与坐标变换
本文介绍了激光雷达点云与相机图像的多模态融合中涉及的坐标系转换原理。重点阐述了从世界坐标系到相机坐标系的刚性变换(包括旋转矩阵R和平移向量T的推导),以及相机坐标系到图像坐标系的投影转换(小孔成像模型)。文中详细推导了坐标变换的数学表达,包括外参矩阵(R|T)和内参矩阵K的构成,并强调了坐标变换顺序的重要性(先旋转后平移)。这些基础理论为点云与图像数据的融合提供了关键的数学支持。
2025-08-20 16:03:12
1238
原创 3D检测笔记:MMDetection3d环境配置
本文介绍了在Linux系统下配置mmdetection3d开源3D检测框架的详细步骤。首先需要准备支持CUDA 10.0以上的GPU环境,并正确安装CUDA工具包和conda环境管理工具。配置过程主要包括:创建Python 3.8的conda环境、安装PyTorch、MMDetection引擎和MMDetection3D库,以及安装必要的稀疏卷积(spconv)库。最后给出了两种验证安装成功的方法:直接导入库检查版本号,或下载预训练模型进行推理测试。文章还提供了解决下载过程中可能遇到的SSL证书问题的方案。
2025-08-19 16:11:46
1014
原创 3D检测笔记:基础坐标系与标注框介绍
本文系统介绍了二维和三维坐标系的基本概念与特点。在二维部分,详细说明了图像坐标系(左上角原点,Y轴向下)和像素坐标系(OpenCV的Y轴方向与传统数学坐标系相反)。三维部分重点讲解了左手系与右手系的判定方法及其旋转特性,并介绍了相机坐标系(右手系,X右Y下Z前)、激光雷达坐标系(右手系,X前Y左Z上)和东北天坐标系(右手系,X东Y北Z天)等常用三维坐标系。最后以MMDetection3D标准为例,阐述了3D标注框的表示方法(位置、尺寸、朝向角)及其在不同坐标系下的定义差异,特别指出相机坐标系的朝向角定义与右
2025-08-18 17:46:34
753
原创 VSCode: python代码调试办法
本文介绍了在VSCode中调试Python代码的两种方法:简单快速调试和高级调试配置。首先需要安装Debugpy插件,然后通过自动调试或编辑launch.json文件实现调试功能。重点讲解了launch.json中关键配置项的含义,包括name、type、request、program、console、cwd、python、args和env等,并提供了实用的配置模板。 此外,文章详细说明了三种断点设置技巧:普通断点会在指定位置暂停程序;表达式断点根据条件表达式触发中断;命中次数断点在断点被命中指定次数后暂停
2025-07-24 10:02:21
3399
原创 基于yolov8的2D追踪算法Deepsort复现与调试
摘要 本文介绍了基于YOLOv8和DeepSORT的2D目标跟踪算法实现方法。首先概述了追踪算法的分类(单目标跟踪SOT与多目标跟踪MOT)及核心组件(检测头+追踪算法)。通过开源项目复现了该算法,详细说明了环境配置、依赖安装和运行步骤,包括DeepSORT参数配置解析(如MAX_DIST、MAX_AGE等)。代码流程主要涉及DetectionPredictor类的数据处理、模型推理和后处理过程,通过视频输入实现目标检测与跟踪。最后提供了常见错误解决方案(如NumPy版本兼容性问题)和测试效果展示。
2025-07-23 10:46:01
1032
原创 远程连接的几种方式
本文介绍了计算机网络中IP地址的概念及远程访问内网设备的方法。IP地址分为公网IP(唯一)和内网IP(非唯一),家庭网络通常通过NAT技术将多个设备映射到一个公网IP上。文章重点讲解了两种内网访问方法:端口映射(直接但安全性低)和内网穿透(通过公网服务器建立隧道,安全性高但需付费)。详细说明了使用ZeroTier实现内网穿透的步骤,包括创建网络、添加设备等。最后介绍了SSH远程连接的配置方法,包括启用OpenSSH服务和使用MobaXterm等工具进行连接。
2025-07-22 12:21:40
1230
原创 C++之路:多态与虚函数
C++多态机制解析 摘要:本文详细介绍了C++中的多态特性,包括静态多态(函数重载)和动态多态(虚函数)。通过代码示例展示了基类指针指向派生类对象时如何实现运行时多态,并解释了虚函数表和虚指针(vptr)的实现原理。文章还涵盖了纯虚函数和抽象类的概念,强调了虚析构函数在资源释放中的重要性。关键点包括: 动态多态的实现需要虚函数支持 虚函数表(vtable)和虚指针(vptr)的工作原理 纯虚函数强制派生类实现特定接口 虚析构函数确保派生类资源正确释放 (
2025-07-06 19:55:32
838
原创 C++之路:类的继承以及组合
类的继承是面向对象编程(OOP)的一个重要机制,它允许一个类(子类/派生类)基于另一个类(父类/基类)来构建,继承其属性和方法,同时可以扩展或修改功能。
2025-07-06 02:26:56
1028
原创 C++之路:类基础、构造析构、拷贝构造函数
面向对象编程有三大特性,分别是**封装**、**继承**、__多态__。这些特性在类的语法使用中都得到了充分的体现,我也预计写几篇文章来介绍一下C++的类语法。这是第一篇:类基础。类基础主要目的是介绍一下类的基础使用,重点在于**数据**和**函数**的封装。
2025-07-03 18:44:23
1076
原创 C++之路:函数重载与运算符重载
函数重载与运算符重载是C++的重要特性。函数重载允许在同一作用域内定义多个同名函数,条件是参数类型、数量或顺序不同。运算符重载则通过定义特定函数来改变运算符对自定义类型的处理方式,包括算术、关系、逻辑等运算符,但不能改变优先级和结合性。重载方式分为全局重载(需包含类类型参数)和类内重载(隐式使用this指针)。流运算符<<和>>必须全局重载,而赋值、下标等运算符必须在类内重载。合理使用重载可以提升代码复用性和可读性。
2025-07-01 10:37:40
1022
原创 C++STL容器:链表介绍与使用
链表是一种通过指针串联的数据结构,分为单向链表、双向链表和循环链表三种类型。单向链表节点包含数据域和后继指针,双向链表节点还包含前驱指针,循环链表则首尾相连形成闭环。链表的优势在于动态内存分配和高效插入/删除(O(1)时间复杂度),但随机访问效率较低(O(n))。在C++中,可以通过手动定义链表节点结构或使用STL的list(双向链表)和forward_list(单向链表)来实现。list容器支持多种构造方式,提供头尾插入/删除、迭代器访问、排序等操作,并具有高效的splice节点转移方法。
2025-06-30 10:05:11
1233
原创 C++Vector容器常用方法总结
摘要:本文介绍了C++中vector动态数组的基本用法,包括与普通数组的区别、声明方式(一维/二维)、基础信息获取方法(长度、容量等)、数据操作(访问/增删)及数据变换技巧。重点对比了vector的动态扩展特性,详细说明了迭代器使用、多种初始化方式及常用API,为C++开发者提供了全面的vector使用指南。
2025-06-24 18:42:57
434
原创 将Linux装进口袋: Ubuntu to Go 制作
教学如何将Ubuntu操作系统安装到 U盘或移动硬盘里面,这样就可以随时将专属于自己的整套系统(含应用、配置和个人数据)可存储在移动设备中,并且在其它的主机上即插即用。
2025-06-22 23:59:12
1862
原创 操作系统维护:Ubuntu与Windows双系统安装与卸载教程
本篇博客从底层的原理出发,主要介绍如何安装与卸载Ubuntu操作系统,保证各个步骤之间都是逻辑自洽的,因此掌握了安装方法对其它任何操作系统的安装都能做到游刃有余。
2025-06-20 14:42:50
2891
原创 操作系统引导基础知识
操作系统引导过程分为三个阶段:1) 固件阶段:CPU读取BIOS芯片完成硬件自检和启动设备扫描;2) 引导程序阶段:根据MBR或GPT分区方案,通过UEFI或Legacy模式加载引导程序;3) 内核初始化:加载操作系统内核,建立内存管理等核心功能。文章详细对比了不同文件系统和分区方案的适用场景,并用汽车引擎比喻操作系统内核与引导组件的关系。整个过程展现了计算机如何从硬件上电逐步加载操作系统的完整流程。
2025-06-19 15:29:53
1029
原创 ROS2: 手把手教你动作通信案例实现(客户端篇C++)
本文介绍了动作通信客户端的实现过程,主要包括三个核心任务:目标请求发送与结果接收、反馈数据接收以及最终结果接收。通过三个回调函数(GoalResponseCallback、FeedbackCallback、ResultCallback)处理这些任务。
2025-05-22 10:22:30
653
原创 ROS2: 手把手教你动作通信案例实现(服务端篇C++)
ROS动作通信是ROS2中一种结合了话题通信和服务通信的机制,主要用于处理长时间任务,能够在任务执行过程中向客户端反馈进度。动作通信分为三个部分:目标请求、结果响应和过程反馈。其运作原理包括客户端发送目标请求、服务端反馈接收结果、客户端发送结果请求、服务端执行任务并反馈数据,最终返回执行结果。实现动作通信的步骤包括创建接口文件、编译功能包、编写服务端代码等。
2025-05-20 18:27:39
1397
原创 Git版本管理系列:(一)使用Git管理单分支
Git 是一个分布式版本控制系统(DVCS),用于跟踪文件的变更并协调多人协作开发,由 Linus Torvalds 于 2005 年创建。为什么要学习使用Git?因为软件开发中必不可少的是版本迭代以及团队协作,并且现在很多开源软件的下载也依赖于Git方法。因此,只要是个程序员就应该要掌握使用Git进行版本管理的方法,是绕不开必须学会的技能。
2025-04-07 16:22:00
966
1
原创 C++学习之路:指针基础
指针一般在C/C++语言学习的后期接触,这样就导致指针给新手一种高深莫测、难以掌握的刻板印象。但实际上指针的使用其实很简单,并且还能够极大的提高程序的灵活性,帮助我们轻松实现复杂的功能.
2025-03-31 00:11:10
751
原创 C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤
正所谓“工欲善其事,必先利其器”,有很多小白入门时大把的时间都被浪费在配置和安装开发环境上,因此这篇博客将从易于理解的角度来讲讲怎么样配好一个C++的开发环境,目标是一次学习永远记忆。
2025-03-25 23:43:46
2664
3
原创 C++学习之路:filesystem文件系统的使用(C++17特性)
filesystem是C++17新引入的一个库,主要是用来操作文件系统,例如常用的文件夹以及文件的(内容编辑仍使用fstream库)。由于这个特性是C++17引入的,所以要检查编译器的版本是否支持C++17,VsCode中编译器版本的更改请参考。其余的库,例如<sstream>\ <fstream>等就依据需要自行添加。
2025-03-24 17:20:58
1736
原创 24年856电子线路专业课考场回忆
最后谈一下本人的学习过程,本人10月份开始正式准备考研,先买书,后在tb上买了两本真题,实话实说这真题错误的地方挺多(回忆版),大概一个月,把模电书过了一遍(做习题),十一月开始学数电,刚开始很难熬,感觉数电比模电难太多了,后来还是对着答案把课后题写了,写完以后感觉通透了很多,当然我都是写的重点题。第三题考了一道集成运放,三级电路,输入级差分放大,中间pnp,输出共集电极,第一问画交流等效,第二问求各级输入电阻,第三问求各级放大倍数,第四问问了差分射极电流源的功能。我是用S做控制,列真值表解决,不难。
2024-10-15 19:41:19
902
3
原创 蓝桥杯嵌入式--LCD卡死问题
我在设计一个按钮换页的程序的时候,突然发现按钮按下一次之后,整个程序出现了卡死的现象,经过一番努力终于查找到这个问题和LCD显示有关系。
2023-03-31 10:55:41
1279
原创 蓝桥杯嵌入式--实战模拟题
在蓝桥杯省赛举办之前,学校组织了一场模拟赛,基于第十三届的省赛题,但是难度略高于省赛,这篇博客记录一下解题的过程,其思路可供大家参考。这个题目相对于省赛稍微难一点,因此十分锻炼人,看完这个再去看省赛题简直不要太轻松!非常好!
2023-03-23 23:26:52
3325
3
PYNQ-Z1板卡支持包(Boardfile)
2022-09-21
STM32F103上电短路问题
2024-06-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅