基于RGB-D的6D目标检测算法

news/2024/11/22 22:21:00/

基于RGB-D的6D目标检测算法

本文参考了ITAIC的文章 A Review of 6D Object Pose Estimation

概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQX8ke6j-1683188966051)(https://mezereon-upic.oss-cn-shanghai.aliyuncs.com/uPic/image-20230420165625575.png)]

这里介绍几篇经典的基于RGB-D的6D目标检测算法。

RGB-D,就是RGB + Depth,也就是彩色图像 + 深度信息。

直觉上来说,比单纯的RGB有了更多的信息,精度也会变得更加高了。

这里给出RGB部分方法的性能进行对比,RGB-D的指标是采用的ADD(-S), 所以我们就只看第3,4,5列的指标

image-20230420165844227

算法REDE在Linemod、Occlusion Linemod、YCB-Video数据集上基本已经超越了所有的RGB算法。

接下来,我们主要介绍三个RGB-D算法G2LNet、PVN3D以及REDE。

G2L-Net

G2L-Net: Global to Local Network for Real-time 6D Pose Estimation with Embedding Vector Features

image-20230420170325648

如上图所示,分成三个步骤:

  1. 全局的定位(Global Localization)
  2. 平移的定位(Translation Localization)
  3. 旋转的定位(Rotation Localization)
image-20230420170525035

全局的定位

具体而言,首先将RGB图像送到CNN中,得到三个东西:边界框,类别概率图(class probability map),类别向量

文章使用的是一个YOLOv3作为2D的目标检测器

利用2D的边界框架上深度信息,就可以构造出一个个棱台(frustum proposal),只考虑棱台中包含的空间点,便减少了所需要计算的数据规模。

这里文章引入了一种3D球的约束,将点云变得更加紧致

最终输出一系列的点云,对应2D目标检测的结果

平移的定位

利用3D的点云信息,做语义分割,得到分割后的点云,即每一个空间点有自己的类别

旋转的定位

这里将类别向量引入,以点云信息作为输入,直接输出对应的旋转

PVN3D

PVN3D: A Deep Point-Wise 3D Keypoints V oting Network for 6DoF Pose Estimation

image-20230504145640350

个人认为其主要的贡献在于结合了语义分割的技术

如上图所示,整个PVN3D可以被分成多个部分:

  • 特征抽取
  • 3D关键点检测
  • 语义分割
  • 6DoF姿态估计

特征抽取

这里使用一个卷积网络CNN和一个PointNet++分别提取RGB特征以及深度特征,然后进行特征融合。

3D关键点检测、语义分割

使用MLP来分别估计关键点的平移、中心点以及每一个点的语义类别标签

可以看到,其输出的维度分别对应3、22、3,即3个平移的偏移值,22个类别,以及3个中心点偏移值。

然后使用语义标签和中心点,使用投票Vote和聚类Cluster,得到一个实例级别的语义分割

然后将这个结果结合关键点检测,就能给这些关键点分配对应的实体

6DoF姿态估计

使用最小二乘(Least-Square Fitting)实现姿态估计,输出旋转矩阵R以及平移t

REDE

REDE: End-to-End Object 6D Pose Robust Estimation Using Differentiable Outliers Elimination

我们先来看看该方法和其他方法的区别

image-20230504152511962

如上图所示,©是基于关键点回归的方法,(d)是REDE方法

可以看到,用CNN去做关键点的检测这一步,大家都是一样的,只不过在后面对姿态进行估计时,REDE是可差分的,能够直接反向传播到前面所有的可学习的参数上。

回想一下上面的PVN3D,在计算关键点之后,便使用最小二乘去估计姿态,估计的偏差并不会影响前面的参数,所以仍然属于©。

下面给出其方法的概览

image-20230504152912451

从左到右:

  • 首先使用点级别的编码
    • 类似PVN3D,这里也是分别进行编码,用PSPNet抽取RGB特征,用PointNet抽取深度图信息
    • 最后将RGB特征和深度特征融合在一起,具体实现可以参考其仓库中的 lib/network.py
  • 然后使用快速点采样 (Fast Point Sample,FPS) 得到K个关键点,用网络估计这些关键点的偏移,计算L1误差
  • 这里引入一个异常偏移消除 (Outlier Offsets Elimination) 技术,对于每一个点的偏移估计,多计算一个置信度c,在计算关键点位置的时候,乘以这个置信度
  • 使用一个Minimal Solvers Bank,对每三个关键点求姿态估计,这样就可以生成 C K 3 C_K^3 CK3 个姿态,提高整体的鲁棒性
  • 最后,对 C K 3 C_K^3 CK3 个姿态,加权平均,通过2范数和F范数计算偏移和旋转的误差,实现可微分的误差计算

http://www.ppmy.cn/news/61482.html

相关文章

极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践

业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp 则是 Whisper 模型的 C/C 移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了 Core ML 支…

城市轨道交通自动售检票系统

概述 城市轨道交通自动售检票系统(AFC)是基于计算机、通信、网络、自动控制等技术,实现轨道交通售票、检票、计费、收费、统计、清分、管理等全过程的自动化系统。可以提高轨道交通的运营效率,满足乘客的快速出行需求&#xff0c…

Illustrator如何使用符号与图表之实例演示?

文章目录 0.引言1.使用Microsoft Excel数据创建图表2.修改图表图形及文字 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文…

freetype用法

freetype用法 文章目录 freetype用法0.实现1.变量定义2.lcd操作获取屏幕信息3.freetype初始化4.绘画 1.字形度量2.类1.FT 中的面向对象2.FT_Library 类3.FT_Face 类4 FT_Size 类5 FT_GlyphSlot 类 3.函数1.把一个字符码转换为一个字形索引FT_Get_Char_Index函数2.从 face 中装…

Jetpack Compose 中的Deep Linking — Android

Jetpack Compose 中的Deep Linking — Android 在本文中,我们将学习如何在 Jetpack Compose 中轻松实现深度链接。 什么是深度链接? 深层链接允许用户直接从外部来源(例如网站或其他应用程序)导航到应用程序内的特定内容。 添…

Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术

查看原文:Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术 目标: 了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;熟悉模型的发展历程,常见模型及各自特点;理解Noah-MP模型的原理&#…

将页面元素隐藏的10种方法

在Web开发中,隐藏页面元素使其视觉不可见是一个非常常见的需求。为了实现这一目标,我们通常会采用多种方法,最常用的例如CSS的display属性,只要设置为node即可隐藏元素。 本文将通过对当前所有可用的隐藏元素的方法做一个总结&…

linux部署k8s

linux部署k8s 0、k8s的前世今生1、下载k8s2、k8s文档2.1、容器化部署的优越性2.1.1、Traditional deployment era2.1.2、Virtualized deployment era2.1.3、Container deployment era 3、安装k8s3.1、Install kubectl on Linux3.2、 0、k8s的前世今生 参考链接: https://kuber…