- 博客(83)
- 资源 (5)
- 收藏
- 关注
原创 PyTorch学习
PyTorch学习路径摘要 本文系统介绍了PyTorch的学习路径,分为基础、进阶、高级和专家四个阶段。基础部分涵盖张量操作(torch.Tensor)和神经网络模块(torch.nn.Module)的核心概念;进阶部分包括线性层、优化器和数据加载;高级部分涉及卷积网络和预训练模型;专家阶段则深入自动微分和分布式训练。重点讲解了torch.Tensor的多维数组特性及其数学运算、索引方法,以及torch.nn.Module的初始化、前向传播和参数管理机制。文章还详细解析了torch.nn.Linear类的结
2025-10-20 13:56:01
909
原创 YOLO系列算法
最后,一个后处理步骤,如非极大值抑制(NMS),过滤掉重叠的预测,只保留置信度最高的检测。骨干网络在不同尺度上捕捉层次化的特征,在较早的层中提取低层次的特征(如边缘和纹理),在较深的层中提取高层次的特征(如物体部分和语义信息)。(5)非最大抑制(Non-Maximum Suppression):在预测的边界框中,可能存在多个相互重叠的框,代表同一个目标。每个边界框由5个主要属性描述:边界框的位置(中心坐标和宽高)和边界框包含的目标的置信度(confidence)。此外,每个边界框还预测目标的类别。
2025-08-04 18:26:30
1859
原创 bevfusion(mit) camera encoder部分代码详解(一)
BEV Fusion通过深度假设将2D图像特征提升到3D空间,实现图像到BEV网格的转换。核心步骤包括:1)使用LSS方法建立视锥空间(H,W,D);2)基于点云获取像素深度;3)通过相机内外参将特征映射到3D坐标;4)使用voxel pooling将特征投影到BEV网格(200×200)。该方法整合了多传感器数据,通过动态坐标转换和特征融合,实现了跨模态的特征统一表达。整个流程包含图像编码、视锥构建、几何坐标转换和BEV特征池化等关键模块。
2025-07-01 17:29:56
969
3
原创 cuda11.8 bevfusion(mit) mmdetection训练环境搭建
3、numpy 提示就是“AttributeError: module ‘numpy’ has no attribute ‘bool’”。安装完后如果出现问题1,再进行修改。
2025-06-25 17:55:34
475
原创 PointPillars 解读
PointPillars 将3D点云经过**体素化**(Voxel)后形成**一系列的pillars**(理解为各种不同的柱子)。最后将3D点云特征变成经典的2D特征图,在2D特征图上进行3D目标检测首先相比图像特征,点云特征是**离散的**、**稀疏的**、**无序的**、点云**数目是不固定**的。**因此要求不同的输入顺序和个数模型输出应该一致** max-pooling 刚好对无序输入不敏感。其次,将点云Voxel 化后分到不同的pillars 中去,**这样点云的无序输入也转变成了固定位置的
2025-06-18 17:46:43
1269
原创 conda环境中 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found(required by....)
首先使用 strings xxx.so | grep GLIBC_XX 查看当前 .so 是否与GLIBC_xxx后面的version是否对应。给我这个虚拟环境加了一个环境变量,此环境变量目录下有libstdc++.so.6, 这样重启 conda 环境,就不再报错。如果 conda 环境中也找不到GLIBCXX_3.4.30,那就要安装升级 gcc。然后conda环境中的libstdc++.so.6。在列表中可以找到GLIBCXX_3.4.30。在列表中找不到GLIBCXX_3.4.30。
2025-05-26 16:04:59
564
原创 BEVFormer详解
BEVFormer 是将Transformer架构的自注意机制与BEV视图中3D检测结合起来的一种纯视觉目标检测方案。对于纯视觉的BEV检测方案,其中的重中之重就是如何将2D的图像特征映射到3D空间的BEV栅格,既然是映射关系,那就有前行投影和反向查询两种机制。前向投影是基于深度估计的方法,参考基于深度估计的BEV视图转换方法,典型代表为LSS。反向查询方法思路为先将BEV栅格在Z方向上进行lift提升,然后再映射到图像特征图上进行特征查询。BEVFormer 就是基于这种机制进行2D图像特征到3D空间的B
2025-04-02 16:12:37
4220
原创 pytorch中常用语法
permute相当于可以同时操作于tensor的若干维度,transpose只能同时作用于tensor的两个维度,permute是transpose的进阶版。X = torch.stack((xs, ys, zs), -1) #-1 表示在最后一个维度上进行堆叠 ,会多出一个维度。于在张量的指定位置插入一个大小为 1 的维度(即扩展维度),具体看None 的位置。于在张量的指定位置插入一个大小为 1 的维度(即扩展维度),与None用法相同。不改变张量的数据,只是增加一个维度。的情况下为数组赋予新形状。
2025-03-28 14:07:42
498
原创 Multiscale deformable attention
deformable attention 灵感来源可变形卷积,先来看看什么是可变形卷积DCN?DCN 论文地址大概就像图中所示,传统的CNN 卷积核是固定的,假设为N = 3 x3,所以邻域9个采样点位置就是固定的。可变形卷积目的就是动态生成这9个采样位置。首先特征图经过卷积层,这个和传统CNN没区别,然后生成与特征图一样大小的位置偏移网络,channel = N * 2,表示在原有9个固定采样点上的x, y 偏移。得到偏移量后再回到原始特征图上进行插值采样,进行采样点卷积,得到当前特征点的输出值
2025-03-13 13:56:48
2278
1
原创 视觉Transformer (deformable DETR)
标准卷积选择周围n * n固定区域计算,可变形卷积在标准区域位置上增加偏移offset(offset 通过学习得到),这样卷积核在训练中可以有很大范围扩展。前面在介绍DETR时提到,DETR在小目标检测上不友好,而且DETR由于是在特征图上进行全局的self-attention 所以计算量很大,十分耗时间。:由于对参考点引入了offset,将参考点与偏移量相加作为边界框预测,降低优化难度。2、每个特征图上采样K个点。可以看到,每个query在每个头部中采样K个位置,只需和这些位置的特征交互。
2025-03-07 01:26:54
1276
原创 视觉Transformer(DETR)
CNN backbone 输出特征图展平 : (B,L ,hidden_dim),B为batchsize, L = H*W 特征图大小,hidden_dim特征向量维度。2、将Q,K,V 送入第一个multihead attention 模块,得到第一个多头输出,shape = (B,num_queries ,hidden_dim)分类全连接:(B, N, num_queries,hidden_dim) -> (B, N, num_queries,,而且是一个可学习的。
2025-03-06 00:06:51
1313
原创 自动驾驶中基于深度估计的BEV视图转换方法
是自动驾驶BEV中核心。其目的就是在BEV 3D空间中的特征如何精准的对应到2D图像的特征上。例如BEV空间中的格子对应的是一个行人,那么希望这个格子所获得的特征就是图像中的2D行人特征,而不是来自其他地方。
2025-02-27 00:36:24
987
原创 自动驾驶之BEVDet
**视图转换是BEV的核心。目的就是如何从图像空间中提取BEV空间所需要的特征。**假如某个BEV格子所对应空间有个锥桶,那么这个格子里填充的一定是用来描述这个锥桶的特征值,而不是远方天空或红绿灯的特征值
2025-02-26 23:26:13
634
原创 自动驾驶之BEV概述
(mean Average Precision)是目标检测中常用的性能指标,它对Precision-Recall(P-R)曲线进行采样,计算每个类别出平均的Precision。有的方法则是针对具体的任务,比如3D物体检测,直接生成稀疏的BEV视图下的感知结果,比如DETR3D和PETR。自动驾驶需要目标在3D空间的位置信息,传统检测为2D图像上检测目标然后IPM投影到3D。输出:BEV视图下的各种感知结果,比如物体,道路,车道线,语义栅格等。与mAP相比,NDS可以更全面的评价3D目标检测算法的优劣。
2025-02-20 00:18:13
1276
原创 Transformer理解
Transformer 最早用于NLP中,它最大的特点就是,使得在处理中表现突出。我们先看一个完整的Transformer 结构框架:Nx 表示有N 个encoder,N个decoder。由多个encoder 和 decoder 堆叠而成。
2025-01-21 11:24:09
681
原创 QAT int8量化(yolov7)
QAT 量化训练是在PTQ 量化后进行微调的过程。相比PTQ 量化,QAT 量化训练多了一个微调后的训练步骤,允许QDQ中的模型scale 和 zero-point发生改变。QAT 量化训练的基本步骤为:先用 yolov7 训练出一个模型 yolov7_last.pt。1、给模型插入QDQ节点自动插入使用 quant_modules.initialize() 自动插入量化节点手动插入使用 quant_modules.initialize() 初始化量化操作或使用 QuantDescriptor()
2025-01-08 19:07:39
625
原创 PTQ int8量化(yolov7)
使用 quant_modules.initialize() 初始化量化操作或使用 QuantDescriptor() 自定义初始化量化操作。根据统计信息,计算动态范围range和scale,保存在QDQ节点中。1、给模型喂数据,收集每个层的输入输出信息。编写代码为模型插入量化节点。
2025-01-07 14:39:30
713
原创 CUDA各种内存和使用方法
例如:blockSize = 128,一个SM有2048个线程,那么一个SM能同时处理16个block。如果SM有96K的共享内存,每个block则分配96 / 16 = 6K,太大其他block无法获得使用。每个SM的共享内存数量是一定的,也就是说,如果在单个线程块中分配过度的共享内存,将会限制活跃线程束的数量;合适分配单个线程块的共享内存,使得SM的使用率最大化,起到加速的作用。特点:存储只读数据,访问速度快,广播式访问。使用:存储线程块中的共享数据,加速线程间的数据处理。使用:频繁访问的常量数据,
2024-12-26 22:18:43
1407
原创 Pytorch自定义算子反向传播
线性函数YXWTBYXWTB定义输入M 个X变量,输出N个Y变量的线性方程组。XXX为一个 1 x M 矩阵,WWW为 N x M 矩阵,BBB为 1xN 矩阵,根据公式,输出YYY为1xN 矩阵。其中 W 和 B 为算子权重参数,保存在模型中。在训练时刻,模型输入XiX_iXi, 和监督值YiY_iYi,根据 算子forward()计算的YipY_{ip}Yip,计算Loss = criterion(YiY_iYi。
2024-11-21 16:11:21
1243
1
原创 pytorch自定义算子导出onnx
1、没有现成可用的算子,需要根据自己的接口重写。2、现有的算子接口不兼容,需要在原有的算子上进行封装。继承类,实现其forward()和backward()方法,就可以成为一个pytorch自定义算子。就可以在模型训练推理中完成前向推理和反向传播。forward() 函数的第一个参数必须是ctx, 后面是输出。在工程部署上,一般为了加快计算,自定义算子需要用cuda 实现forward()、backward()kernel 函数。实现其symbolic 静态方法。
2024-11-20 16:33:13
1734
6
原创 onnx自定义算子转tensorrt 推理
1、自定义算子类继承类,实现forward()和backward()方法,这样就变成一个可导函数可以在pytorch 模型网络中调用。如果只做推理可以不用实现backward。2、实现symbolic静态方法,这样在调用torch.onnx.export()时就能根据symbolic定义的规则,将自定义算子类转换成onnx 算子。说明:symbolic是符号函数,通常在其内部**返回一个g.op()**对象。
2024-11-19 12:06:54
1120
原创 YoloV8-seg 模型tensort推理解析
YOLOV8 实例分割输出两个output, 一个用于实例bbox检测, 另一个用于分割,两者相结合提取实例分割目标结果。
2024-11-18 10:51:56
621
原创 tensort转模型实例(一)
1、通过 解析ONNX 文件创建网络后生成engine文件,这种方式通常是所有算子都被tensort API 支持。2、通过tensort API plugin构建网络。这种方式比较灵活,适合支持自定义算子等等。4、搭建网络:方式一,解析onnx;方式二, plugin 搭建网络。6、序列化到engine模型文件。之前可以设置动态输入之类的。2、使用builder 创建 config。1、创建builder,依赖logger。
2024-10-31 14:31:31
332
原创 ubuntu20.04 上 opencv4 源码编译安装
下载:1、opencv 4.92、opencv_contrilb 4.xsudo apt install -y cmake makesudo apt install -y build-essentialsudo apt install -y libgtk2.0-devsudo apt install -y libavcodec-devsudo apt install -y libavformat-devsudo apt install -y libjpeg-devsudo apt insta
2024-10-12 13:53:44
1025
原创 从BEVPool 到 BEVPool V2
bevpool 是将图像2D 特征经过内外参转换后映射到3D 空间。在LSS 中:输入: 图像特征(NxHxWxC), 深度得分(NxDxHxW)根据内外参构建三维视锥体素索引(NxDxHxW), 根据体素索引计算得到的三维坐标进行映射。把对应深度的图像特征映射到BEV 空间中。对多个图像特征映射到同一个BEV单元的累计求和。
2024-07-17 19:26:35
2102
原创 CMakeLists.txt 中加入 cuda tensorrt opencv编译
【代码】CMakeLists.txt 中加入 cuda tensorrt opencv编译。
2024-07-10 22:45:01
536
转载 显卡对应的算力表
显卡对应算力。GeForce RTX 3070, 3080, 3090ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]
2024-05-01 23:09:49
5730
原创 ubuntu 安装显卡驱动黑屏,自带屏幕和外接屏只能使用一个
例如我的是DELL, 开机F2 进入,在display 那里设置将。1、ubuntu 系统,自带的屏幕和外接显示屏幕只能使用一个。以上说明设备有冲突,与驱动无关,应该到 bios 下设置。安装显卡驱动后,nvidia-smi 驱动显示正常。则自带屏正常使用,外接屏无法识别。
2024-01-04 20:01:21
1443
原创 linux内存空间深度清理
可以看到 .cache .config .ros 占用大量空间。2、清理vscode 在.config中缓存。1、删除.cache 文件夹。
2023-11-17 19:03:58
783
原创 鱼眼图像去畸变python / c++
本文假设去畸变后的图像与原图大小一样大。由于去畸变后的图像符合针孔投影模型,因此不同的去畸变焦距得到不同的视场大小,且物体的分辨率也不同。可以见上图,当焦距缩小为一半时,相同大小的图像(横向投影距离一样长),对应的视场角不同。所以为了扩大视野,需要缩小焦距,
2023-10-25 20:28:20
1842
原创 CUDA共享内存详解
对于CUDA,一个grid 有多个Block 块,一个block块多个线程。共享内存只是Block 块内的线程共享,不同Block块之间的共享内存是不会共享的。shared。
2023-06-19 13:04:46
1667
verilog数字钟,功能齐全
2014-04-23
verilog数字钟源代码
2014-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅