3D目标检测(毕业设计+代码)

news2024/12/25 9:00:31

概述

3d Objectron是一种适用于日常物品的移动实时3D物体检测解决方案。它可以检测2D图像中的物体,并通过在Objectron数据集上训练的机器学习(ML)模型估计它们的姿态.
下图为模型训练后推理的结果!

在这里插入图片描述

算法

我们建立了两个机器学习管道来从单个RGB图像预测物体的3D边界框:一个是两阶段管道,另一个是单阶段管道。两阶段管道比单阶段管道快3倍,准确率相似或更好。单阶段管道擅长检测多个物体,而两阶段管道适用于单个主导物体。
单价段训练模型:
在这里插入图片描述

我们的单级流技术路线图,如图所示,模型骨干具有基于MobileNetv2的编码器-解码器架构。我们采用多任务学习方法,同时预测物体的形状、检测和回归。形状任务根据可用的真实注释,例如分割,预测物体的形状信号。如果在训练数据中没有形状注释,则此步骤是可选的。对于检测任务,我们使用注释的边界框并适合高斯到盒子,其中心在盒子重心处,标准偏差与盒子大小成比例。检测的目标是预测具有峰值表示物体中心位置的此分布。回归任务估计八个边界框顶点的二维投影。为了获得边界框的最终3D坐标,我们利用了一个成熟的姿态估计算法(EPnP)。它可以恢复物体的3D边界框,而不需要先验知识。给定3D边界框,我们可以轻松地计算物体的姿态和大小。该模型足够轻,可以在移动设备上实时运行(在Adreno 650移动GPU上以26 FPS的速度运行)。

主要代码和结果

结果:

在这里插入图片描述

获取现实世界的3D训练数据

尽管由于自动驾驶汽车依赖于3D捕捉传感器(如LIDAR)的研究的流行,有大量的街景3D数据可用,但是对于更精细的日常物品的具有真实3D标注的数据集非常有限。为了解决这个问题,我们开发了一种新颖的数据管道,利用移动增强现实(AR)会话数据。随着ARCore和ARKit的到来,数亿部智能手机现在具有AR功能,并且能够在AR会话期间捕获附加信息,包括相机姿态、稀疏3D点云、估计的照明和平面表面。
为了标注地面真实数据,我们构建了一个新颖的注释工具,可用于AR会话数据,允许注释者快速为物体标注3D边界框。此工具使用分屏视图,在左侧显示覆盖了3D边界框的2D视频帧,以及在右侧显示3D点云、相机位置和检测到的平面的视图。注释者在3D视图中绘制3D边界框,并通过检查2D视频帧的投影来验证其位置。对于静态对象,我们只需要在一个帧中标注一个对象,并使用AR会话数据的地面真实相机姿态信息将其传播到所有帧,这使得该过程高效。

主要代码:

with mp_objectron.Objectron(static_image_mode=True,
                            max_num_objects=5,
                            min_detection_confidence=0.5,
                            model_name='Shoe') as objectron:
  for idx, file in enumerate(IMAGE_FILES):
    image = cv2.imread(file)
##全部代码请联系---------->qq1309399183<-----------------------
    # Convert the BGR image to RGB and process it with MediaPipe Objectron.
    results = objectron.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    


if not results.detected_objects:
      print(f'No box landmarks detected on {file}')
      continue
    print(f'Box landmarks of {file}:')
    annotated_image = image.copy()
    for detected_object in results.detected_objects:
      mp_drawing.draw_landmarks(
          annotated_image, detected_object.landmarks_2d, mp_objectron.BOX_CONNECTIONS)
      mp_drawing.draw_axis(annotated_image, detected_object.rotation,
                           detected_object.translation)
      cv2.imwrite('/tmp/annotated_image' + str(idx) + '.png', annotated_image)

全部代码可交流私信

主要讲解:主要调用库函数,然后可以对视频流或者读取电脑摄像头,真正做到方便实用,高效快捷,实时显示结果 实施输出模型,可以毕业设计用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web项目的初始化

Tomcat 安装配置 Tomcat 官方站点&#xff1a;Apache Tomcat - Welcome! 。 安装 得到下载的安装包&#xff08;一般是 zip 文件&#xff09;&#xff0c;并解压到你指定的目录&#xff08;建议不要解压在 c 盘&#xff09;&#xff1b;&#xff08;这里以 windows10 系统为例…

网上电子商城的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;21 世纪以来&#xff0c;人类经济高速发展&#xff0c;人们的生活发生了日新月异的变化&#xff0c;特别是计算机的应用及普及到经济和社会生活的各个领域。在消费领域&#xff0c;网上购物已经成为大众所接受的一种新型的消费方式…

javaEE初阶 — 如何用 HTML 编写一个简易代码

文章目录html1. 建立一个文本文档的方式编写2. 标签的方式编写3. 补充&#xff1a;更改后缀的方式4. 如何使用 VS Code 来编写一个 html 代码4.1 VS Code 的下载4.2 VS Code 的使用html html 用来描述网页的骨架&#xff0c;这是一个非常有特点的 标签化 的语言。 下面来写一个…

分布式对象存储——Apache Hadoop Ozone

前言 本文隶属于专栏《大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见大数据技术体系 1. 概述 Ozone是Apache Hadoop项目的子项目&#xf…

MySQL下载安装以及环境配置教程

目录MySQL 下载MySQL 安装配置环境变量MySQL 下载 进入官方网站 https://www.mysql.com/ 点击 DOWNLOADS 进入下载页面 免费版本点击下方的 MySQL Community (GPL) Downloads 点击 MySQL Community Server 点击 Go to Download Page 进入下载页面 点击 Download 点击 No thank…

【逐步剖C】-第九章-字符串函数和内存函数

前言&#xff1a;第一部分先简单介绍一下常用字符串函数和内存函数&#xff0c;第二部分再重点介绍重要函数的的模拟实现。若日后再发现某些好用或者有意思的库函数&#xff0c;都会在本文中进行更新。 一、常用库函数介绍 1. strlen &#xff08;1&#xff09;函数声明&…

C语言-基础了解-11-C作用域规则

C作用域规则 一、C作用域规则 任何一种编程中&#xff0c;作用域是程序中定义的变量所存在的区域&#xff0c;超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量&#xff1a; 1、在函数或块内部的局部变量 2、在所有函数外部的全局变量 3、在形式参数的函数参数定…

Oracle Primavera P6 学习地图(Updating)

目录P6介绍及使用P6异常处理P6部署配置维护P6集成及开发P6集成及开发为了方便大家更好的针对查询我博客中的内容&#xff0c;特针对P6不同方面进行简要分类&#xff0c;如在使用P6过程中有碰到任何问题&#xff0c;欢迎通过如下方式与我取得联系(查询联系方式) P6介绍及使用 P…

什么是EventLoop?怎么测试Node或页面的性能

Event Loop 机制大家应该都有了解。本文利用 EventLoop 去做一个有趣的检测node或页面性能的代码&#xff0c;顺便介绍了一下EventLoop&#xff0c;希望对大家有所帮助&#xff01; Event Loop Event Loop 机制大家应该都有了解。我先重复总结一下。 Node.js 和 Javascript 的…

1.6 独立性

1.6.1 事件的独立性1.两个事件的独立性中任意两个事件都相互独立、則称 A,.A.&#xff0c;,A.两两独立&#xff0c;显然•若&#xff0c;个事件相互独立,則一定两两独立,反之,不一定成立【例 1.251 将一个均匀的正四面体的第一面染上红、黄、蓝三色&#xff0c;将其他三百多别染…

C语言实现扫雷【详细讲解+全部源码】

扫雷的实现1. 配置运行环境2. 扫雷游戏的初步实现2.1 建立扫雷分布模块2.2 创建名为board的二维数组并进行棋盘初始化2.3 打印棋盘3. 接下来该讨论的事情3.1 布置雷3.2 排查雷3.3 统计坐标周围有几个雷4. 完整扫雷游戏的实现4.1 game.h4.2 game.c4.3 扫雷.c1. 配置运行环境 本游…

你相信吗?用ChatGPT写井字棋游戏仅需几分钟

井字棋 我们先实现一个最基本的使用控制台交互的井字棋游戏。 为了保持代码整洁&#xff0c;方便后续扩展&#xff0c;我们使用类Board来实现棋盘。除了常规的初始化方法__init__和字符串方法__str__&#xff0c;我们还要判断游戏的胜负、棋子位置的合理性。 在main中&…

扩展WSL2虚拟硬盘的大小

扩展WSL2虚拟硬盘的大小 1、在 Windows PowerShell 中终止所有 WSL 实例 wsl --shutdown2、查看 WSL 实例运行状态&#xff0c;确认关闭&#xff0c;并记住发行版的名称 wsl -l -v如果没有更改移动过发行版安装包位置&#xff0c;那么可以通过以下方法查找到发行版的安装包位…

[算法]选择排序

目录 1、选择排序的实现 2、例子 3、代码实现 4、时间复杂度和空间复杂度 5、选择排序的缺点——不稳定性 1、选择排序的实现 选择排序就是每一轮选择最小的元素直接交换到左侧。这种排序的最大优势&#xff0c;就是省去了多余的元素交换。 2、例子 原始数组和选择排序的…

NSIS 多语言安装界面

NSIS默认的打包界面多语言不太好用&#xff0c;因为界面不能跟着切换语言上面的文字也随着切换&#xff0c;所以只能是考虑自定义的方法解决这个问题 本人采用duilib与NSIS结合的方法&#xff0c;效果如下所示&#xff1a; ;获取系统默认的语言 System::Call Kernel32::Ge…

仪表放大器放大倍数分析-运算放大器

仪表放大器是一种非常特殊的精密差分电压放大器&#xff0c;它的主要特点是采用差分输入、具有很高的输入阻抗和共模抑制比&#xff0c;能够有效放大在共模电压干扰下的信号。本文简单分析一下三运放仪表放大器的放大倍数。 一、放大倍数理论分析 三运放仪表放大器的电路结构…

如何快速在企业网盘中找到想要的文件

现在越来越多的企业采用企业网盘来存储文档和资料&#xff0c;而且现在市面上的企业网盘各种各样。在使用企业网盘过程中&#xff0c;很多用户会问到企业网盘中如何快速搜索文件的问题。但是无论是“标签”功能还是普通的“关键词搜索”功能&#xff0c;都是单层级的&#xff0…

SAP MM学习笔记7-SAP标准功能和Add-on之间的关系

大家都知道SAP标准功能异常强大&#xff0c;而且也可以用ABAP做Add-on开发&#xff0c;在ERP市场长期占No1地位&#xff0c;那么SAP标准功能和Add-on之间到底有什么的关系呢&#xff1f; 咱们今天就来探讨一下。 1,一图说明标准和Add-on之间的关系 <图中上面一行> 1&am…

Javalin解构

Javalin Javalin是一个轻量级http框架&#xff0c;我们可以很容易的了解请求的处理过程及其设计&#xff0c;具有较高的学习意义。 从demo说起 public static void main(String[] args) {Javalin app Javalin.create(config -> {System.out.println("用户配置"…

Java——N叉树的层序遍历

题目链接 leetcode在线oj题——N叉树的层序遍历 题目描述 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&…