- 博客(55)
- 收藏
- 关注
原创 BEV感知端侧TensorRT Orin 专属内置 Plugin
本文介绍了NVIDIA Jetson/DRIVE Orin平台专属的4个TensorRT插件算子:VoxelPooling、GridSample、DeformableSample和BEVTransform,这些算子专为自动驾驶BEV(Bird's Eye View)算法优化,适用于CenterPoint、PETR、BEVFormer和BEVFusion等模型。这些插件通过算子融合、硬件优化(如TensorCore加速、L2缓存利用)和原生量化支持,显著提升了推理效率。例如,VoxelPooling可将点云处
2026-07-05 12:07:58
4
原创 模型端侧部署之 Nvidia Orin 异构硬件调度
一块芯片 / 设备里包含的计算单元。以 Orin 为例:ARM CPU(通用处理器)、Ampere GPU(通用并行计算)、DLA(专用 AI 固定加速器),三者指令集、内存、擅长任务完全不一样,这就是。: 一套统筹分配机制,把 AI 模型、业务流水线拆分成多个子任务,,让 CPU/GPU/DLA 同时并行干活,不闲置、不频繁跨设备拷贝数据,最终降低端到端延迟、提升硬件利用率、降低功耗。。
2026-07-04 18:58:24
296
原创 模型分析助手,DeepView AI Model Analyzer 完整详解
跨框架大一统,一套工具处理训练、转换、端侧编译全阶段模型;离线静态分析,无 GPU 占用,办公电脑即可批量评估;可视化 + 量化报表 + 优化建议一体化,省去手动计算 FLOPs;提前预判部署瓶颈,避免模型编译后才发现算力不足返工;支持矢量图导出,适合项目文档、论文配图。
2026-07-03 09:27:57
322
原创 BEV感知,Jetson Orin 端侧推理提速实用技巧
cpp运行// C++ VPI多流并行6路相机预处理// 输出device内存直接喂TensorRT输入binding,无host拷贝VPI 支持批量多图像并行,调度 Orin PVA 硬件,比纯 CUDA 快 30%,功耗更低统一使用/device 张量,全程驻留显存,杜绝循环调用不要 CPU 做图像 / 点云预处理,Host<->Device 拷贝延迟通常 > 10msPETR 注意力层不要全局 INT8,会造成 mAP/NDS 大幅下降,必须分层 FP16 保护。
2026-07-02 12:03:37
295
原创 模型端侧适配技能之ONNX 模型拆分
ONNX模型拆分核心技巧:拆分并非单纯提速,而是解决工程痛点的关键手段。典型场景包括异构硬件并行(GPU+CPU/NPU混用)、规避算子不兼容、多任务按需推理、超大模型分片等。主流工具有ONNX原生extract_model(简单网络)、onnx-graphsurgeon(复杂残差网络)和onnxslim(CLI快速操作)。拆分时需注意:避免切割残差连接,优先在框架导出前预拆分,拆分后需校验格式合法性和输出一致性。高频问题包括权重丢失、shape不匹配等,可通过完整复制原图、固定输入维度解决。工具选型建议:
2026-07-02 09:23:31
356
原创 OpenCV + Python 高效组合
手动滑动窗口是 Python 重灾区,全部交给 C++ 卷积python运行# 5x5均值模糊,无需双层循环滑窗:解决切片 / ROI 非连续内存触发 OpenCV 隐式拷贝,视频流收益最大;.astype():全图向量化类型转换,彻底消灭三层像素 for 循环;np.dstack:轻量通道堆叠,单通道转三通道、双通道融合场景比cv2.merge更快。
2026-07-01 17:02:29
377
原创 BEV感知: nuScenes 3D 检测指标
BEV模型训练好后一般都会先基于训练环境进行评测,达到一定标准后才会部署到目标平台,以下基于PETR V1官方模型的评测展开讲解基于 nuScenes 数据集或nuScenes 格式制作的数据集的各项 3D 检测评测指标。以下是PETR V1训练好后的模型验证结果,要说明的是;PETR、BEVFormer、BEVDet、DETR3D、FCOS3D 等所有基于 nuScenes 的相机 3D 检测模型,评测工具、指标定义、计算公式、匹配规则 100% 一致mAP: 0.3778mATE: 0.7463mA
2026-07-01 10:07:18
191
原创 C++ LibTorch 端侧实用技巧(嵌入式 / Jetson / 边缘 Linux,低资源)
1. 是什么LibTorch 是 PyTorch 官方提供的,脱离 Python 环境,纯 C++ 部署训练好的.pth.onnx模型,用于服务器、嵌入式、端侧设备(Linux/Windows/Android/NVIDIA Jetson)。一套代码跨平台,支持 CPU / CUDA GPU / TensorRT 加速;完整复现 PyTorch 张量、算子逻辑,前后端行为对齐;分稳定 Release 版、Nightly 开发版,分 CPU / CUDA 预编译包,无需编译 PyTorch 源码。
2026-07-01 09:16:45
255
原创 OpenCV端侧处理效率提升系列(二): 硬件加速工具(GPU,NPU)
表格模块支持硬件内存容器优势场景性能上限OpenCL oclIntel/AMD/NVIDIA/ 嵌入式 NPUUMat无 N 卡通用加速、轻薄本中等仅 NVIDIA GPUGpuMat单 / 多路图像处理、通用视觉算法极高同上视频流流水线,掩盖传输延迟CUDA 性能倍增VPIVPI ImageJetson 嵌入式低功耗预处理CUDA 之上更低延迟 / 功耗无 NVIDIA 显卡:优先 OpenCL + UMat,最小代码改动实现 GPU 加速;
2026-06-30 10:05:00
329
原创 OpenCV端侧处理效率提升系列(一): setNumThreads 全局线程控制
初始化时机:程序入口 main 函数最开头执行,全局仅调用一次;单进程单路独占 CPU:线程数 = ARM 大核物理数量;进程内图像 + AI 推理混合:2~4 线程;多进程多路视觉:全部进程设为;ARM big.LITTLE 进阶:搭配CPU 亲和绑定大核;小分辨率图像优先串行;上线前通过测速代码对比,选定最优固定线程数,禁用自动探测模式保证时延稳定。
2026-06-30 09:26:32
376
原创 BEV感知:MMCV/MMDetection 系列框架的注册器(Registry)插件化设计
把 2D 图像支路、视图变换、BEV 编码器、时序注意力、3D 检测头、位置编码全部解耦;,是整个框架最底层、最核心的解耦设计,实现「代码实现与配置文件解耦」,新增模型 / 数据集 / 损失无需修改框架主逻辑,仅注册即可通过 config 调用。MM 系列(mmcv、mmdet、mmseg、mmcls 等)整套生态。步骤 4:嵌套构建(MMDet 最常用,多层 Registry 嵌套)位置编码:2D 平面编码 / 3D 栅格编码 / 相机光线编码。方式 2:自定义注册名称(多别名、重名覆盖)
2026-06-29 19:43:28
306
原创 ONNX模型 VS GPU,NPU,TPU
ONNX(Open Neural Network Exchange,开放神经网络交换格式)是一套,解决 PyTorch、TensorFlow、Paddle、Caffe 等框架模型互通、推理部署统一的问题。
2026-06-29 16:01:58
266
原创 Python 多线程、多进程 vs C++ 多线程、多进程
1. 线程层面核心区别Python 致命限制 GIL:解释器层面强制单字节码执行,多线程仅 IO 并发,计算场景失效;C++ 原生内核线程:直接调度 CPU 核心,无任何全局锁,多线程并行算力拉满,是高性能并发基础;两者共性:同进程线程共享内存,都需要互斥锁解决竞争,线程切换开销都远小于进程。2. 进程层面核心区别Python:封装好,屏蔽操作系统差异,内置成熟 IPC 工具,上手简单;代价是每个进程独立解释器,内存占用高;
2026-06-29 14:24:11
189
原创 BEV感知,基于源码展示PETR V1 与 PETR V2 差异
本文对PETR系列3D目标检测模型的两个版本(V1和V2)进行了系统对比分析。研究发现PETRV2并非革命性重构,而是在V1基础上通过增量式演进实现的性能提升,主要体现在三个关键改进:1)新增FPE特征位置增强模块,通过语义引导的加权机制强化目标区域的位置编码;2)采用分组解耦回归头,将10维检测参数拆分为5个独立子任务分头预测;3)支持多帧时序融合,提升检测稳定性和运动物体跟踪能力。实验表明V2单帧模式相比V1提升1.5-2个mAP点,开启时序融合后可达4个点提升。文章详细解析了各模块的代码实现差异,并提
2026-06-29 11:29:03
1198
原创 Python,数据挖掘之EDA(Exploratory Data Analysis)及EDA懒人工具
EDA 全称,是数据挖掘、机器学习建模前。核心目的:不靠复杂模型,只用统计、图表、简单运算,,摸清数据规律、问题、特征关系,为后续清洗、特征工程、建模铺路。EDA 核心 4 大目标:行列、字段类型、缺失值、异常值:每个特征自身的取值分布、集中趋势、离散程度:特征与特征、特征与标签的相关性:缺失、重复、离群、偏态、多重共线性等隐患EDA 在数据挖掘里的实际价值。
2026-06-29 10:01:22
447
原创 ARC-AGI
是 ARC-AGI 最核心的任务载体 —— 所有抽象推理测试都通过 “网格图像的规则变换” 来具象化呈现,以此排除语言、文化、知识背景的干扰,纯粹测试通用推理能力。:网格尺寸在 1×1 到 30×30 之间,仅使用 10 种不同颜色的像素方格,不包含任何文字、符号或现实物体,彻底排除外部知识对测试的干扰ARC Prize。:每个独立任务仅提供 2~4 组「输入网格 - 输出网格」的示例,测试者需要从极少量样本中抽象出背后隐藏的变换规则,再对全新的测试输入网格生成正确的输出结果。
2026-06-28 23:30:09
289
原创 详解自动驾驶两大核心中间件:ROS 与 Apollo Cyber RT
摘要:自动驾驶中间件ROS与CyberRT对比分析 ROS(ROS1/ROS2)是机器人通用中间件,采用中心化(ROS1)或去中心化(ROS2)架构,支持Topic/Service通信,但存在实时性差、单点故障等短板,适用于科研和低速场景。百度CyberRT专为自动驾驶设计,采用去中心化架构,通过自研调度器实现硬实时任务优先级管理,默认共享内存零拷贝传输,优化了车规级高可靠、低延迟需求,但生态封闭。核心差异:ROS通用性强但实时性不足,CyberRT为自动驾驶深度优化但依赖Apollo生态。两者分别适用于算
2026-06-28 19:10:08
367
原创 C++智能指针及易错场景
unique_ptr的删除器是模板参数的一部分,属于类型的组成部分,编译期确定,无运行时开销。管理数组时,使用特化版本,自动调用delete[],且支持[]下标访问。支持自定义函数、lambda、函数对象作为删除器。// 管理动态数组arr[0] = 1;arr[1] = 2;// 自定义 lambda 删除器std::cout << "自定义释放内存" << std::endl;delete p;与unique_ptr不同,shared_ptr的删除器不是模板参数,而是通过类型擦除。
2026-06-28 18:49:40
306
原创 nuScenes数据集
samples是数据集的标注基准关键帧,是全传感器严格时间同步的采样时刻,也是官方提供人工3D标注的唯一数据。● sample_data.json:所有原始传感器文件的索引目录,每一张图片、每一帧点云、每一帧雷达数据都对应一条记录,包含所属sample、对应标定传感器、自车位姿、文件路径、时间戳、图像尺寸等。● 相机命名:CAM_FRONT(前视)、CAM_FRONT_LEFT(前左)、CAM_FRONT_RIGHT(前右)、CAM_LEFT(左侧)、CAM_RIGHT(右侧)、CAM_BACK(后视)
2026-06-26 15:15:19
495
原创 ONNX模型多个节点删除
而由于硬件设备、厂商支持力度等客观原因,上述多种部署框架大多存在一些不支持的op(算子),导致目标平台无法正常解析模型,因此,在onnx模型是进行适当的修改,对不支持的op进行增删改查是十分必要的。关于onnx模型的修改,强烈推荐使用python的onnx_graphsurgeon 库,onnx_graphsurgeon 是模型部署工程的必备工具之一, 最主要的用途就是调整或者新建 onnx 模型。
2026-06-03 11:02:34
236
原创 Shell脚本踩坑记录
因为有空格,Shell 会将等号左边的变量解释为一个命令,后面的。在 Bash shell 脚本中,和路径则被当作参数,因此会报错。
2026-03-01 18:16:53
29
原创 语音识别领域,WenetSpeech数据集详解
来源:YouTube视频、播客、有声书等质量分级:L(高质量)、M(中等质量)、S(低质量)包含:普通话、带口音普通话。
2025-12-10 15:48:29
434
原创 机器学习Adaboost算法----SAMME算法和SAMME.R算法
自适应提升机(Adaptive Boosting,简称 AdaBoost)是一种集成学习算法,通过组合多个弱分类器(弱分类器有多种选择,如决策树)来构建一个强分类器。AdaBoost在Python环境SKlearn里主要包含了SAMME算法和SAMME.R算法。AdaBoost SAMME算法的核心思想是逐步调整训练数据的权重,使得模型能够专注于那些难以分类的样本。基于超声雷达回波数据对目标障碍物进行高低分类属于二分类机器学习任务,使用AdaBoost算法比较合适。
2025-08-05 15:00:24
1517
原创 Pytorch 使用报错 RuntimeError: Caught RuntimeError in DataLoader worker process 0.
这个错误是可能是由于在DataLoader的工作进程中尝试访问CUDA设备导致的。PyTorch的DataLoader使用多进程加载数据,而CUDA上下文不能在子进程中直接使用。
2025-07-16 11:10:02
598
原创 Python struct 模块与 C 语言数据类型的详细对应关系
Python struct 模块与 C 语言数据类型的详细对应关系如下:Python struct 格式字符C 语言类型 (stdint.h)C 标准类型大小 (字节)值范围 (无符号)值范围 (有符号)Buint8_t10 到 255bint8_t1-128 到 127Huint16_t20 到 65,535hint16_tshort2-32,768 到 32,767Iuint32_t40 到 4,294,967,295iint32_tint。
2025-06-20 15:23:06
431
原创 Pytorch模型格式区别( .pt .pth .bin .onnx)
1 .pt 或 .pth:这是PyTorch默认的模型保存格式,两者没有实质区别,只是文件扩展名不同。2 .bin:这是一种通用的二进制格式,有时用于保存模型的权重,不包含模型结构。3 .onnx:开放神经网络交换格式,用于不同框架之间的模型交换。它保存了模型的结构和权重,并且可以在多个深度学习框架中运行。Pytorch是深度学习领域中进行模型训练时常用的框架之一,支持的模型保存格式包括.pt和.pth .bin .onnx。模型结构 + 权重 或 仅权重。模型结构 + 权重(标准化)仅权重(原始二进制)
2025-06-04 15:22:27
776
原创 C语言读取bin文件及存储方式
在 C 语言中使用uint8_t(即无符号 8 位整数)数组来存储二进制文件内容,这与二进制文件的存储原理和 C 语言的内存操作机制密切相关。int32_tfloat例如,float f=3.14,二进制表示可能为 0x4048F5C3(IEEE 754单精度浮点数),这 4 个字节在内存中是连续存储的,本质上与 4 个uint8_t没有区别。uint8_t。
2025-05-29 10:05:11
419
原创 快速清理回收站里的大量文件
rd /s /q C:\$Recycle.bin 可以把C盘换成E盘或F盘,取决于回收站内的文件是从哪个盘删除的。如果回收站里有大量的文件需要清理,可直接在cmd里用命令清理。
2025-05-09 17:16:29
911
原创 CMake Error at Utilities/cmcurl/CMakeLists.txt:591 (message): Could not find OpenSSL. 错误解决
这个错误表明 CMake 在使用./bootstrap 脚本进行初始化配置cmake时找不到 OpenSSL 开发库。快速解决方法是禁用 OpenSSL,命令如下。
2025-04-14 13:47:09
601
原创 Dataframe统计某列所有元素的对应值,基于各个元素对应值连续出现的次数
在 Python 中,想要统计列所有元素的对应值,基于各个元素连续出现的次数,可以使用 pandas。统计某一列中所有元素对应的值连续出现。
2025-03-05 15:54:01
406
原创 python 统计Dataframe某列中不同元素对应的另一列的值出现的次数,并把计数最多的值作为该元素最终的值
统计每个元素对应的值的出现次数。提取每个分组中出现次数最多的值。对分组后的另一列使用。
2025-02-26 20:35:15
345
原创 Python上训练好机器学习模型后转成C或C++
等,并能够将这些模型转换为多种编程语言的代码,如 C、C++、Go、Java、JavaScript、Python、Rust、Visual Basic .NET 等。(Model 2 Code Generator)是一个开源工具,它支持多种流行的机器学习库和框架,包括。(Model 2 Code Generator)将训练好的机器学习模型转换为独立的、可移植的代码。
2024-12-31 14:18:15
752
原创 使用pandas提取dataframe中相同文件路径下数据的一部分
在 Python 的 pandas 库中处理 DataFrame 时,如果dataframe中包含文件路径,并且希望从具有相同文件路径的行中随机挑选一部分(例如一半)的数据,可以使用如下代码:half_df = df.groupby('File_path').apply(lambda x: x.sample(frac=0.5, random_state=42)).reset_index(drop=True)然后用pandas中的value_counts方法看一下同样文件名下的数据是否已经改变了,如
2024-12-16 10:18:51
221
原创 C++面试八股文
目录内存堆和栈区别new和malloc区别封装、继承、多态内存栈:由编译器管理分配和回收,存放局部变量和函数参数。堆:由程序员管理,需要⼿动 new malloc delete free 进⾏分配和回收,空间较⼤,但可能会出现内存泄漏和空闲碎⽚的情况。全局/静态存储区:分为初始化和未初始化两个相邻区域,存储初始化和未初始化的全局变量和静态变量。常量存储区:存储常量,⼀般不允许修改。代码区:存放程序的⼆进制代码。
2024-07-21 18:32:33
1295
原创 PyToch和Torchvision版本对应及快速安装
在安装Pytorch(GPU或CPU版)时,如果TorchVision版本对应不上,有可能导致当前代码脚本运行失败。正确安装最好的办法是到Nvidia官网去安装要求安装。还有一个方法就是直接去网站下载TorchVision的wheel文件()进行安装,这样不仅安装速度快,而且安装TorchVision的同时会自动安装相对应的pytorch(强烈建议新手使用这个方法以免安装出错)。
2024-07-12 17:51:41
2221
原创 自动驾驶功能常用术语英文缩写及全拼
按照SAE的分级,自动驾驶技术分为L0-L5共六个等级,其中L0代表没有自动驾驶加入的传统人类驾驶,而L1-L5则随自动驾驶的技术配置进行了分级。根据系统请求,人类驾驶者不一定需要对所有的系统请求作出应答,限定道路和环境条件等。):通过驾驶环境对放线盘和加减速中的一项操作提供驾驶支援,对其他的驾驶动作都由人类驾驶员进行操作。):通过驾驶环境对方向盘和加减速中的多项操作提供驾驶支援,其他的驾驶动作都由人类驾驶员进行操作。):由人类驾驶者全权操作汽车,在行驶过程中可以得到警告和保护系统的辅助。
2024-06-05 12:11:09
2811
深度学习2026算法岗面试高频100题精解:覆盖CNN/RNN/Transformer/优化/压缩六大模块
2026-07-01
【高性能计算】基于CUDA的并行优化技术:内存访问与线程调度协同设计的8大核心策略
2026-07-01
【计算机视觉】基于3D位置编码的稀疏BEV感知算法:PETR V1原理与代码实现解析
2026-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅