当前位置: 首页 > news >正文

【自动驾驶】单目摄像头实现自动驾驶3D目标检测

🍑个人主页:Jupiter.
🚀 所属专栏:传知代码
欢迎大家点赞收藏评论😊

在这里插入图片描述

在这里插入图片描述

目录

  • 概述
  • 算法介绍
  • 演示效果
      • 图像推理
      • 视频推理
  • 核心代码
  • 算法处理过程
  • 使用方式
      • 环境搭建
      • 下载权重文件
      • pytorch 推理(自动选择CPU或GPU)
      • onnxruntime 推理(自动选择CPU或GPU)
      • tensorrt 推理
  • 部署方式


参考文献:需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:地址

概述

随着人工智能的蓬勃发展,自动驾驶技术正成为科技界的一大亮点。在这个领域中,道路信息感知被视为自动驾驶系统中至关重要的一环,因为它为车辆的规划和决策提供了必不可少的基础数据。

我很荣幸地向大家介绍RTM3D算法(单目3D目标检测)。这一算法利用nuscenes数据集中的前视摄像头图像进行训练,能够准确地检测出轿车、巴士、卡车等多种3D目标。更令人振奋的是,我们为您提供了基于PyTorch、ONNX Runtime和TensorRT推理框架的演示,并附带了PyTorch转ONNX、ONNX转TensorRT的脚本,使您可以轻松应用于实际场景中。

算法介绍

RTM3D的主要结构分为backbone和检测头。backbone主要使用ResNet18和DLA-34。其中上采样过程用了跨连接和双线性插值。同时提出了针对keypoint的FPN层。根据速度要求检测头由三个基本单元和6个可选的单元组成。在基本单元中,使用2DBBox的中心点作为哦中枢点负责各数据的联系。因为截断的物体3D框中心可能会超出图像范围,对检测不利。其它基本单元还有9个关键点的热力图和回归坐标,用来做点之间的联合。其它可选的部分有量化误差的补偿、物体的大小、方向,中心点的depth和2D bbox的大小。
网络结构

演示效果

图像推理

在这里插入图片描述

视频推理

Description

核心代码

demo代码中定义图像以及模型的地址

model_path = r"weights/rtm3d_nusc_ep100.pth"
image_path = r"demo/demo.jpg"

根据相机参数在lib/rtm3d_detector.py中调整calib

self.calib_np = np.array([[721.5, 0.0,   336, 44.86],[0.0,   721.5, 140, 0.216],[0.0,   0.0,   1.0,   0.0027]], dtype=np.float32)

算法处理过程

def process(self, images):with torch.no_grad():output = self.model(images)[-1]output['hm'] = output['hm'].sigmoid_()dets = car_pose_decode_faster(output['hm'], output['hps'], output['dim'], output['rot'],prob=output['prob'], K=self.K, meta=self.meta, const=self.const)return dets

demo代码中调用对应的detector,并返回检测结果和可视化结果

results, show_img = detector.run(img, im1)

使用方式

环境搭建

pip install -r requirements.txt

下载权重文件

请阅读附件中README.md的这一部分。

pytorch 推理(自动选择CPU或GPU)

python image_infer.py # 单张图像推理
python pt_infer.py # 视频推理

onnxruntime 推理(自动选择CPU或GPU)

python pt2onnx.py # pytorch格式模型转onnx格式
python onnx_infer.py # 视频推理

tensorrt 推理

python pt2onnx.py # pytorch格式模型转onnx格式
python onnx2trt.py # onnx格式模型转tensorrt格式
python trt_infer.py # 视频推理

部署方式

在以上的demo文件中选择自己的图片/视频地址,如image_infer.py中修改image_path为自己的图像地址。

参考文献

@misc{2009.00764,
Author = {Peixuan Li},
Title = {Monocular 3D Detection with Geometric Constraints Embedding and Semi-supervised Training},
Year = {2020},
Eprint = {arXiv:2009.00764},
}
@misc{2001.03343,
Author = {Peixuan Li and Huaici Zhao and Pengfei Liu and Feidao Cao},
Title = {RTM3D: Real-time Monocular 3D Detection from Object Keypoints for Autonomous Driving},
Year = {2020},
Eprint = {arXiv:2001.03343},
}

相关文章:

【自动驾驶】单目摄像头实现自动驾驶3D目标检测

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 概述算法介绍演示效果图像推理视频推理 核心代码算法处理过程使用方式环境搭建下载权重文件pytorch 推理(自动选择CPU或GPU&#x…...

21 go语言(golang) - gin框架安装及使用(二)

四、组成 前面的文章中,我们介绍了其中一部分组成,接下来继续学习: Router(路由器) Gin 使用基于树结构的路由机制来处理 HTTP 请求。它支持动态路由参数、分组路由以及中间件。路由器负责将请求路径映射到相应的处理…...

Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)

一、Intel(R) Iris(R) Xe Graphics安装Anaconda 下载网址:https://repo.anaconda.com/archive/ 双击Anaconda3-2024.10-1-Windows-x86_64,一直下一步,选择安装的路径位置,一直下一步就安装完成了。打开Anaconda PowerShell Promp…...

【Unity3D】实现可视化链式结构数据(节点数据)

关键词:UnityEditor、可视化节点编辑、Unity编辑器自定义窗口工具 使用Newtonsoft.Json、UnityEditor相关接口实现 主要代码: Handles.DrawBezier(起点,终点,起点切线向量,终点切线向量,颜色,n…...

Three.js推荐-可以和Three.js结合的动画库

在 Three.js 中,3D 模型、相机、光照等对象的变换(如位置、旋转、缩放)通常需要通过动画进行控制,以实现更加生动和富有表现力的效果。然而,Three.js 本身并没有内置的强大动画管理系统,尽管可以通过关键帧…...

增强现实(AR)和虚拟现实(VR)的应用

增强现实(AR)和虚拟现实(VR)是近年来迅速发展的技术,广泛应用于多个行业,提供沉浸式的体验和增强的信息交互。以下是AR和VR的定义及其在不同领域的具体应用。 相关学点: 2025年大数据、通信技术…...

告别机器人味:如何让ChatGPT写出有灵魂的内容

目录 ChatGPT的一些AI味道小问题 1.提供编辑指南 2.提供样本 3.思维链大纲 4.融入自己的想法 5.去除重复增加多样性 6.删除废话 ChatGPT的一些AI味道小问题 大多数宝子们再使用ChatGPT进行写作时,发现我们的老朋友ChatGPT在各类写作上还有点“机器人味”太重…...

【Threejs】从零开始(六)--GUI调试开发3D效果

请先完成前置步骤再进行下面操作:【Threejs】从零开始(一)--创建threejs应用-CSDN博客 一.GUI界面概述 GUI(Graphical User Interface)指的是图形化用户界面,广泛用在各种程序的上位机,能够通过…...

Cocos Creator 试玩广告开发

之前主要是使用Unity,这次刚好项目是试玩游戏的开发,所以临时学了Cocos来开发。所以这篇文章,更加关注从Unity转到Cocos开发的经历以及试玩的基本开发。 首先,我是没有使用过Cocos的,也没有接触过Ts语言,对于Ts的开发开…...

快速解决oracle 11g中exp无法导出空表的问题

在一些生产系统中,有些时候我们为了进行oracle数据库部分数据的备份和迁移,会使用exp进行数据的导出。但在实际导出的时候,我们发现导出的时候,发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…...

selenium 报错 invalid argument: invalid locator

环境: Python3.12.2 selenium4.0 报错信息: invalid argument: invalid locator 错误分析: selenium语法错误,find_element方法少写By.XPATH参数 错误语法如下: driver.find_element(//div[id"myid"]) 解决办…...

Flink2.0未来趋势中需要注意的一些问题

手机打字,篇幅不长,主要讲一下FFA中关于Flink2.0的未来趋势,直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲,很精彩,官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…...

机械鹦鹉与真正的智能:大语言模型推理能力的迷思

编者按: 大语言模型真的具备推理能力吗?我们是否误解了"智能"的本质,将模式匹配误认为是真正的推理? 本文深入探讨了大语言模型(LLMs)是否真正具备推理能力这一前沿科学问题,作者的核…...

本地电脑使用命令行上传文件至远程服务器

将本地文件上传到远程服务器,在本地电脑中cmd使用该命令: scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中,C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径, ~/en…...

【系统】Windows11更新解决办法,一键暂停

最近的windows更新整的我是措不及防,干啥都要关注一下更新的问题,有的时候还关不掉,我的强迫症就来了,非得关了你不可! 经过了九九八十一难的研究之后,终于找到了一个算是比较靠谱的暂停更新的方法&#x…...

34. Three.js案例-创建球体与模糊阴影

34. Three.js案例-创建球体与模糊阴影 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数对象,包…...

Qt同步读取串口

头文件 #include "InsScpi.h" #include <QObject> #include <QSerialPort>class TestSerial : public QObject {Q_OBJECT public:explicit TestSerial(QObject *parent nullptr);//打开设备bool openDevice(const QString &portName);//关闭设备…...

如何用上AI视频工具Sora,基于ChatGPT升级Plus使用指南

没有GPT&#xff0c;可以参考这个教程&#xff1a;详情移步至底部参考原文查看哦~ 1.准备工作 详情移步至底部参考原文查看哦~ 详情移步至底部参考原文查看哦~ 4.Sora使用 详情移步至底部参考原文查看哦 参考文章&#xff1a;【包教包会】如何用上AI视频工具Sora&#xff…...

对象的状态变化处理与工厂模式实现

一、引言 在 C 编程中&#xff0c;有效地处理对象的状态变化以及合理运用设计模式可以极大地提高代码的可维护性、可扩展性和可读性。本文将深入探讨 C 如何处理对象的状态变化以及如何实现工厂模式。 二、C 中对象的状态变化处理 使用成员变量表示状态 class GameCharacte…...

关于IP代理API,我应该了解哪些功能特性?以及如何安全有效地使用它来隐藏我的网络位置?

IP代理API是一种服务&#xff0c;允许用户通过访问经过中间服务器的网络连接来改变其公开的互联网协议地址&#xff08;IP&#xff09;&#xff0c;从而达到隐藏真实地理位置的效果。以下是您在选择和使用IP代理API时应关注的一些功能和安全性考虑&#xff1a; 匿名度&#xff…...

QT6.5项目实战:用HidApi库搞定USB HID设备读写(附完整配置流程)

QT6.5实战&#xff1a;HidApi库深度集成与USB HID设备高效通信指南 USB HID设备作为人机交互的基础协议&#xff0c;在工业控制、医疗设备、游戏外设等领域广泛应用。当开发者需要在QT6.5环境中实现与这类设备的稳定通信时&#xff0c;HidApi库因其轻量级和跨平台特性成为理想选…...

【ElevenLabs情绪语音实战指南】:3步解锁开心语音API调用、情感强度微调与合规避坑全链路

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs开心情绪语音技术全景概览 核心技术能力 ElevenLabs 的开心情绪语音生成并非简单音调拉升或语速加快&#xff0c;而是基于多任务情感条件建模&#xff08;Multi-Task Emotional Conditionin…...

ADAU1701(含A2B)的开发详解五:SigmaStudio实战技巧与模块高效应用

1. SigmaStudio模块查找的终极技巧 第一次打开SigmaStudio时&#xff0c;面对左侧密密麻麻的模块列表&#xff0c;我完全懵了。就像走进一个巨大的图书馆却找不到分类标签&#xff0c;ADI把200多个算法模块分散在30多个分类里&#xff0c;光Volume Controls下面就有12种音量调节…...

Sunshine游戏串流服务器:打造你的私人云游戏平台

Sunshine游戏串流服务器&#xff1a;打造你的私人云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在客厅电视、笔记本电脑甚至手机上玩高性能PC游戏吗&#xff1f;S…...

用MakeCode Arcade与树莓派Zero打造复古像素游戏:从拖拽编程到实体街机

1. 项目概述&#xff1a;为什么选择MakeCode Arcade开启你的游戏开发之旅&#xff1f;如果你对编程充满好奇&#xff0c;又或者一直想亲手制作一款属于自己的复古像素风游戏&#xff0c;但被一行行复杂的代码劝退&#xff0c;那么MakeCode Arcade就是你一直在寻找的答案。它不是…...

【鸿蒙 HarmonyOS】从零到一:Node.js 环境配置与 DevEco Studio 无缝对接指南

1. 为什么需要Node.js环境&#xff1f; 如果你刚刚接触鸿蒙开发&#xff0c;可能对DevEco Studio里弹出的"Node.js not found"提示感到困惑。其实Node.js在鸿蒙生态中扮演着重要角色——它不仅是npm包管理器的运行环境&#xff0c;更是鸿蒙应用编译工具链的基础依赖。…...

不只是调色板:深入Cadence Allegro颜色配置文件的保存与复用逻辑(SPB17.4实战)

不只是调色板&#xff1a;深入Cadence Allegro颜色配置文件的保存与复用逻辑&#xff08;SPB17.4实战&#xff09; 在PCB设计领域&#xff0c;颜色配置往往被视为一种"视觉装饰"——直到某天你接手一个来自同事的工程文件&#xff0c;发现所有网络、层叠和元件都以难…...

DayZ社区离线模式完全指南:打造你的专属末日沙盒世界

DayZ社区离线模式完全指南&#xff1a;打造你的专属末日沙盒世界 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode 想在DayZ中完全掌控自己的生存命…...

别再被SAR图像上的‘雪花点’骗了!手把手教你理解相干斑噪声的底层原理

别再被SAR图像上的‘雪花点’骗了&#xff01;手把手教你理解相干斑噪声的底层原理 第一次接触SAR图像时&#xff0c;那些密密麻麻的"雪花点"总让人误以为是设备故障或数据损坏。这种视觉上的"噪声"其实是合成孔径雷达&#xff08;SAR&#xff09;成像中特…...

GraphQL-WS vs 传统GraphQL:为什么WebSocket是实时应用的首选

GraphQL-WS vs 传统GraphQL&#xff1a;为什么WebSocket是实时应用的首选 【免费下载链接】graphql-ws Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-ws …...