自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(247)
  • 资源 (2)
  • 收藏
  • 关注

原创 设计模式---中介者模式

定义:用一个中介对象来封装一系列对象交互。中介者使各对象不需要相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,属于行为型模式。设计思路:用一个中介对象来封装一系列的对象交互操作,中介者模式使得对象之间不需要显示的相互引用,从而使得系统或模块内部相互解耦,而且可以独立的改变它们至今的交互。

2024-09-13 14:26:07 658

原创 观察者模式与hook机制的联系

在 PyTorch 中,hook 机制提供了一种在模型的前向传播和反向传播过程中插入自定义操作的方式。这可以帮助开发者在不改变模型本身的情况下,检查或修改模型的输入、输出和梯度信息。主要有两类 hook:前向传播 hook 和 反向传播 hook。前向传播 hook (Forward Hook)前向传播 hook 可以在模块的前向传播阶段插入自定义操作,允许开发者访问和修改该模块的输入和输出。它通常用于调试和检查模型的行为。使用场景:检查每层的输入、输出,或者在中间层提取特征。

2024-09-13 10:24:27 1037

原创 bash脚本2_对比多个不同版本同名文件的异同

【代码】bash脚本2_对比多个不同版本同名文件的异同。

2024-09-06 14:41:59 318

原创 bash脚本1_完成文件夹的更新

功能: 文件夹A,文件夹B 文件夹A是文件夹B的子集。两者的层级一致,内部都包含多个子文件夹 写一个bash脚本将文件夹B中出现在文件A中的子文件夹替换为文件夹A的子文件夹。

2024-09-06 14:31:30 198

原创 C++的内存模型

C++ 的内存模型包含了程序运行时如何分配、访问、管理内存的规则,涵盖了多线程环境下的数据一致性、内存对齐、以及虚拟内存管理等内容。掌握这些概念对于编写高效、安全的 C++ 程序至关重要。

2024-08-28 12:31:54 1196

原创 transformer死亡9问

序列掩码(sequence mask)在Decoder的自注意力机制中起到了关键作用,用于屏蔽未来的信息,以确保Decoder在生成目标序列时只能依赖于之前生成的词。在计算Transformer的注意力时,对点积注意力进行缩放(scaled)的主要原因是为了稳定训练过程,防止输入数据的范围过大,导致softmax输出的梯度变得非常小,从而影响训练效率和模型性能。使用不同的权重矩阵生成查询和键,使得模型可以在不同的子空间中变换输入,捕捉更丰富和多样的特征,并且避免退化成简单的自相关操作。

2024-08-05 15:32:15 960

原创 构造函数或者析构函数中调用虚函数会怎样

构造函数中调用虚函数:调用当前类的版本,因为派生类对象还未完全构造。析构函数中调用虚函数:调用当前类的版本,因为派生类对象已经开始析构。这种行为是为了避免在构造和析构过程中调用尚未初始化或已经销毁的派生类成员,从而导致未定义行为。为了避免这种问题,最好避免在构造函数和析构函数中调用虚函数。

2024-08-04 20:05:18 363

原创 优化程序的几种方法

智能指针(如std::shared_ptr和std::unique_ptr)可以自动管理内存,避免内存泄漏。例如,使用std::vector而不是std::list。使用多线程(如std::thread)和多进程(如fork)来并行处理任务,充分利用多核处理器。动态内存分配(如使用new和delete)是昂贵的操作。利用标准库中的并行算法(如std::for_each的并行版本)来简化并行处理的实现。对于需转移所有权的对象,使用std::move来避免不必要的复制。b. 使用std::move。

2024-08-04 19:56:51 346

原创 C++中将临时变量作为返回值的时候,栈上的内存分配、拷贝过程

普通返回值:涉及栈上分配、拷贝构造和析构过程。RVO/NRVO:编译器优化,避免不必要的临时对象和拷贝,提高性能。右值引用和移动语义:进一步优化临时变量的处理,通过移动构造函数减少不必要的拷贝。

2024-08-04 19:48:54 653

原创 智能指针的循环引用 是什么 怎么引起的

智能指针的循环引用(Circular Reference)是指两个或多个对象之间的共享指针相互引用,导致这些对象永远不会被释放,从而引发内存泄露。主要发生在使用std::shared_ptr时,因为它们使用引用计数来管理对象的生命周期,当出现循环引用时,引用计数不会降为零,从而导致内存永远不会被释放。在这个示例中,B类中的aPtr使用std::weak_ptr,因此不会增加引用计数,从而避免了循环引用。当a和b超出作用域时,它们会正确地被释放。在main函数中,a和b共享指针相互引用,从而形成了循环引用。

2024-08-04 19:38:33 374

原创 内存泄露的定义,如何检测与避免?

内存泄露(Memory Leak)是指程序在运行过程中动态分配的内存未被正确释放,导致这些内存无法被系统或应用程序再次使用。动态分配的内存没有被释放。动态分配的内存指针丢失,无法找到这块内存。检测内存泄露检测内存泄露的方法有很多,以下是一些常用的工具和方法:使用工具检测Valgrind:一个强大的内存调试工具,可以检测内存泄露、内存越界等问题。适用于Linux系统。Dr. Memory:一个开源的内存调试工具,适用于Windows和Linux系统。

2024-08-04 19:25:58 321

原创 静态类型和动态类型,静态绑定和动态绑定的区别和用法对比

静态类型: 变量类型在编译时确定,优点是类型安全性高,性能好,缺点是缺乏灵活性。动态类型: 变量类型在运行时确定,优点是灵活性高,缺点是可能出现运行时错误,性能可能较低。静态绑定: 函数调用在编译时解析,优点是性能好,缺点是缺乏多态性。动态绑定: 函数调用在运行时解析,优点是支持多态性,缺点是运行时开销较大。

2024-08-04 08:50:18 579

原创 动态绑定、工厂模式与多态特性的关系

使用基类指针调用派生类的实现是实现多态性、工厂模式和动态对象管理等设计模式的基础。这种方式使得代码更加灵活和可扩展,便于管理和维护不同类型的对象。

2024-08-04 08:29:35 719

原创 l1 loss和L2 loss的差异

l1 loss和L2 loss的差异

2024-08-03 20:26:13 121

原创 Loss里边出现了nan和inf的原因,为什么会出现nan和inf

Loss里边出现了nan和inf的原因,为什么会出现nan和inf

2024-08-03 20:23:29 134

原创 C++中的重载和重写的区别

C++中的重载和重写的区别

2024-07-24 14:17:34 127

原创 inline和宏定义的区别

inline和宏定义的区别

2024-07-24 14:11:57 135

原创 C++的四种强制转换

C++的四种强制转换

2024-07-24 14:08:10 120

原创 vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因

在使用 std::vector 时,有一些注意事项和常见问题需要注意。特别是在频繁调用 push_back() 时,它可能会对性能产生影响。以下是一些使用 std::vector 的注意点及其原因,以及频繁调用 push_back() 对性能的影响和原因。

2024-07-24 13:55:34 355

原创 STL中unordered_map和map的区别和应用场景

在C++标准模板库(STL)中,和map都是用于存储键值对的关联容器,但它们在底层实现和应用场景上有一些关键区别。

2024-07-24 13:38:11 787

原创 NMS代码c++版本

【代码】NMS代码c++版本。

2024-07-08 17:47:57 261

原创 self_attention python代码

【代码】self_attention面试code。

2024-07-08 16:17:49 418

原创 卡尔曼滤波原理以及C++代码demo

2)每个时刻都包含观测,预测和估计三个值,其中t时刻的预测是借助t-1时刻的估计以及状态转移方程得到,t时刻的估计是加权t时刻的观测和t时刻的预测得到。首先引用部分的两个链接已经把卡尔曼滤波前世今生讲解的非常详细了,在这里我把自己的理解写出来,方便若干年后的自己能够看到符合自己理解的讲解,不用重写总结。这是一个比较耗时间的工作,卡尔曼滤波的原理书写和代码阅读都比较耗时间,暂时先搁置吧。今天,要来说一下关于卡尔曼滤波的一些老生常谈的东西,什么是卡尔曼滤波,卡尔曼滤波的步骤和卡尔曼滤波最终形式的由来。

2024-05-03 23:31:51 362

原创 git lfs的使用

【代码】git lfs的使用。

2024-05-03 16:57:33 433

原创 毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

雷达的距离估计取决于Rx信号和Tx信号的频率差, 并且最大探测距离也受限于系统的采样频率和带宽, 与带宽成反比。采样频率S固定时,带宽越小,最大探测距离越大,但因距离分辨率与带宽成正比,所以带宽也不能无限变小。带宽固定时,采样次数N越大,最大探测距离越远,但因N的增加会引起计算量增加和储存量增加,所以N也不能无限增加距离分辨率取决于带宽,与带宽成反比。在周期时间TcT_cTc​不变的时候,提高频率变化率。在频率变化率不变的时候,延长chirp信号,也就是提高周期时间,都可以提高距离分辨率。

2024-05-03 16:31:42 3731 8

原创 IPM原理

IPM变换就是消除这种透视效应,所以也叫逆透视。原本平行的两条车道线,在针孔相机下因为透视变换,在图片中看到的效果并不平行,这是因为透视现象。而IPM的思想可以将原来的透视结果转换到鸟瞰图的视野下,看到的车道线也是水平的。透视变换的作用是让我们从另外一个角度观察图片中的场景,例如俯视。它能帮助我们避免例如“近大远小”造成的图像世界与现实世界的偏差,其方法的本质是“映射”,将原图像的像素点按照一定的“比例”映射到另外一张图上。IPM变换具有很多应用,求取IPM图像的方法亦是有很多。

2024-04-30 15:05:03 1352

原创 双目深度估计原理&立体视觉

双目深度估计是通过两个相机的对同一个点的视差来得到给该点的深度。标准系统的双目深度估计的公式推导需要满足:1)两个相机的光轴水平;2) 两个相机焦距分辨率一致,也即内参一致;3)两个相机的成像平面水平,两个相机坐标系之间只存在x轴方向的平移关系。但是得到的双目系统,不一定满足上述的三个条件,两个相机的坐标系之间大概率存在某个旋转平移关系,因此在使用标准系统的双目估计原理公式之前,需要首先完双目相机之间的外参标定,得到两者的旋转平移关系。

2024-04-29 13:57:11 2661

原创 streampetr原版网络nuscenes数据pkl文件中的各字段含义

每帧数据都包含下列的信息。

2024-04-26 21:55:44 578

原创 ubuntu查看opencv&eigen

也可能最后的字符串是opencv2,opencv。

2024-04-26 16:53:20 720 1

原创 针孔相机模型原理&坐标系辨析&内参标定流程&内参变换

针孔相机的内参标定针孔相机原理真空相机模型图片的伸缩和裁剪变换内参标定———非线性优化张正定标定详细原理(含公式推导)通过多张棋盘格照片完成相机的内参标定流程(C++代码)其他工具箱相机分为短焦镜头和长焦镜头,短焦镜头看到的视野更广阔,同样距离大小的一颗树,在短焦相机中所占的像素个数较少。长焦镜头看到的视野较窄,能看的更远。因为同样距离大小的一棵树,在长焦距镜头中的像素个数更多;同一款芯片,短焦距fov大,长焦fov小。针孔相机原理真空相机模型要搞明白针孔相机模型,首先需要明确世界坐标系OXwY

2024-04-24 23:24:21 1398 2

原创 基于ros的相机内参标定过程

本篇文章用于记录基于ROS系统的balser相机的内参标定流程,使用的是balser 1920-40gc相机和computar-C镜头。相机帧率42fps, 分辨率2.3MP, 感光芯片IMX249, 镜头焦距8mm。

2024-04-09 23:28:18 948

原创 ICP配准算法

配准算法就是通过迭代完成两个点集的旋转矩阵RRR和平移矩阵TTT的迭代求解。数学定义如下:给定源点集PPp1p2pnpi∈RmPPp1​p2​...pn​pi​∈Rm​,和目标点击Qq1q2qnqi∈RmQq1​q2​...qn​qi​∈Rm​。两个点集之间存在着旋转RRR和平移ttt的转化关系,构建如下损失函数(点与点在某个尺度上的距离),ERt1n∑。

2024-04-07 20:59:49 983

原创 激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍

激光雷达和相机联合标定工具论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9564700github地址: https://github.com/acfr/cam_lidar_calibrationyutou视频安装讲解:https://www.youtube.com/watch?v=WmzEnjmffQU标定过程参考链接: https://blog.csdn.net/weixin_41681988/article/deta

2024-04-07 01:09:58 945

原创 点云特征描述子

上篇文章介绍了2D图片和3D点云中的特征点提取算法,通过ISS算法可以得到3D点云的特征点。那么一簇点云中的若干特征点怎么表征才能最大限度的代表这簇点云呐?这就是特征描述子的作用。本篇将从ISS特征点提取算法入手讲解PFH,FPFH和SHOT三种特征描述子。什么是特征描述子?特征描述子是用于描述特征点周围区域特征的向量或者特征值集合。在图像处理、计算机视觉和点云处理等领域,特征描述子用于表征图像、点云或者其他数据中的局部特征信息,通常用于匹配、识别和跟踪等任务。特征描述子需要具备的性质。

2024-04-07 01:03:34 1245

原创 特征提取算法

Harris角点检测算法是一种经典的图像特征检测算法,用于在图像中检测角点,即具有显著变化的位置,暂时可以理解为角点(Corner点)。一张图片中的点,在某个尺度上进行划分,可以划分为"flat"点,“edge"点和"corner"点,这三种点的直观理解参见下图:直观上来理解,给你一张图,让你来标出你认为的几个"独特"点,我想大概率你会标出与周围邻域内像素点的“颜色"或者"形状"反差较大的点吧。这里用到的“颜色“和“形状“就是上文说的尺度。在Harris算法中,也是这种思想,记像素点xy。

2024-04-06 22:02:50 1435

原创 各种拟合算法整理

本篇将介绍最小二乘法(Least Square)、霍夫变换(Hough Transform)和RANSAC(random sample consensus)算法的原理、应用和代码。如果已经知道了一组可靠的点,可以直接使用最小二乘法完成拟合;如果点集中包含少量的噪声,建议使用加强版的最小二乘法,霍夫变换以及RANSAC算法;如果点集中包含大量噪声,推荐使用霍夫变换和RANSAC算法。

2024-04-06 02:55:15 1749

原创 各类聚类算法整理

本篇将介绍整理各种聚类算法,包括k-means,GMM(Guassian Mixture Models, 高斯混合),EM(Expectation Maximization,期望最大法),Spectral Clustering(谱聚类),Mean Shift(均值偏移)和DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

2024-04-05 20:03:22 1378

原创 聚类算法的先验基础知识

聚类算法必备的数学基础

2024-04-05 14:33:45 1061

原创 各种滤波算法

这里整理了一些滤波算法,比如用于噪声点去除的Radius Outlier Removal和Statistical Outlier removal;用于降采样的voxel grid downsample,Farthest Point Sampling和Normal Space Sampling;用于上采样和平滑的Bilateral Filter;

2024-04-04 23:16:08 1340

原创 法向量估计

假设点P为这组点的中心,只要求所有点到点P的切平面的距离的L2范数最小,就说明这个切平面最接近这簇点的表面形状。为什么最小特征值对应的特征向量即为法向量方向。这里给出使用PCA求解的步骤和代码。是一组输入向量的去中心化向量。

2024-04-04 20:00:31 1490

毫米波雷达原理理解,包含单/多目标测距测速测家角度,以及速度/距离/角度分辨率的理解

毫米波雷达原理理解,包含单/多目标测距测速测家角度,以及速度/距离/角度分辨率的理解

2024-05-03

地理信息系统中的常⽤坐标系

地理信息系统中的常⽤坐标系

2024-04-29

支持向量机-SVM.pdf

支持向量机-SVM.pdf

2021-04-01

C51FPS.LIB文件

c51单片机浮点运算库,放在C:\Keil\C51\LIB\C51FPS.LIB

2021-03-21

空空如也

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

TA关注的人

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