- 博客(46)
- 收藏
- 关注
原创 自动驾驶04:点云预处理03
点云滤波是自动驾驶和 3D 视觉任务中的关键步骤,它用于去除噪声、降低数据量、增强点云质量,以提高后续感知算法的准确性和计算效率。感知算法人员在完成点云的运动畸变补偿后,会发现一个问题:激光雷达发送的点云数据包中的点云数量其实非常少,完全无法用来进行后续感知和定位层面的处理工作。,当 LiDAR 安装在运动平台(如无人车、机器人)上,点云数据会因为运动而产生畸变,需配合 IMU 进行修正。,不同 LiDAR 可能有不同的扫描模式(逐线扫描、逐点扫描),如果不进行同步,可能会出现错帧或数据丢失。
2025-03-28 15:16:22
511
原创 自动驾驶02:点云预处理——02(运动补偿篇LIO-SAM)
当激光雷达(LiDAR)在运动中采集点云时,每个点的时间戳不同,而车辆在移动,导致点云在不同时间点的坐标与实际情况不符,这种现象称为。为了得到,需要进行。LIO-SAM 是一个基于的与,通过,特别适用于和。(消除 LiDAR 在运动中的扭曲)(局部里程计 + 全局地图优化)等场景。
2025-03-28 10:50:53
873
原创 自动驾驶01 激光雷达原理
激光雷达LiDAR的全称为Light Detection and Ranging 激光探测和测距。激光雷达的工作原理:对红外光束Light Pluses发射、反射和接收来探测物体。白天或黑夜下的物体与车之间的距离。甚至由于反射度的不同,车道线和路面也可以区分。光束无法探测到被遮挡的物体禾赛128激光雷达凭借其高通道数、长测距范围、高角分辨率和360°视场角等优势,广泛应用于自动驾驶、机器人导航和测绘等领域。其高精度和高点云密度使得它能够生成高质量的环境模型,为各种应用场景提供可靠的感知能力。
2025-03-25 14:06:40
1473
原创 CNN中的平移不变性和平移等变性
如果我们从宏观角度退一步看,若对于分类任务不以最终的label为输出结果,而是以输出probability为准,对于一张目标有平移的图像,其预测的probability会和原图一样么,这种近似苛刻的要求看起来又似乎是合理的。从特征提取的角度直观的思考,卷积操作的局部特征提取,会使得原目标在左上角时,特征层的目标特征在左上角,原目标在右下角时,特征层的目标特征在右下角。即便是如VGG16,随着目标的移动,抽象特征的模式也并不是原始目标的简单平移,但似乎保留了这一特定图像的全局总和。在 CNNs 中获得的。
2024-10-05 17:52:19
1503
1
原创 车道线检测——传统方法(canny边缘检测+霍夫变换+RANSAC算法)
是自动驾驶中的一个基础模块,车道保持,自适应巡航,自动变道;对于全自动驾驶汽车后续的车道偏离或轨迹规划决策也很重要。与。在本文中我们主要聚焦于传统方法。
2024-09-25 11:58:32
1413
原创 (BEV论文精读)Lift, Splat, Shoot
今天我们一起来回顾一下BEV中的经典论文LSS,只要是学习BEV,那么肯定离不开这篇文章,重要性不言而喻。自动驾驶中,输入来自多个传感器,每个传感器有不同的坐标系,感知模型最终需要生成一个在自车坐标系下的预测,以供后续的运动规划模块使用,如图所示。既然需要BEV,那么最原始的方法是怎么做呢:对于来自个摄像头的3D物体检测问题,可以对每个输入图像单独应用一个单图像检测器,然后根据该摄像头的内参和外参将每个检测结果旋转并转换到自车坐标系中。第一步:将像素坐标转换到摄像头坐标系。
2024-09-23 22:47:23
1371
原创 感知算法引入时序模型的优势
捕捉运动轨迹:通过历史信息,时序模型能够预测目标的轨迹和未来状态。提升鲁棒性:时序模型能减少单帧噪声或模糊对结果的影响,增强感知系统的稳定性。处理遮挡:时序模型有助于在目标被部分遮挡时继续追踪其位置。多模态信息融合:时序模型能帮助更好地融合来自不同传感器的数据,提高感知效果。提升检测与跟踪:时序模型将目标检测与跟踪任务结合,提高检测的连贯性和效率。提前预测:时序模型可以预测目标的未来状态,提供决策系统更多的信息。
2024-09-22 22:38:17
1121
原创 2D目标检测常用loss
分类损失(如交叉熵损失、Focal Loss)边界框回归损失(如 Smooth L1、IoU、GIoU、DIoU、CIoU)分类损失和回归损失的加权组合可以用于优化模型的整体性能。不同检测模型会根据任务需求选择合适的损失函数及其组合,以提升检测精度和定位准确性。
2024-09-22 22:17:54
995
原创 cv中每个patch的关联
ViT 和 Swin Transformer使用自注意力机制计算 patches 之间的关联,通过查询、键、值的点积来表示关联性。CNN通过卷积操作,在局部邻域内捕捉 patch 之间的关联。欧氏距离、余弦相似度等相似性度量可以直接计算 patches 之间的相似度。图模型可以通过图结构中的边权重表示 patches 之间的关联。
2024-09-22 22:02:27
686
原创 Vision Transformer (ViT)、Swin Transformer 和 Focal Transformer
是最早将 Transformer 应用于图像任务的模型,最先由 Google 提出。它采用了与 NLP 中 Transformer 类似的结构,但做了一些调整以适应图像数据。这种方法在注意力计算时结合了细粒度的局部信息和粗粒度的全局信息,旨在平衡精度和效率。Swin-Transformer网络结构详解_swin transformer-CSDN博客。是一种在 Swin Transformer 的基础上进一步改进的模型,它通过引入。Vision Transformer详解-CSDN博客。
2024-09-21 22:32:59
1050
原创 卷积参数量计算公式
普通卷积的参数量较大,尤其是在输入和输出通道数较多时。深度卷积和逐点卷积的组合(深度可分卷积)通常具有较少的参数量。可变形卷积引入了额外的偏移量卷积参数,可能会增加总参数量,但提供了对输入特征图几何变化的更好适应能力。
2024-09-20 14:00:49
426
原创 训练加速和推理加速
训练加速指的是通过优化技术、硬件加速等方式,减少训练模型的时间,尤其是对于大规模数据集和复杂模型。推理加速是指在模型已经训练好之后,优化模型的预测过程,以便在实际应用中快速进行推理(即前向传播),从而提高模型的响应速度或处理效率。训练加速场景:假设你在训练一个大规模的图像分类模型(如 ResNet50)在 ImageNet 数据集上,使用多卡分布式训练和混合精度,可以显著缩短训练时间,尤其是当数据量和模型参数规模都非常大时。推理加速场景:假设你已经训练好一个面向自动驾驶的目标检测模型,部署时需要在车辆上实时
2024-09-19 20:15:44
1288
原创 Git的使用
Git 允许多个开发人员同时对同一个项目进行开发,并通过 Pull Request 等方式讨论、审核代码的更改。:Git 的分布式结构允许每个开发人员拥有项目的完整历史记录,即使不连接到中央服务器也可以进行操作。:Git 允许轻松创建、管理多个分支(Branch)。:开发者可以将代码推送(Push)到远程仓库(如 GitHub、GitLab)与其他人共享代码,或从远程仓库拉取(Pull)最新的代码。:Git 可以记录项目的每次修改,开发人员可以随时查看、还原到之前的版本,避免误操作造成的文件丢失。
2024-09-19 17:24:58
1101
原创 SSH 服务器,防止链接断开,训练终止操作————screen
在训练模型时,尤其是在使用远程服务器或集群时,运行screen是一种非常实用的方式,特别是当你希望在训练过程中保持会话稳定、不被中断。下面是关于screen的一些基本介绍以及如何在训练模型前使用screen。
2024-09-19 14:36:25
714
原创 手撕代码系列:NMS
在NMS之前,我们先手撕IOUIOU(Intersection over Union,交并比)**是目标检测任务中常用的一种评价指标,用于衡量两个边界框(bounding boxes)之间的重叠程度。IOU 的取值范围为 0 到 1,值越大表示两个框的重叠部分越多。
2024-09-17 15:20:31
427
原创 手撕代码系列:Conv2D
在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。
2024-09-17 00:01:26
581
原创 分布式训练:(Pytorch)
数据加载:使用多个进程来并行加载和预处理数据,通过流水线处理减少数据加载的延迟。数据传输:利用 CUDA 流优化从固定内存到 GPU 的数据传输。数据并行性:使用数据并行和 NCCL 等通信库实现高效的梯度同步和模型参数更新,优化训练过程。这种方法结合了数据加载、数据传输和数据并行处理的优化,能够显著提升深度学习模型的训练效率和速度。dataset,num_workers=4, # 使用 4 个子进程加载数据pin_memory=True # 将数据转移到固定内存# 模型训练代码# ...
2024-09-16 19:52:18
1737
原创 YoloV8 trick讲解
通过中心点和尺寸预测,可以生成完整的边界框。这种方法通常使用一组回归层来直接预测边界框的四个坐标值(中心坐标、宽度和高度)。
2024-09-16 11:57:15
1483
原创 目标检测中的解耦和耦合、anchor-free和anchor-base
耦合头适合轻量化模型和计算资源有限的情况,追求更高的效率。解耦头适合更复杂的目标检测任务,追求更高的精度。
2024-09-14 20:52:22
1909
原创 (Lane Detection-4)BEV-LaneDet: An Efficient 3D Lane Detection Based on Virtual Camera viaKey-Points
目前3D车道线检测的主流方法有两类:一类是将输入的2D图像通过IPM变换投影到BEV空间,然后使用曲线拟合或者原先的anchor来获取BEV车道。缺点:这种流程在实际驾驶过程中可能会在像上坡和下坡等具有挑战性的情况下引发其他问题。另一类方法使用先验3D锚点,投影到2D图像,提取车道线特征,然后基于这些锚点进行回归。然而,这些方法在某些特定场景下缺乏足够的灵活性\虚拟相机(Virtual Camera):一种新颖的预处理模块,用于统一相机的内外参,确保数据分布的一致性。关键点表示(Key-Points Rep
2024-09-10 23:33:53
1283
原创 (Lane Detection-2)Ultra Fast Structure-aware Deep Lane Detection
一种速度很快的Lane Detection 检测方法。
2024-09-09 14:31:40
815
原创 (Lane Deteciton-1)PersFormer
在自动驾驶中,下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图(BEV)而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理(如车辆、道路标志、交通灯等)对齐任务,并且与其他传感器(如LiDAR和雷达)兼容。
2024-09-04 16:09:32
714
原创 Ubuntu: 配置OpenCV环境
从从Ubuntu系统安装opencv_ubuntu安装opencv-CSDN博客开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强现实等。_ubuntu安装opencv参考连接。
2024-09-04 00:02:10
845
原创 (BEV论文精读7)BEVDet: High-Performance Multi-Camera3D Object Detection in Bird-Eye-View
自动驾驶的主要任务3D目标检测和地图重建(即鸟瞰图(BEV)语义分割)在nuScenes [1]基准测试中,基于图像视角的方法如FCOS3D [49]和PGD [50]在多摄像头3D目标检测项目中表现领先,而BEV语义分割项目则由BEV为基础的方法如PON [39]、Lift-Splat-Shoot [33]和VPN [31]主导。能否在一个统一的框架中处理这些任务???本文中,作者想要证明用BEV做3D目标检测也会获得很好的结果。
2024-09-03 16:27:30
1706
原创 (BEV论文精读3)PETR: Position Embedding Transformation for Multi-View 3D Object Detection
每个物体query表示一个物体,并在transformer解码器中与2D特征进行交互以生成预测;:物体query预测的3D参考点通过相机参数投影回图像空间,并用于从所有相机视图中采样2D特征,解码器将采样的特征和query作为输入,更新物体query的表示(说到底仍旧是在2D特征中进行交互)作者的目标是将。为了实现这一目标,首先将由不同视角共享的相机视锥空间离散化为网格坐标。然后,通过不同的相机参数将这些坐标转换为 3D 世界空间的坐标。
2024-09-02 16:11:34
1936
原创 (BEV论文精读1)DETR3D: 3D Object Detectionfrom Multi-view Images via 3D-to-2D Queries
本文的主要贡献如下:我们提出了一种基于RGB图像的简化3D物体检测模型。与现有工作在最终阶段结合来自不同相机视角的物体预测不同,我们的方法。据我们所知,这是首次尝试将多摄像头检测视为3D集合到集合的预测。我们引入了一个模块,。该方法不会受到次级网络中不准确深度预测的影响,并通过反投影3D信息到所有可用帧上,无缝利用多个摄像头的信息。类似于Object DGCNN [11],我们的方法不需要后处理步骤,例如每张图像或全局的非极大值抑制(NMS),并且在性能上与现有基于NMS的方法相当。
2024-09-02 13:50:05
1448
原创 (BEV论文精读4)BEVDet4D:多帧时序信息融合方法详解
由于自车运动,一个在全局坐标系中静止的物体(例如图3中的绿色框)会在自车坐标系中变成一个运动物体。考虑相邻帧中由视图变换器生成的两个特征,由于自车运动,它们在全局坐标系中的感受野是不同的。此外,我们还倾向于学习与自车运动无关的平移量,这进一步简化了任务,因为自车运动会使目标位置的平移分布更加复杂。根据公式 (1),如果直接将两个特征连接起来,随后模块的学习目标(即两个特征中的目标位置平移)将与自车运动(即。所谓的特征对齐操作,就是上述所讲的目标平移预测中的自车运动校正,即,将学习目标由。
2024-08-30 12:58:15
1411
原创 (BEV论文精读6)Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline
基于查询的方法通过Transformer中的注意力机制获得3D BEV特征。这个过程可以表示为公式1:在一些计算平台上,Transformer架构的注意力操作存在部署挑战,这阻碍了这些方法的实际应用。基于深度的方法通过计算2D特征与预测深度的外积来获得3D BEV特征。这些方法在支持CUDA多线程的GPU平台上可以显著提高推理速度,但在较大分辨率和特征维度下会遇到计算速度瓶颈,并且在没有推理库支持的非GPU平台上迁移起来并不友好。
2024-08-29 22:44:48
1545
原创 (BEV论文精读5)M2BEV
给定 NNN 张大小为 H×W×3H \times W \times 3H×W×3 的图像,我们对所有图像使用共享的 CNN 主干网络进行前向传播,例如使用 ResNet,并通过特征金字塔网络(FPN)创建四级特征 F1,F2,F3,F4F_1, F_2, F_3, F_4F1,F2,F3,F4。是 M2BEV 框架中的关键组件之一,它负责将 4D 体素张量转换为 3D 特征张量,并最终生成鸟瞰视图(BEV)特征。是 M2BEV 框架中的一个重要设计,用于优化 3D 目标检测任务中的锚框分配。
2024-08-29 20:00:31
1077
原创 YoloV6----回顾
进行了修订,以构建中型和大型网络的骨干网络。之前的研究提出了多种标签分配策略,这些策略从简单的基于IoU的策略和内部真实值(inside ground-truth)方法 [41],到其他更复杂的方案 [5, 7, 18, 48, 51] 不等。在YOLOv6的模型评估过程中,发现像YOLOv5和YOLOv7实现中的那样,在每张图像周围添加了一个半步幅的灰色边框。总结而言,YOLOv6的骨干网络设计通过借鉴多路径和单路径网络的优点,结合重参数化技术,达到了在不同规模模型中兼顾推理效率和检测准确性的目标。
2024-08-29 10:43:16
989
原创 YoloV4———— 万字长文带你理解YOLOV4的众多trick
YoloV4是Alexey Bochkovskiy在小马哥的yolo系列基础上的新的续作,主要是利用了许多trick在速度和效果上进行了提升。
2024-08-21 15:03:05
805
原创 (Lane Detection-5)Decoupling the Curve Modeling and Pavement Regression for Lane Detection
目前车道线检测的三种方案:curve-based:利用贝塞尔曲线(),检测起始点和结束点以及曲线参数,将2D车道线当做曲线回归问题。目前curved-based的方法检测不准确的原因,作者认为并不是因为曲线拟合缺少自由度(也就是曲线方程参数不够),因为过度增加参数可能会过拟合局部车道线而忽略其整体性。但这种方法相较于其他方法的优势在于其整体性。车道线的设计本身也是简单的,连续的。经过研究发现,现实中出现的Lane的不平整主要是来自于道路的问题。
2024-08-21 14:41:24
1055
原创 YoloV2———— 简单理解+回顾
yolov2在yolov1的基础上使用yolov1类似的方法,增加了多尺度训练,实现了在速度和精确度上的平衡。由于目标检测数据集的数量有限,标注耗费人工,因此没有较大规模的数据集,yolov2着手解决这一问题。提出了一种训练方式可以使分类数据集扩展到目标检测任务上,另外所提出的模型可以同时进行目标检测任务和分类任务。利用目标检测数据集学习精确定位,利用分类数据集来学习更多类别并增加鲁棒性。
2024-08-12 16:47:01
1006
原创 YoloV1———— 简单理解+回顾
在损失函数方面,本文使用sum-squared error , 但是由于在无目标的网格中置信度得分为0,使用sum-squared error会影响具有目标的网格,导致模型不稳定,因此添加了两个参数去调节t λcoord = 5 and λnoobj = .5.另外,两阶段训练将会变成统一网络,大大提升检测速率。训练时,由于每个网格有多个bounding box ,选取一个代表性的box,选取方式为box与真实值之间求IOU,当IOU最大的时候,就是代表性的box。(1)在小目标上检测较差。
2024-08-11 16:55:29
389
原创 (BEV论文精读) ICRA‘23:BEVFusion
由于相机具有不同的视角,因此相同的特征张量可能会代表不同的空间位置,因此需要找到一个共同的表达方式,它满足所有的张量可以轻松到这一特征空间中,并且使用于不同的任务中。我们将多个特定于任务的头部应用于融合的BEV特征图。(3)这将生成大小为NHWD的摄像机特征点云,其中N是摄像机的数量,(H,W)是摄像机特征地图大小。(2)相机内外参是是固定的,因此相机特征点云的坐标是固定的,所以将3D坐标和BEV中的点联系起来。(3)将BEV中的点排序并进行记录,在推理时,只需要在预先计算的排列中去记录所有特征点。
2024-07-29 15:16:32
666
原创 模型部署03 CMake
在实际工作中推荐使用CMake构建C++项目,CMake是用于和软件的开源工具;build静态链接库和动态链接库所谓静态和动态,其区别是链接的阶段不一样。静态链接库链接发生在编译环节,库名称为.a(archicve library),最终输出的库或可执行文件会将静态连接库打包到工程的输出文件中(可执行文件或库),因此文件较大。动态链接库链接发生在程序执行过程中,库名称为.so(shared object) , 动态库加载后,在内存中仅仅保存一份拷贝,多个程序依赖它,不会重复加载。
2024-04-24 16:08:05
411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人