自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MAX的专栏

记录技术成长,分享改变世界

  • 博客(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

原创 docker环境添加安装包持久性更新

3、不要退出docker,新开终端,给当前环境从新打包更新镜像。1、进入docker 环境。

2025-05-30 15:01:02 460

原创 Open3D上可视化Nuscenes 数据集

nuscenes 数据可视化工具

2025-05-28 18:53:16 688

原创 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

原创 cv::Mat初始化、赋值初始化与访问方式

指定类型和大小的二维数组。2、ptr指针进行访问。缺点:访问速度相对慢。

2024-11-06 15:02:50 886

原创 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

原创 图像筛选去重、去静止

主要使用 structural_similarity 算法判断两张图片的相似度。

2024-10-23 17:45:00 280 1

原创 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

原创 BEV 之 LSS概要

显示估计图像下采样(16倍)后的特征点深度,将2D图像提升到3D空间,得到图像特征的视锥(点云)。

2024-07-10 17:27:43 652

转载 显卡对应的算力表

显卡对应算力。GeForce RTX 3070, 3080, 3090ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]

2024-05-01 23:09:49 5730

原创 C++ 读取 hdf5 格式文件

CMakeLists.txt 修改,完成编译

2024-03-01 16:12:47 882

原创 Zotero 安装

参考链接:

2024-02-01 11:40:49 326

原创 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

原创 openCV上图片显示中文c++

【代码】openCV上图片显示中文c++

2023-06-28 16:55:34 3302

原创 CUDA共享内存详解

对于CUDA,一个grid 有多个Block 块,一个block块多个线程。共享内存只是Block 块内的线程共享,不同Block块之间的共享内存是不会共享的。shared。

2023-06-19 13:04:46 1667

原创 cuda checkCudaErrors

【代码】cuda checkCudaErrors。

2023-05-22 15:21:10 277

verilog数字钟,功能齐全

verilog 数字钟设计,功能齐全 (1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式); (2)可以调节小时,分钟。 (3)能够进行24小时和12小时的显示切换。 (4)可以设置任意时刻闹钟,并且有开关闹钟功能。 (5)有整点报时功能,几点钟LED灯闪亮几下。 (6)有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。

2014-04-23

ubuntu linux 钉钉7.6.0 版本

ubuntu linux 钉钉7.6.0 版本,防止更新最新版本带来截图上的问题

2025-02-26

tensorrt yolo系列 转trt模型plugin

tensorrt yolo系列 转trt模型plugin

2024-11-20

onnx 算子支持查看文档

onnx 文档, 查找onnx算子是否支持

2024-11-20

ONNX模型转 TensorRT logging.h

logging.h

2024-05-12

Zotero 安装包和插件

Zotero 安装包和插件

2024-02-01

中文汉字库,用于opencv 上图片显示中文

中文汉字库,用于opencv 上图片显示中文

2023-06-28

车牌识别数据集(全 省+数字+字母)

总共5万多张图片,大小20X20,包括省份简写,数字和字母,一个不缺。

2019-07-25

车牌识别训练测试字符集(全)

大约5万多张图片,包含中文省份,字母A-Z,数字0-9,全部。

2019-07-30

verilog数字钟源代码

(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式); (2)可以调节小时,分钟。 (3)能够进行24小时和12小时的显示切换。 (4)可以设置任意时刻闹钟,并且有开关闹钟功能。 (5)有整点报时功能,几点钟LED灯闪亮几下。 (6)有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。

2014-04-23

数字钟设计 完整文件

verilog设计完整的数字钟文件,下载到板子上直接可用

2013-03-26

空空如也

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

TA关注的人

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