自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

非晚非晚的博客

一往无前,爱我所爱,生命不息,折腾不止!

  • 博客(226)
  • 资源 (1)
  • 收藏
  • 关注

原创 【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

的大小,实际上源代码也是这么做的。最后将得到两个分支的特征进行。,第一个特征使用卷积降低通道数即可,第二个则需要反卷积来提升。所以backbone只有两个分支,都是5个卷积模块组成。的长和宽都减半至90,然后在经过5个相同的。将通道降至128,后面再接5个相同的。,将通道数128上至256,并且将。特征进行融合,这里使用的。部分由两部分组成,分别是。,这个分支首先经过第一个。,然后再卷积得到 =>提取特征,最后得到特征。得到了两个大小不同的。

2024-08-29 13:33:54 855

原创 【MIT-BEVFusion代码解读】第三篇:camera的encoder部分

camera的encoder主要有3部分,分别是backboneneck和vtransform部分。其中backbone使用neck使用vtransform部分使用的是,如下所示。fill:#333;color:#333;color:#333;fill:none;使用使用使用backboneneckvtransform调用的顺序分别为,具体代码如下所示。

2024-08-29 13:30:27 1560

原创 【MIT-BEVFusion代码解读】第二篇:LiDAR的encoder部分

稀疏卷积常用于3D项目(如3D点云分割)中,由于点云数据是稀疏的,无法使用标准的卷积操作。同理,2D任务中,如果只处理其中一部分像素,也需要使用稀疏卷积,这样有助于模型加速。​ 本质上就是通过建立哈希表,保存特定位置的计算结果。稀疏卷积和普通卷积没有区别,最重要的区别在于卷积的数据的存储方式和计算方法,这种计算方法可以增加计算稀疏点云的效率,其他的都是完全相同的(但SubMConv3d还是稍微有点区别的,只有中心kernel覆盖值才计算),唯一多了一个indice_key,这是为了在indice。

2024-08-15 14:39:52 1706

原创 【MIT-BEVFusion代码解读】第一篇:整体结构与config参数说明

模型BEVFusion,内部包含四个模块。encoderfuserdecoder和head。它们之间的流程图如下所示。下面就这四部分的主要参数进行简要说明,具体的流程会在后续的文章展开。

2024-08-15 14:22:56 1511

原创 MIT-BEVFusion训练环境安装以及问题解决记录

训练代码对pytorch有要求,所以需要找到对应的CUDA版本,这里我安装的是11.3版本。也可能是cuda与torch版本不匹配,需要进pytorch官网查询对应版本。照抄就行,经过验证。如果你的cuda不是11.03,可以进入。:yapf包的版本问题,降低为yapf==0.40.1。下载安装openmpi,要不然会报mpi错误。:setuptools版本过高导致。:setuptools版本过高导致。查询需要安装的torch版本。

2024-08-09 15:29:26 774

原创 【论文阅读】ICRA 2023|BEVFusion:Multi-Task Multi-Sensor Fusion with Unified Bird‘s-Eye View Representation

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation发表单位:MIT发表期刊:ICRA 2023多传感器融合对于准确和可靠的自动驾驶系统至关重要。最近的方法基于点级()融合方法:使用图像特征对激光点云进行增强。但是,相机到激光()投影的方法丢掉了图像的语义密度,特别对于3D场景分割任务。在本文中,我们使用BEVFusion。

2024-08-09 11:49:12 1419 1

原创 愉快的使用vscode刷leetcode,开启摸鱼新高度

然后输入手机号(邮箱也可以)和cookie就行了,如何找到对应的cookie呢?就行,复制上图所示的cookie,然后回到vscode粘贴就可以登录了。插件扩展中搜索LeetCode,一般刚开始都是第一个,如下图所示。下载相应的安装包,一路next即可。这里可能会有很多的graphql,找到。下载相应的安装包,如下所示。点击下方的网络小球,切换成。

2024-01-25 14:15:06 1917 1

原创 git使用过程中出现乱码的解决办法

Linux和Windows的解决办法不一。在终端依次运行以下命令即可。打开Bash终端,右键选择。,最后在Locale中选择。Linux的解决方案。,在弹出的界面中选择。

2023-09-27 16:44:57 1801

原创 Open3D与numpy点云数据格式相互转换

对于python,Open3d读取点云数据是一种很方便的利器,而对于数据处理,numpy同样是一种不可避免的工具。下面我们介绍一下这两种格式的数据怎么实现互相转换。

2023-06-27 09:33:05 757

原创 mmdetection3d报错问题解决汇总

当在mmdetection3d上添加了新的网络结构之后,使用多GPU运行程序时,会报以下错误。ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0 (pid: 333) of binary: /opt/conda/bin/pythonTraceback (most recent call last):

2023-06-14 14:13:39 11401 2

原创 c++中map/unordered_map的不同遍历方式以及结构化绑定

方式一:值传递遍历方式 二:引用传递遍历方式 三:使用迭代器遍历方式 四:结构化绑定(c++17特性)结构化绑定示例(1)元组tuple结构化绑定(2)结构体结构化绑定(3)数组结构化绑定(4)普通变量结构化绑定

2023-03-01 14:58:44 2215

原创 windows安装Ubuntu子系统以及图形化界面记录

工作中大部分时间在用win和ubuntu的双系统,虽然能应付大部分工作,但是遇到频繁切换环境时,还是比较烦的,所以乘着周末时间研究了一下WSL系统。1. windows环境设置打开开发者模式电脑桌面右键选择显示设置->搜索开发者设置->打开开发人员选项开关。如下图所示。启用子系统功能,控制面板->程序->程序和功能->启动或光比Windows功能->适用于Linux的Windows子系统。勾选之后可能需要重启。

2023-02-25 17:00:58 7318 3

原创 shell脚本空行造成“: not found.sh“报错的解决方法(unix与windows文本格式切换)

编码,在写shell脚本的时候,在windows的上开发后,上传到服务器,可能会有。当我们在linux系统中启动shell脚本,有时会遇到。因为我们在windows编写或修改后的脚本是。编码,而正常的在Linux系统中执行的是。vscode界面的右下角有。方法二:vscode。

2023-02-23 21:16:56 2584

原创 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。

2023-02-16 14:22:27 14085 3

原创 【CUDA编程】CUDA内存模型

thread:每个线程都用自己的registers(寄存器)和local memory(局部内存)block:每个线程块(block)内都有自己的shared memory(共享内存),所有线程块内的所有线程共享这段内存资源grid:每个grid都有自己的global memory(全局内存),constant memory(常量内存)和texture memory(纹理内存),不同线程块的线程都可使用。其中常量内存和纹理内存为只读内存空间。

2022-11-04 15:33:08 2637

原创 【cuda编程】CUDA中的atomic原子操作

所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位。CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程。在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正确性。

2022-10-31 11:30:56 5658

原创 【cuda编程】CUDA中计算程序耗时

在我们日常使用CUDA优化程序时,为了方便分析,经常会统计自己写的程序耗时情况。一般情况下,可以使用C/C++的CPU方式,另外一种则选择则是使用CUDA的事件方式。

2022-10-31 11:26:57 1822 1

原创 【cuda编程】CUDA的运行方式以及grid、block结构关系

从GPU至线程的关系依次为:显卡(GPU)->网格(grid)->线程块(block)->线程(thread) 。从网格开始最大为3维,当然也可以1维了。网格(grid):一个内核函数(kernel)就是一个网格,里面所有线程都在这个网格范围内,里面的线程共享全局内存空间线程块(block):一个网格可以包含很多个block,block之间可以通过“同步”和“共享内存”进行协作,block之间的区分通过“blockIdx”线程(thread):一个线程块可以包含很多个thread,thread之间区

2022-10-26 13:54:24 4114

原创 python正则化表达式

1. 正则表达式的模式——pattern2. 正则表达式常量——修饰符(1)常量理解(2)re.IGNORECASE(3)re.ASCII(4)re.DOTALL3. 正则表达式函数(1)查找一个匹配项——match、search和fullmatch(2)查找多个匹配项——findall、finditer(3)分割——split(4)替换——sub、subn(5)编译正则项——template、compile(6)其他——escape、purge4. 一些简短示例.........

2022-07-19 21:09:11 3667 1

原创 openpcdet之pointpillar代码阅读——第三篇:损失函数的计算

0. 检测头的设计1. 损失计算的理论2. 生成anchors3. GT与anchor的匹配4. box编码5. 损失函数设计Pointpillars使用了和SECOND相同的损失函数。每个三维目标检测框可以用7个变量来描述

2022-07-18 08:23:18 4150

原创 openpcdet之pointpillar代码阅读——第二篇:网络结构

上一篇文章,我们讲了数据增强和数据处理,并且我们得到了相应的pillar数据。下面我们继续讲pointpillar中的网络结构。随后经过VFE之后,就可以把原始的点云结构(N*4)(N∗4)变换成了(D,P,N)(D,P,N),其中 D代表了每个点云的特征维度,也就是每个点云10个特征(论文中只有9维),P代表了所有非空的立方柱体,N代表了每个pillar中最多会有多少个点。具体操作以及说明如下............

2022-07-14 13:34:35 4183

原创 openpcdet之pointpillar代码阅读——第一篇:数据增强与数据处理

1. 数据增强1.1 gt数据采集——gt_sampling1.2 全局翻转——random_world_flip1.3 全局旋转——random_world_rotation1.4 全局尺度变换——random_world_scaling2. 数据处理2.1 数据范围限制2.2 点云随机2.3 点云变换至pillar3. 数据收集——datalodar...............

2022-07-13 13:42:28 5646 8

原创 深度学习模型参数量以及FLOPs计算工具

深度学习模型参数量与FLOPs计算工具介绍

2022-07-12 21:21:30 3171

原创 pytorch中copy_()、detach()、data()和clone()操作区别小结

clone创建一个tensor与源tensor有相同的shape,dtype和device,不共享内存地址,但新tensor(b)的梯度会叠加在源tensor(a)上。需要注意的是,b = a.clone()之后,b并非叶子节点,所以不可以访问它的梯度。detach()函数返回与调用对象tensor相关的一个tensor,此新tensor与源tensor共享数据内存(那么tensor的数据必然是相同的),但其requires_grad为False,并且不包含源tensor的计算图信息。...

2022-06-20 17:23:26 2878 1

原创 pytorch中使用add_module添加网络子模块

之前有一篇文章介绍了使用Sequential、ModuleList和ModuleDict添加网络,除此之外,我们还可以通过add_module()添加每一层,并且为每一层增加了一个单独的名字。add_module()可以快速地替换特定结构可以不用修改过多的代码。add_module的功能为Module添加一个子module,对应名字为name。使用方式如下...

2022-06-15 11:47:55 5440

原创 pytorch中model.eval()和torch.no_grad()的区别

在PyTorch中进行validation时,会使用model.eval()切换到测试或者称为验证模式下。model.eval()仅作用于dropout层和batchnorm层,让其与训练状态不同,相当于 dropout的参数为0 ,batchnorm也 不再更新和计算 mean和var值,而是使用训练阶段学习到的mean和var。...

2022-06-07 17:12:11 1423

原创 上采样、下采样以及Pytorch中的卷积与反卷积(转置卷积)方法介绍(conv2d和convTranspose2d)

卷积操作可以压缩整合图片特征,让[通道, 宽, 高]分别为[c,h,w][c,h,w]的特征图片通过Conv2d。变为更多的通道(维度)cc,更小的尺寸[h,w][h,w]。也就是说,当输入为一组图片[n,c,h,w][n,c,h,w]格式时,输出也为[n,c,h,w][n,c,h,w]格式。转置卷积,也称为反卷积(deconvlution)和分部卷积(fractionally-strided convolution)。为卷积的逆操作,即把特征的维度压缩,但尺寸放大。注意它 不是真正意义上 的卷积的逆操作。

2022-05-30 09:43:51 13106 3

原创 【点云处理技术之open3d】第五篇:使用Open3d在点云中添加文字label

官网提供了add_3d_label方法,同时也给出了绘制label的案例,代码还是比较简单的,直接看代码就可以理解了。下面对代码进行简要的说明:代码中提供了两种绘制label信息的方式,分别为函数high_level()和low_level(),两种方法都可以,根据自己的需求选择。make_point_cloud函数为随机生成npts个点云。o3d.utility.Vector3dVector方法为将numpy格式的数据转换为open3d格式的点云数据。

2022-05-24 18:15:00 4707 1

原创 pcl_viewer的使用小记

虽然有很多查看点云的方式,但是要说在linux系统下,最简单快捷的方式还得说是pcl_viewer,在此记录一下自己觉得还挺好用的几点pcl_viewer操作。 1. pcl_viewer安装2. 查看点云以及相应的快捷键3. 查看点云的坐标4. 启用xyz轴5. 一次打开多个pcd文件

2022-05-23 17:45:00 11812 5

原创 python中的继承关系详解

子类继承了父类中的属性和方法,也就是说,可以直接使用 子类的实例访问父类中的属性和方法 。下面的例子中,子类中虽然没有实现任何方法和属性,但是它依然可以访问父类中的属性和方法。子类的 __init__()方法会覆盖父类的 __init__()方法 ,也就是说子类中有__init__()方法时,如果不手动写名,子类不会去调用父类中的__init__()方法。...

2022-05-18 23:15:08 3863 1

原创 OpenPCDet v0.5版本的安装与测试

OpenPCDet更新了最新版本v0.5,同时也支持open3d。因为之前也没怎么用过mayavi,本来还想基于openpcdet 0.3版本,自己写一个open3d的显示,看到官方更新了一个最新版,果断安装最新版使用了,效果还不错,于是写一个相关的使用教程吧。...

2022-05-16 18:01:07 2238 1

原创 pytorch中涉及cuda的使用介绍

1. 设置可见GPU的个数2. GPU的常用操作(1)常用操作列表(2)torch.cuda.is_available()(3)设置GPU默认使用编号3. 在GPU上使用数据3.1 直接创建法3.2 CPU转移至GPU(1)方法一:tensor.to()(2)方法二:tensor.cuda()(3)方法三:tensor.type()(4)方法四:torch.from_numpy(np_labels).cuda()4. 一般哪些对象可以使用GPU(1)网络模型 (module)(2)数据(3)损失函数

2022-05-15 18:00:00 7760 1

原创 python调试之pdb调试工具

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括 设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量 的值等。

2022-05-12 21:46:55 6359 2

原创 机器学习中常见的评价指标总结

1. 评价指标的种类2. 分类任务的评价指标2.1 分类任务的一些概念(1) 交并率(IoU, Intersection over Union)(2)TP、FP、FN、TN与混淆矩阵2.2 准确率(Accuracy)2.3 精确率与召回率(Precision , Recall)2.4 F1分数2.5 G分数2.6 AP和mAP2.7 ROC与AUC(1)ROC(2)AUC3. 回归任务的评价指标3.1 MSE3.2 MAE3.3 RMSE

2022-05-09 19:51:02 12183

原创 python中的命名空间、作用域、全局变量与局部变量

1. 命名空间2. 作用域3. 全局变量与局部变量(1)局部变量可以访问全局变量(2)全局变量不能访问局部变量(3)局部变量修改全局变量(4)局部变量修改嵌套作用域(5)局部变量与嵌套变量互不影响命名空间提供了在项目中避免名字冲突的一种方法。各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。Python 中,程序的变量并不是在哪个位置都

2022-05-07 09:19:59 695

原创 【opencv之python版】图像的读取、显示、保存、像素遍历以及结合matplotlib使用

在opencv的C++代码中,表示图像有专门的结构cv::Mat,在python中有numpy工具可以使用。1. 图像的表示2. 图像读取、显示与保存3. 简单使用3.1 读取图像大小3.2 绘制基本图像3.3 元素遍历4. 结合Matplotlib显示图像

2022-05-02 21:38:59 4734 1

原创 ROS中的日志log消息与ROS终端的不同颜色输出

ROS自带了大量的能够输出调试信息的函数和宏,包括错误,警告等.它提供了如信息级别,条件触发消息和STL的流接口等方式。1. 日志消息1.1 rosout的日志1.2 日志文件2. 日志等级2.1 基础介绍2.2 举例2.3 设置日志级别3. ROS日志其它说明3.1 单次输出3.2 设置输出频率4. ROS终端颜色输出

2022-04-30 21:43:32 4104

原创 python的一些常用内置函数(内建函数)详解

1. getattr、hasattr、setattr和delattr(1) getattr(2) hasattr(3) setattr(4) delattr2. isinstance3. eval4. enumerate5. zip6. vars7. format和f8. slice

2022-04-25 18:33:52 1650

原创 PyTorch中的Sequential、ModuleList和ModuleDict用法总结

nn.Sequential内部实现了forward函数,因此可以不用写forward函数。而nn.ModuleList和nn.ModuleDict则没有实现内部forward函数。nn.Sequential需要严格按照顺序执行,而其它两个模块则可以任意调用。

2022-04-11 22:49:15 9306 3

原创 【点云处理技术之open3d】第四篇:使用open3d绘制常用类型——箭头、圆柱、长方体、球形、箭头、坐标轴和线条

1. 绘制圆锥2. 绘制圆柱3. 绘制长方体4. 绘制球形5. 绘制箭头6. 绘制坐标轴7. 绘制多边形和顶点可以通过o3d.visualization.Visualizer()添加我们需要的组件,我们在下面使用了vis.add_geometry添加了边和点,同样也可以使用它添加上面讲到的长方体、球形等。

2022-04-07 18:45:00 14996 3

ORB-SLAM2和ORB-SLAM3超详细中文注释版本.zip

ORB-SLAM 它是一个完整的 SLAM 系统,包括视觉里程计、跟踪、回环检测,是一种完全基于稀疏特征点的单目 SLAM 系统,同时还有单目、双目、RGBD 相机的接口。资源包含ORB-SLAM2和ORB-SLAM3详细的中文注释版本的源码。

2021-03-31

空空如也

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

TA关注的人

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