自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 26.ELF文件解析

欢迎访问个人网络日志🌹🌹🌹🌹ELF(Executable and Linked Format)是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface)开发和发布的可执行链接格式。ELF文件是Linux目标文件格式既参与程序执行也参与程序链接。

2024-04-21 20:47:34 869

原创 25.设置及使用coredump文件

核心转储是一个包含进程意外终止时进程内存内容的文件。核心转储由内核触发以响应程序崩溃。核心转储作为崩溃时程序状态的事后快照非常重要,特别是在故障难以重现的情况下。

2024-04-10 22:24:28 936

原创 24.Linux下程序调试分析工具`Valgrind`

Valgrind是开源的Linux程序调试工具,可以用来自动检测程序中存在的内存管理,线程同步的问题,帮助开发人员提升代码调试的效率。Valgrind还可以输出程序的Profile信息,方便开发者定位程序中的性能问题。Valgrind是开源的Linux程序,开发者可以根据需要自行修改源码后编译。Valgrind支持主流的Linux系统,包括x86/Linux和。Valgrind功能强大,是大型复杂程序调试和系统profile分析的必备工具。Valgrind。

2024-04-09 23:17:41 553

原创 (三)Yolov8的NCNN模型导出与关键点检测任务部署

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-04-07 23:57:35 1039 3

原创 23.C++11引入的内存序

欢迎访问个人网络日志🌹🌹🌹🌹内存序是为了在做原子操作时,控制多线程间内存可见性的一种机制,从而有助于避免数据争用并确保正确同步。之所以要对原子操作的内存序做限制还是在于编译器编译时和cpu运行指令时会对指令做重排优化。这可能会导致意外的结果。关于指令乱序可以参考。c++11中引入的原子类型上的操作服从6是可选的最严格的内存次序,各种原子类型的所有操作都默认遵从该次序,除非我们特意为某项操作另行指定。内存次序共有6种,但它们只代表3。

2024-03-31 16:00:40 836

原创 22.C++中的原子操作

是一个模板,除了前面介绍的bool外还支持等多种类型特化。原子操作在多线程编程中是非常有用的,可以帮助我们避免很多问题,但是原子操作也有一定的代价,它可能会影响程序的性能。所以,在程序中使用原子操作时,需要根据实际情况,权衡性能与并发性的关系。欢迎访问个人网络日志🌹🌹知行空间🌹🌹。

2024-03-28 00:46:07 957

原创 21.Linux进程间通信IPC之共享内存和信号量

信号量是一种用于多线程或多进程之间同步的机制。信号量(Semaphore),是在多进程环境下使用的一种设施, 它负责协调各个进程, 以保证它们能够正确、合理地使用公共资源。信号量分为单值和多值两种,单值信号量只能被一个进程获得,多值信号量后者可以被若干个进程获得。需要包含头文件信号量可以用来保证两个或多个关键代码段不会被并发调用。共享内存可以说是Linux下最快速、最有效的进程间通信方式。

2024-03-26 01:12:22 945

原创 20.Ubuntu下安装GCC

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-03-24 22:11:48 610

原创 19.C++20中的std::latch和std::barrier

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-03-21 22:22:36 881

原创 目标检测7-DETR算法剖析与实现

DETR是的等于2020年05月提交的论文中提出的。论文地址:开源代码:将目标检测问题看成是集合预测的问题,所谓集合预测是指一次输出一张图像中的所有待检测对象。DETR使用来做目标检测,直接预测检测框到检测框中心点归一化的距离。在模型训练时,使用的算法是一对一的匈牙利算法,通过query的方式获取最后的输出。以上介绍的策略,使得DETR实现了目标检测算法的端到端训练,不需要使用NMS和先验anchor。

2024-02-21 22:40:26 813

原创 21.图形化桌面环境的shell文本菜单

建好菜单布局和函数后,就需要设置菜单逻辑了,这需要用到case命令。case命令应该根据菜单中输入的字符来调用相应的函数。;1);2);3);*)clear;;1);2);3);*)clear;esacdoneclear上面的脚本中echo -en是输出非打印字符,其中n表示不换行。上面的脚本,只有在输入的。

2024-01-14 22:34:22 982

原创 5.Pytorch模型单机多GPU训练原理与实现

当我们使用的模型过大,训练数据比较多的时候往往需要在多个GPU上训练。使用多GPU训练时有两种方式,一种叫,一种是。方式,是在模型比较大导致一张显卡放不下的时候,将模型拆分然后分别放到不同的显卡上,将同一份数据分别输入进行模型训练。这种对模型结构各模块之间有联系时很不友好,有可能都不支持拆分。因此,应用更广泛的是的方式。方式,是将相同的模型拷贝到不同的显卡上,然后将数据平均划分后输入到相应显卡上进行计算,然后根据计算结果更新模型的参数。方式更新模型参数。

2024-01-14 15:20:02 997

原创 18.numpy.where的使用

condition: 条件x:数组,shape同condition或支持广播y:数组,shape同condition或支持广播根据condition从x或y中取数值,如果condition条件为True取x对应位置的元素,否则取y对应位置的元素。

2024-01-10 22:23:22 450

原创 20.Linux Shell自定义函数

在脚本中一遍又一遍地编写同样的代码会很烦人,为了避免这种麻烦,可以将代码封装成函数,多次引用。采用关键字functioncommands }函数名后跟空括号name() {commands }执行,$ ./test.sh # ./test.sh: 行 3: sayHello:未找到命令 # Hello, Bash Shell. # Hi, Bash Shell. # Hi2, Bash Shell.每次引用函数名时,bash shell会找到函数的定义并执行在那里定义的命令。从上面的例子可以看到,

2024-01-10 21:37:15 1140

原创 19.Linux Shell任务控制

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-01-08 22:04:09 1151

原创 18.Linux Shell中的mktemp命令使用

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-01-06 17:51:56 542

原创 17.Linux Shell输入输出流管理

前面介绍的是3个标准的文件描述符的重定向,除此之外每个进程还支持自定义6个打开的文件描述符。可以用exec命令来给输出分配文件描述符。/bin/bash执行,以上就是自定义了输出文件描述符3到文件test3out中,上面会创建新文件test3out,也可以不创建新文件,而使用追加的方式,可以分配另外一个文件描述符给标准文件描述符,这样就可以恢复已重定向的文件描述符了。/bin/bashexec 3>&1exec 1>&3执行,上面的例子,是先将文件描述符3重定向到STDOUT,再将STDOUT。

2024-01-06 17:49:41 1063

原创 16.Linux Bash Shell通过`read`命令读取用户输入

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-01-04 23:29:20 1252

原创 15.bash shell中自定义命令行选项与getopt/getopts

欢迎访问个人网络日志🌹🌹🌹🌹。

2024-01-03 23:36:39 1085

原创 14.bash shell中的for/while/until循环

命令允许定义一个要测试的命令,然后循环执行一组命令,只要定义的测试命令返回的是退出状态码 0。在 test 命令返回非零退出状态码时, while 命令会停止执行那组命令。命令用空格来划分列表中的每个值。将一系列值都集中存储在了一个变量中,然后需要遍历变量中的整个列表。在上面的命令中使用重定向,可以将循环中命令的结果保存到文件中。命令可以提前中止某次循环中的命令,但并不会完全终止整个循环。会执行指定的多个测试命令,只有在最后一个命令成立时停止。命令中,只要定义的测试命令返回的是退出状态码。

2023-12-26 23:59:12 1243

原创 13.bash shell中的if-then语句

欢迎访问个人网络日志🌹🌹🌹🌹。

2023-12-24 23:06:51 1683

原创 4.grid_sample理解与使用

欢迎访问个人网络日志🌹🌹🌹🌹。

2023-12-04 23:07:30 930

原创 19.C++ 中将一维数组转成多维的三种方式

操作符可用于将一个指向基类的指针转换为指向子类的指针。但是这样的转换不总是安全的。reinterpret_cast作用为:允许将任何指针转换为任何其他指针类型。数组的首地址,reinterpret_cast后将这个转换结果赋值给了。它可以强制性的将一个指针类型转换成另一种不会做检查,因此就不需要先转成。的引用,如此就完成了类型转换。是取指针的值,也就是数组的首地址,类型转换是有保护的,如果同样能使用。指针中的元素个数,防止越界。欢迎访问个人网络日志🌹🌹。转换约束的限制,如果使用。是一个数组变量的引用,

2023-12-02 10:43:19 322

原创 19.OpenCV Mat的位操作

欢迎访问个人网络日志🌹🌹🌹🌹。

2023-12-01 21:38:47 337

原创 17.PIL报错`AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘`

欢迎访问个人网络日志🌹🌹🌹🌹。

2023-11-30 21:49:02 2138 1

原创 1.UML面向对象类图和关系

关联关系表示的是对象之间的引用关系,其对应到现实世界中通常是动词连接的两个主体类别之间的关系,像老师教学生,学生选择课程。现在我们一起来看下。泛化是一般的类和更具体的类之间的关系。依赖关系的表示的是一种使用关系,考虑一个类的对象的方法中使用了另一个类的对象,作为函数参数或方法的局部变量,这时就是依赖关系。其表示的是部分和整体的关系,一个类是另一个类的一部分,两个类有单独的生命周期,可以分离存在。组合是一种比聚合更强的关联关系,聚合中整体和个体可以分别单独存在,但在组合关系中表示的是个体无法脱离整体存在。

2023-11-05 19:34:52 538

原创 18.自监督视觉`transformer`模型DINO

这篇文章旨在探索自监督训练有没有给视觉带来相对于CNN没有的新特性。除了观测到自监督训练ViT工作特别好外,作者还有两个新发现,一个是自监督训练得到的特征图包含明显的语义信息,有可能将自监督的结果直接拿来做语义分割和目标检测,另外一个是直接拿自监督得到的特征向量应用KNN分类,得到了非常好的效果。ps:本人在工程数据(20W张)上验证的直接使用KNN分类的效果比efficient-net还好。正如DINO的名字缩写,这整个算法使用了知识蒸馏的架构,通过一个teacher网络引导student。

2023-11-01 22:31:18 312

原创 17.基干模型Swin-Transformer解读

Swin-Transformer是2021年03月微软亚洲研究院提交的论文中提出的,比ViT晚了半年左右,相对于ViT而言,的改进,使能作为新的视觉任务backbone,用于分类分割和检测,姿态估计等任务。是,作者指出了将应用到视觉任务中需要解决的两个问题,一个是在ViT中就已经提到的计算时QKTdkVdk​​QKT​V复杂度是序列长度L(在视觉任务中是image size)的平方,着限制了处理大分辨率图像的能力。

2023-10-31 22:08:22 340

原创 16.ViT模型介绍

自2017年06月由谷歌团队在论文中提出后,给自然语言处理领域带去了深远的影响,其并行化处理不定长序列的能力及自注意力机制表现亮眼。根据以往的惯例,一个新的机器学习方法往往先在NLP领域带来突破,然后逐渐被应用到计算机视觉领域。时间来到2020年10月,同样是谷歌团队提出了将应用到视觉任务的方法,。关于对的介绍可以参考。将应用于视觉任务的一种想法是将图像每个像素都flatten,得到一个表示图像的序列,作为模型的输入。但对使用自注意力模块的来说,这种方法随着图像分辨率的变大,计算复杂度也变得很高,因为。

2023-10-31 21:38:14 184

原创 18.C++中模板参数类型推断与引用

第一个编译规则,当将一个左值传递给模板函数的模板类型右值引用的参数时,编译器推断模板类型参数为实参的左值引用类型。所以调用。

2023-10-20 22:17:55 242

原创 4.Mask R-CNN/YOLOV8/RTMDET三种实例分割方法推理逻辑对比

欢迎访问个人网络日志🌹🌹🌹🌹。

2023-10-15 23:38:08 1832 1

原创 4.迭代最近点ICP及非线性优化求解

欢迎访问个人网络日志🌹🌹知行空间🌹🌹在迭代最近点算法ICP及SVD求解中介绍了问题及使用分解求解的方法。除了,还可以使用非线性优化的方法来求解。还记得,优化的目标函数为:min⁡R,t12∑in∣∣pi−(Rqi+t)∣∣22\min\limits_{R,t}\frac{1}{2}\sum\limits_{i}^n||p_i-(Rq_i+t)||_2^2R,tmin​21​i∑n​∣∣pi​−(Rqi​+t)∣∣22​我们知道旋转和平移可以写成齐次变换的形式,T=[Rt00]T=\begin{bma

2023-09-27 23:47:41 380 2

原创 3.迭代最近点算法`ICP`及`SVD`求解

在使用相机时,我们可以通过图像的特征匹配,找到两组三维点之间每个点的匹配关系。而在使用激光雷达时,由于点云是稀疏的,但是采集频率很高,通常认为两帧之间离的最近的点就是匹配点,因此称此算法为迭代最近点算法。图像找到两个位置图像中匹配点,再计算匹配点的三维坐标,然后利用。所需的量,所以得到的方程组都是超定的,只能求解其最小二乘解。中的点是传感器坐标系中的表示,这两组点对应的是世界坐标系。是待求量,一般情况下可以得到的匹配点对都会远远多于求解。关键的两个函数,一个是特征点匹配,是三维空间中的点差,因此是。

2023-09-09 18:00:18 258

原创 4.矩阵的几何意义、变基与迹

矩阵迹的定义我们都知道,是方阵对角元素的和。考虑上面是我们常用的建立坐标系的方式,当然可以使用其他方式建立坐标系,如。我们知道空间中一点的坐标可以表示以原点为起点以该点为终点的向量。通过上面的计算可以证明,进行纯旋转的变基操作不会改变矩阵的迹。尺度不相同都是可以的,譬如我们选择如下向量作为基。因此从这个角度理解,矩阵表示的是线性变换矩阵。的视频展示的更加直观,可以直接在这里看。中的表示,观察上式可以写成,的每一列为基的坐标系变换到以。的每一列为基的坐标系中,因此。欢迎访问个人网络日志🌹🌹。

2023-09-07 21:47:53 549 1

原创 点云处理库Open3D基础操作1

Open3D是英特尔公司于2015年发布的开源3D视觉算法库,截至2023年03月已经更新到了0.17.0版本。基于MIT协议开源许可。其后端使用C++11实现,经过了高度优化,使用OpenMP并行运算优化。通过,其提供前端Python API。Open3D的介绍论文发布在。更多详细的介绍可以参考这里。值得一提的是在另外一个大名鼎鼎的3D视觉算法库是PCL由实验室开源于2011年,与同出一源。关于PCL的介绍可以参考这里。在Open3D的介绍论文中,作者指出,PCL作为较早出现的3D。

2023-09-03 21:21:13 616 2

原创 (一)KITTI数据集用于3D目标检测

KITTI是德国卡尔斯鲁厄科技学院和丰田芝加哥研究院开源的数据集,最早发布于2012年03月20号。对应的论文发表在CVPR2012上。KITTI数据集搜集自德国卡尔斯鲁厄市,包括市区/郊区/高速公路等交通场景。采集于2011年09月号及10月03号的白天。KITTI数据采集使用的平台如下图,上面平台中包括从上图中可以看到IMU/GPS总结,KITTI数据集是由4个相机,1个激光雷达,1个IMU/GPS惯导系统共同组成,我们所要厘清的是这6个传感器之间的坐标系关系和时间同步信息。

2023-08-30 23:31:52 631

原创 3.矩阵常用操作

向量空间。

2023-07-24 23:53:15 668

原创 15.矩阵运算与img2col方式的卷积

矩阵乘法运算(CABA∈Rm×kB∈Rk×nC∈Rm×nCmn​k1∑K​Amk​Bkn​;mnk∈R矩阵的乘法操作可以写成如下图所示,从上面可以看到使用普通的矩阵乘法运算,其复杂度是On3,这个复杂度相对来说是很高的,当矩阵的维度很大时,运算量会显著增加。矩阵运算作为基础运算,有大量的科学家对其进行研究,试图降低其运算复杂度。以为例,其将矩阵乘法的运算复杂度降低到了Onlog27≈On。

2023-07-23 11:35:34 320

原创 8.LEETCODE72.编辑距离

很自然的一个想法是采用哪个动作后接下来需要的编辑距离最小,就采用哪个动作。通过上面的理解,很容易写出递归形式的解答代码,需要给上面的伪代码加入终止条件,也就是当。给两个单词 s1 和 s2, 返回将 s1 转换成 s2 所使用的最少操作数。可以使用备忘录优化递归代码,或者将代码写成动态规划的形式。,因此存在重复路径,也就意味着有大量的重复运算。上面的自顶至底的状态转移过程,从。位置的子串所需要的最小编辑距离。欢迎访问个人网络日志🌹🌹。上图初始状态表示的含义,欢迎访问个人网络日志🌹🌹。

2023-07-21 23:55:55 145

原创 4.GIT中的diff命令

这个命令会输出文件当前状态与其上次提交之间的发生的修改。的创建和应用,还有一些其他的操作。时可以跟一些参数来处理不同的情况。的所有修改,不包括未跟踪的文件。仓库两个文件,两个分支或者两个。使用这个文件可以同时查看使用。将修改添加到缓冲区后,使用。还能查到文件上所做的修改。欢迎访问个人网络日志🌹🌹。命令,将会输出本地还没有。到仓库中的所有文件修改。欢迎访问个人网络日志🌹🌹。这个命令给出当前分支与。

2023-07-15 16:38:55 1360

数据科学和机器学习相关资料整理

其中是数据科学和机器学习还有需要用到数学资料的整理,适合对机器学习和数据科学感兴趣想入门的同学参考学习。

2018-01-19

Springer-handbook-of-robotics-second-edition,pdf,epub

Springer-HandBook-Of-Robotics,English,Epub and PDF

2017-11-29

空空如也

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

TA关注的人

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