自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 经典框架解读 | 论文+代码 | 3D Detection | OpenPCDet | PointRCNN

相反,3D点云数据与物体是一一对应的关系,也就是有点云,那么一定有物体,所以一定程度上排除了背景噪声干扰,使得每个点云point都具有明确的语义信息。这就是roi pooling模块的作用,从proposal中提取特征,体现在代码中的roipool3d_gpu函数,如下,,包含分类损失和回归损失。需要注意的是point_box_preds并不直接表示proposal的3D信息,需要进行坐标转换,具体是,也就是利用backbone提取的16384×128维特征,对每个点预测分类得分和对应的边界框,代码如下,

2024-01-26 20:02:02 81

原创 one-stage/two-stage区别

需要注意的是,以上区别并非绝对,实际使用中需要根据具体需求和场景进行选择。在某些情况下,One-stage方法可能更适合于实时性要求较高的场景,而Two-stage方法则可能更适合于对准确性要求较高的场景。同时,随着深度学习技术的不断发展,One-stage和Two-stage方法也在不断改进和优化,未来的发展趋势可能会更加注重两者的融合和互补。One-stage和Two-stage是目标检测中的两种主要方法,它们在处理速度和准确性上存在显著差异。

2024-01-26 18:29:34 550

原创 PointPillars代码详解及实现

SourceURL:file://文字文稿1和2D图像的深度学习目标检测很不相同,点云数据具有两个显著特征,为了将图像领域卷积神经网络做模式识别的经验引入三维点云中,一些深度学习方法采用了三维卷积方法或者是将点云投射为2维深度图,还有一类方法是使用鸟瞰视角Bird’s Eye View,来组织点云数据的输入,相比于2维深度图,鸟瞰图不存在遮挡问题但是数据分布更加稀疏造成网络特征学习效率低下。

2024-01-26 17:29:45 224

原创 Qt+ROS+ubuntu18.04配置教程(带界面)

首先安装ROS Qt Creator Plug-in,这其实是一个带有ROS插件的Qt Creator:去下面的网址https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html#qt-installer-procedure,根据自己的ubuntu版本选择对应的下载版本,有在线安装和离线安装两种安装方式,以18.04为例: 选择在线安装,会下载一个名叫eator-ros-bionic-latest-onlin

2023-12-03 20:05:14 306

原创 gstreamer读取v4l2

其中,device参数指定了要读取的v4l2设备节点,video/x-raw指定了输出的视频格式,xvimagesink指定了视频的显示方式。

2023-11-30 11:09:01 299

原创 详细介绍NDT与ICP各自优劣势,以及之间的区别

ICP算法则直接使用点云数据,并适用于点云之间存在较小变形和噪声的场景,例如室内环境、车辆周围环境等。在点云数量较少时,ICP算法的计算速度较快,但在点云数量较多时,其计算复杂度会急剧增加,计算速度会变慢。NDT的优势在于其能够处理大型点云数据,并且对数据噪声和变形不敏感。然而,对于结构化点云,NDT对一块栅格高斯分布的假设不成立,效果可能不佳,这时点线ICP(2D)或点面ICP可能效果更好。至于区别方面,ICP算法在处理点云数据时需要直接使用原始的点云数据,而NDT算法则需要进行栅格化处理。

2023-11-29 08:15:52 708

原创 yoloV5模型中,x,s,n,m,l之间区别

YOLOv5 的不同变体(如 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 和 YOLOv5n)表示不同大小和复杂性的模型。这些变体在速度和准确度之间提供了不同的权衡,以适应不同的计算能力和实时性需求。适用于需要极高准确度的任务,且具有强大计算能力(如 GPU)的设备。YOLOv5n 在保持较快速度的同时,提供适用于边缘设备的准确度。YOLOv5m 在速度和准确度之间提供了较好的平衡,适用于具有一定计算能力的设备。在选择合适的模型时,主要考虑设备的计算能力和任务对准确度的要求。

2023-11-23 10:49:24 694

原创 YOLOv5 detect.py参数原理解析

当调用 --exist-ok 时,每次启动检测时,检测的结果不会再创建新的文件夹,而是将结果存放在在目前已有文件夹中。IoU是两个区域重叠的部分除以两个区域的集合部分得出的结果,通过设定的阈值,与这个IoU计算结果比较。例如:–classes 5 :只检测5这类目标,5在yolov5中给的对应的类别为车。例如:–classes 0 :只检测0这类目标,0在yolov5中给的对应的类别为人。的官方网址中找到如下图,根据不同的模型进行对比,选择需要的模型进行下载。

2023-11-23 09:14:49 203

原创 国产NPU官方正品3568全套资料

不废话上资源,请接收,有用的请扣一波666

2023-11-18 14:32:58 147

原创 Docker安装与应用全套讲解

可参考tips: 已测可行环境# 查看CentOS系统版本# 配置yum源# 通过yum源安装docker# 指定版本安装# 启动docker# 重启docker# 开机自启# 设置开机自启 & 现在启动# 查看运行情况# 测试。

2023-11-18 14:22:41 104

原创 CVPR 2022 论文和开源项目合集

基于激光雷达点云的3D目标检测算法有很多种方法:传统聚类方法,点云、体素化、柱状化,RangeView、BirdEyeView,多帧、多视图,OneStage、TwoStage,AnchorBased、AnchroFree、关键点、中心点、Voting、与分割结合、结合反射强度与线束角、转为深度图,知识蒸馏、Transformer、Atteintion、半监督,2DCNN、3D稀疏卷积、图卷积,与Camera图像数据数据融合、特征融合。

2023-10-17 11:21:06 91

原创 因子图及GTSAM库介绍

在 slam 的后端优化问题中,我们通常会通过一些传感器的观测,比如视觉特征点, IMU 预积分量, Lidar面点和边缘点的约束去构建一个优化问题,求解状态量(如位姿、速度等),这个时候我们考虑一个问题,当给这个系统新增一个约束时,我们就会重新对所有的约束的状态的优化问题进行求解,当图优化模型增大时,显然进行一次优化的时间也会增加很多,一方面实时性遭遇了挑战,另一方面,很久之前的状态似乎也没有继续更新的必要。为了解决这个问题,一种方式是使用滑动窗口。

2023-10-17 11:16:41 410

原创 计算机视觉开源代码汇总

论文地址:**[https://arxiv.org/ftp/arxiv/papers/2303/2303.13194.pdf](https://link.zhihu.com/?* 论文地址:**[https://arxiv.org/pdf/2303.13845.pdf](https://link.zhihu.com/?* 论文地址:**[https://arxiv.org/pdf/2303.14158.pdf](https://link.zhihu.com/?

2023-10-17 11:16:11 928

原创 ROS/ROS2-Ubuntu安装ros(一键搞定)

话不多说,直接终端输入如下指令\n\n回车之后系统会自动安装ros。这几天在安装ros,然后发现可以一键安装,

2023-10-16 19:51:43 509

原创 git操作说明

rejected] master -> master (fetch first) error: 无法推送一些引用到 '[email protected]:king-shuai/unmanned_vehicle_8026.git' 提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。解决方法: $ git pull --rebase origin master 如果出现下列现象, 则再执行下列代码: git push origin master 就能成功将文件提交到远程仓库了。

2023-10-16 16:30:56 253

原创 3D激光SLAM是用LOAM还是LeGo-LOAM?

激光slam中,LOAM(Lidar Odometry and Mapping in Real-time)系列具有举足轻重的地位。下面的表格是近年来LOAM系列算法的汇总。

2023-07-11 13:51:21 170

原创 指针与引用的区别以及使用场景

引用从本质上讲是一个别名,是另一个变量的同义词,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化(先有这个变量,这个实物,这个实物才能有别名),而且其引用的对象在其整个生命周期中不能被改变,即自始至终只能依附于同一个变量(初始化的时候代表的是谁的别名,就一直是谁的别名,不能变)。指针从本质上讲是一个变量,变量的值是另一个变量的地址,指针在逻辑上是独立的,它可以被改变的,包括指针变量的值(所指向的地址)和指针变量的值对应的内存中的数据(所指向地址中所存放的数据)。则使用指针或者引用。

2023-07-10 17:17:21 274

原创 点云配准算法综述-完整解读

基于优化的配准是利用优化策略估计变换矩阵。大多数基于优化的配准方法[104]、[54]、[78]、[15]包含两个阶段:对应搜索和变换估计。图(a)总结了这一类别的主要过程。

2023-05-29 15:28:44 792 1

原创 使用Systemback克隆Ubuntu系统一键迁移

这⾥选择Live模式镜像原因(“转存为光盘镜像”按钮不可⽤)是ISO镜像⽂件不能⼤于4G,⽽我们要克隆的系统很可能会超过4G,关于如何制作 超出4G的ISO⽂件,也有解决办法,有点复杂,这⾥未做尝试,可以参考:解决systemback ⽆法⽣成超过4G的iso的问题。接着选中刚才创建好的镜像⽂件、选中待写⼊的U盘(U盘为ext4格式,如果未读出,点刷新按钮),点击“向⽬标设备写⼊”,开始刻录U盘。输⼊镜像名称,勾选“包含⽤户数据⽂件”,点击“创建新的”镜像,等待完成。直接点击“创建Live系统”,进⼊。

2023-05-20 17:23:02 1336

原创 Ubuntu22.04安装ros(一键搞定)

然后发现可以一键安装,话不多说,直接终端输入如下指令。回车之后系统会自动安装ros。

2023-05-19 17:19:56 1904 1

原创 在PC端的Ubuntu中导入RKNN docker镜像

本文总结了如何部署Docker Engine环境及如何导入RKNN官方打包好的docker镜像。仅供参考,文中如有错误请各位指正。

2023-05-19 17:03:22 385 1

原创 Docker CE 软件仓库镜像使用帮助-清华大学开源软件镜像站

Docker 提供了一个自动配置与安装的脚本,支持 Debian、RHEL、SUSE 系列及衍生系统的安装。如果你之前安装过 docker,请先删掉。发行版:centos/rhel。发行版:ubuntu。发行版:debain。

2023-05-19 10:34:23 762

原创 UTM坐标和WGS84坐标转换以及2000坐标系和WGS84的关系

引入了“实现不同”的概念后,就可以合理的解释这些坐标之间的区别了。通常所说的这两个坐标系差几厘米的含义,其实指的是CGCS2000与WGS84参考框架的理论差异,而不是用户坐标之间的差异。以上就是CGCS2000坐标系和WGS84坐标系的区别联系详细说明,主要包括了坐标系关系、参考椭球关系、坐标实现方式、地基框架与天基框架、坐标值差异、坐标实现差异等功能。(2)即便同在2000.0历元,如果WGS84坐标是米级精度,CGCS2000坐标是厘米级精度,不能说米级精度坐标和厘米级精度坐标只差几厘米。

2023-05-18 17:44:59 1537

原创 OpenCV中的鱼眼相机模型详解

【代码】OpenCV中的鱼眼相机模型详解。

2023-05-11 09:14:16 662

原创 深度学习基于摄像头和激光雷达融合的3-D目标检测

深度学习基于摄像头和激光雷达融合的3-D目标检测

2023-05-11 09:08:39 101

原创 C++11多线程join()和detach()的理解

每一个程序至少拥有一个线程,那就是执行main()函数的主线程,而多线程则是出现两个或两个以上的线程并行运行,即主线程和子线程在同一时间段同时运行。主线程先运行结束子线程先运行结束主子线程同时结束在一些情况下需要在子线程结束后主线程才能结束,而一些情况则不需要等待,但需注意一点,并不是主线程结束了其他子线程就立即停止,其他子线程会进入后台运行。

2023-05-04 13:54:59 2517

原创 C++程序编译之谜(一)——多文件编译的奇怪现象

动态链接并没有说把库文件的代码插入到可执行文件中,而是在运行的时候链接库中的函数再加载到可执行文件中,也就是说运行的时候发现调用的函数是在动态库中,那么才去巴拉巴拉的加载。首先我猜测他们都是在window平台执行的,并且是用IDE来编译的,而不同的IDE功能都各不相同,有些IDE非常的智能,它可能会根据在main文件中导入的h文件自动去寻找对应的cpp文件,比如像上面我在main.cpp文件中导入了add.h的头文件,那么IDE会自动去寻找看看是否有add.cpp文件,有的话进行编译、链接,输出结果。

2023-05-04 13:33:31 419

原创 C++ STL快速入门

容器也是顺序容器的一种,它是双向链表,所以不支持随机访问(就是不能用数组下标也不能用"

2023-05-04 10:29:17 319

原创 C++11多线程编程——死锁问题

thread1中的mt2在等待着thread2的mt2释放锁,而thead2中mt1却也在等待着thread1的mt1释放锁,互相都在等待着对方释放锁,进而产生了死锁。那么既然在最前面就已经上锁了,后面就不需要上锁了,而C++标准库并没有提供std::unlock()的用法,所以还是需要用到lock_guard,但是需要修改一点。这个就是死锁的一些解决方法,同时大家一定要记得尽量不要一段定义域内多次使用互斥锁,如果不可避免的要使用,一定要记得给锁定义顺序,或者使用要使用std::lock()上锁。

2023-05-04 10:19:17 654

原创 C++11多线程编程——信号量的实现

信号量里面用到了一个叫PV操作的东西,P操作时阻塞,一般用wait()函数,V操作是唤醒,一般用singal()函数,至于不叫WS操作,反而为什么叫PV操作呢?这里我也不得不提一句,条件变量和互斥锁组合使用真的非常强大,生产消费者模型中用到了,线程池中用到了,现在说的信号量也用到了,所以大家一定要好好掌握条件变量和互斥锁的使用,它们俩是你在多线程世界中纵横捭阖的利剑。假设先开始跑funA,执行到sem.wait()的时候,进入wait函数可知,count减1,小于0,会发生阻塞,等待其他线程唤醒。

2023-05-04 10:16:05 1939

原创 C++11多线程编程——线程池的实现

学一门新技术,还是要问那个问题,为什么我们需要这个技术,这个技术能解决什么痛点。

2023-05-04 10:10:50 465

原创 C++11多线程编程——生产消费者模型之条件变量

在生产消费者模型当中,肯定都会用到互斥锁的机制的,当生产者往队列中放数据的瞬间,消费者是不能取数据的,那这时候可能会碰见一个问题,如果生成者因为某些原因,放数据过慢,但是消费者取数据很快,当队列中没有数据了,消费者还去取的话,就会发生异常情况。在很多情况下,这都容易适用,但是有些情况下,却会产生一些异常情况。这时候我们设想,能否设计这样的一种机制,如果在队列没有数据的时候,消费者线程能一直阻塞在那里,等待着别人给它唤醒,在生产者往队列中放入数据的时候通知一下这个等待线程,唤醒它,告诉它可以来取数据了。

2023-05-04 10:03:02 404

原创 C++11多线程编程——原子操作

这纯粹就是C++这门语言的特性所决定的,C++这门语言是为性能而生的,它对性能的追求是没有极限的,它总是想尽一切办法提高性能。互斥锁是可以实现数据的同步,但同时是以牺牲性能为代价的。可以看到,我们在这里只需要定义atomic_int total(0)就可以实现原子操作了,就不需要互斥锁了。而性能的提升也是非常明显的,这就是原子操作的魅力所在。虽然很无奈,但这也是没有办法的,因为只有在保证准确的前提才能去追求性能。我们将一个数加一再减一,循环一定的次数,开启20个线程来观察,这个正确的结果应该是等于0的。

2023-05-04 09:46:37 95

原创 C++11多线程编程——lock_guard和unique_lock

这个会在构造函数加锁,然后可以利用unique.unlock()来解锁,所以当你觉得锁的粒度太多的时候,可以利用这个来解锁,而析构的时候会判断当前锁的状态来决定是否解锁,如果当前状态已经是解锁状态了,那么就不会再次解锁,而如果当前状态是加锁状态,就会自动调用unique.unlock()来解锁。所以,以上两种加锁解锁的方法,加上前面文章介绍的mutex方法,具体该使用哪一个,要依照具体的业务需求来决定,当然mt.lock()和mt.unlock()不管是哪种情况,是肯定都可以使用的。

2023-05-04 09:31:47 210 1

原创 C++11多线程编程——互斥锁mutex用法

大家可以看到产生了一个很奇怪的现象,按理说输出“print thread:”之后应该跟着i的值,但是i的值却跑到“print main:”的后面了,这显然不是我们能要的结果,那为什么会这样呢?那么C++如何实现加锁的过程的呢?这个代码之前,在前面锁住一下,当线程B想来抢夺控制权的时候,发现这个地方已经被上锁了,无法抢夺,在需要加锁的地方,调用metex的lock()方法,解锁的地方unloc()方法,这样就可以顺序的输出了所需要的结果了。以上就是C++中关于互斥锁的机制,相当的简单容易理解。

2023-05-04 09:25:02 360

原创 C++11学习- CPU多核与多线程、并行与并发

随着计算机编程频繁使用,关于CPU的处理性能的讨论从未停止过,由于我最近在学习多线程相关的知识,那么就来理一理CPU的核心问题。

2023-04-28 15:18:17 1833 1

原创 C++高并发多线程学习

1 创建std::thread,一般会绑定一个底层的线程。若该thread还绑定好函数对象,则即刻将该函数运行于thread的底层线程。2 线程相关的很多默认是move语义,因为在常识中线程复制是很奇怪的行为。3 joinable():是否可以阻塞至该thread绑定的底层线程运行完毕(倘若该thread没有绑定底层线程等情况,则不可以join)4 join():本线程阻塞直至该thread的底层线程运行完毕。

2023-04-28 14:45:43 1069 1

原创 100%ROS问题解决:ERROR: cannot download default sources list from:https://raw.githubusercontent.com/ros/

rosdep init 遇到这个问题。

2022-11-17 13:52:06 359

yolov5-annotations-master最详细的解析清晰

yolov5_annotations-master最详细的解析清晰

2023-11-23

# End-to-end Pseudo-LiDAR for Image-Based 3D Object Detection Th

图像+lidar融合目标检测

2023-10-17

ubuntu系统一键安装QT,解决一切问题,解决官网提供的安装失败问题

qtcreator-ros-bionic-latest-offline-installer,解决官网提供的安装失败问题

2023-10-17

3D点云目标检测的两个发展方向综述

3D点云目标检测的两个发展方向综述,详细讲述 模型原理与发展方向,以及模型准确度与处理数据量

2023-10-16

空空如也

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

TA关注的人

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