6D目标检测简述

news2024/11/16 17:56:39

6D目标检测简述

文章目录

  • 6D目标检测简述
    • 介绍
      • 基于模版匹配的算法
      • 基于点的算法
      • 基于描述子的算法
      • 基于特征的算法
    • 基于深度学习的6D姿态估计
      • 基于RGB图像的深度学习方法
          • **SSD-6D**
          • **Deep-IM**
          • **PV-Net**
          • **HybridPose**
          • **Self6D**
          • **DSC-PoseNet**
          • **GDR-Net**
          • **SO-Pose**
          • **KDF-Net**

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

介绍

6D目标检测,和传统的目标检测类似,都是从图像(包括点云)中去识别物体的位置。

传统的2D目标检测,像是SSD、YOLO等,识别的结果是一个边界框(bounding box)

而3D目标检测的结果则是一个3D的边界框。

6D目标检测的输出结果包括两个部分:

  • 物体的空间坐标:x, y, z
  • 物体的三个旋转角: pitch, yaw, roll

传统的6D目标检测可以被分类成以下几种:

  • 基于模版匹配
  • 基于点
  • 基于描述子
  • 基于特征
方法优点缺点
基于模版匹配擅长针对无纹理或者弱纹理的物体对遮挡比较敏感
基于点抗遮挡依赖纹理细节
基于描述子抗遮挡依赖纹理细节
基于特征擅长弱纹理,同时抗遮挡较难处理对称物体

基于模版匹配的算法

基于模版匹配的算法,其思路就是: 生成尽可能多的模版,每一个模版表示不同的旋转姿态,同原图进行相似度的计算

由于实际环境会受到光照、遮挡的影响,这类算法在这种情况下表现较差。

同时,由于需要生成多的模版,所以算法的计算代价也较高。

较为经典的模版匹配算法,比如 linemod

ICCV-2011: Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes

使用了图像的色彩梯度(Color Gradient) 来抵抗光照和噪声等影响,同时引入了深度信息来构建数个表面垂直向量来作为特征

image-20230326153538481

基于点的算法

这里所说的点,其实是空间中的点。基于点的算法,其本质是: 利用点云之间的匹配来实现姿态估计

和模版匹配类似,通过构造一些点的特征,边的特征,然后生成不同姿态下的特征集合,通过特征匹配进而实现点云的匹配。

image-20230326153518947

这里给出一些相关文献,供大家参考:

CVPR-2010: Model globally, match locally: Efficient and robust 3D object recognition

IROS-2012: 3D pose estimation of daily objects using an RGB-D camera

基于描述子的算法

描述子通常是用来刻画点周围的一些几何特征,比如说:点坐标的特点,法向量或者是曲线

该方法和基于点的方法类似,都对纹理特征依赖比较严重

image-20230329152918288

本质也是需要预先生成一堆描述子集合,然后逐个进行匹配。

一些经典的方法,比如说点特征直方图(Point Feature Histogram, PFH),有兴趣的读者可以自行阅读

R. B. Rusu, N. Blodow, Z. C. Marton, et al, Aligning Point Cloud Views using Persistent Feature Histograms, Proceedings of IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 3384-3391, 2008.

基于特征的算法

同样的,我们需要生成一系列特征集合,进行模型的训练,如下图所示:

image-20230410162911103

通过一些机器学习的方法,比如随机森林等,训练一个分类器,以特征作为输入,输出对6D姿态的估计

  1. E. Brachmann, A. Krull, F. Michel, et al, Learning 6D Object Pose Estimation Using 3D Object Coordinates, Proceedings of European Conference on Computer Vision, pp. 536-551, 2014.
  2. M. A. Fischler, R. C. Bolles, Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography, Communications of the ACM, vol. 24, issue 6, pp. 381-395, 1981.

基于深度学习的6D姿态估计

这里,我们将所有的基于深度学习的方法分成两类:

  • 基于RGB图像的方法
  • 基于RGB-D图像的方法

RGB-D图像即是在原本的图像通道上,加了一个深度通道,代表像素点的深度信息

基于RGB图像的深度学习方法

这里给出一些相关的方法的总结表格

image-20230410163652820
  1. SSD-6D: Making RGB- Based 3D Detection and 6D Pose Estimation Great Again,
  2. DeepIM: Deep Iterative Matching for 6D Pose Estimation
  3. PVNet: Pixel-Wise Voting Network for 6DoF Pose Estimation
  4. HybridPose: 6D Object Pose Estimation Under Hybrid Representations
  5. Self6D: Self-supervised Monocular 6D Object Pose Estimation
  6. Dsc-posenet:Learning6dofobjectpose estimation via dual-scale consistency
  7. GDR-Net: Geometry- Guided Direct Regression Network for Monocular 6D Object Pose Estimation
  8. SO-Pose: Exploiting Self-Occlusion for Direct 6D Pose Estimation
  9. KDFNet: Learning Keypoint Distance Field for 6D Object Pose Estimation

其中ADD(-S) 代表预测点和最近的真实点的距离偏差,越小越好。

SSD-6D

该方法是将原来目标检测的SSD范式拓展到了6D目标检测领域,使用InceptionV4,估计2D的边界框,并且对所有的视角和旋转进行打分。

image-20230414152657538

可以看到,最后的预测结果由四个部分组成:

  • 4:2D边界框坐标
  • C:代表物体的类别
  • V:代表物体的视角个数,可以理解成物体的角度
  • R:平面内旋转的类别 (in-plane rotation class)

同时,SSD-6D使用ICP,来提高精确度,优化姿态的结果

在6D姿态识别中,ICP是指迭代最近点(Iterative Closest Point)算法。该算法主要用于将一个点云或三维模型与另一个点云或三维模型对齐或配准。在6D姿态识别中,ICP算法可以用来估计目标物体的姿态,即将一个模型与目标物体的点云匹配,找到最合适的姿态使两个模型之间的误差最小化。通过迭代求解最近点匹配问题,ICP算法可以不断优化姿态估计的准确性,从而实现6D姿态识别。

Deep-IM
image-20230414154416610

DeepIM使用了一个FlowNetSimple的骨干网络,用来预测一个相对的特殊欧式群 SE(3) 的元素

SE(3) 是一个包含所有旋转和平移的集合,其中该集合中的元素可以表示成4x4的矩阵
T = ( R v 0 1 ) T = \begin{pmatrix} R&v\\ 0&1 \end{pmatrix} T=(R0v1)
其中, R R R 是一个3x3的旋转矩阵, v v v 是一个平移向量

在训练过程中,DeepIM还会有两个额外的分支,用来进行Mask和光流估计

FlowNetSimple: A. Dosovitskiy, P. Fischer, E. Ilg, et al, FlowNet: Learning Optical Flow with Convolutional Networks, Proceedings of International Conference on Computer Vision, pp. 2758-2766, 2015.

PV-Net
image-20230414155503460

如上图所示,PV-Net首先使用一个网络,做向量场估计以及语义分割,然后投票得到关键点位置的假设,最后得到关键点位置的分布

这里,PV-Net的骨干网络使用的是ResNet18。

HybridPose
image-20230414165454511

HybridPose方法的特点就是揉合了多种不同的特征:关键点、边缘向量和对称相似(symmetry correspondences)

Self6D

首个将自监督学习引入6D姿态估计中,利用神经渲染(neural rendering)来实现视觉和几何的对齐

image-20230414170212375

(a)先使用生成的数据进行模型训练

(b)基于训练后的模型,在大量的RGB-D数据上进行推断

(c)然后基于这些推断结果再进行训练,优化6D姿态检测的结果

DSC-PoseNet
image-20230415155211622

主要分成两个步骤:

1. 利用2D边界框进行弱监督的分割

首先使用一个分割网络,在生成的数据上进行初始训练。

然后在实际的图像上推断,利用2D边界框移除掉一些异常的分割结果,反复优化这个分割网络

2. 自监督关键点学习

构造一个双尺度(dual-scale)的自监督信号来训练DSC-PoseNet

主要有两个部分:

  • 原始图像经过DSC-PoseNet之后,得到2D关键点和分割结果
  • 利用2D边界框,裁剪和缩放之后,经过DSC-PoseNet,得到2D关键点和分割结果

利用第一部分的分割结果,以及分割网络的结果进行对齐,

第一和第二部分得到的关键点进行比对,计算出不同尺度下的连续性,构造误差

GDR-Net
image-20230415160856438

同先前的一些网络输出一样,最后输出包含两个部分,一个是旋转矩阵,一个是平移向量

在训练过程中,会使用一个随机放大技巧(Dynamic Zoom-In), 然后经过网络生成3个中间几何特征(intermediate geometry feature),分别是:

  • Dense Correspondences Map: M 2 D − 3 D M_{2D-3D} M2D3D
    • 其大小是2x64x64,本质上就是每个像素2D投影的坐标
  • Surface Region Attention Map: M S R A M_{SRA} MSRA
    • 对于每一个像素来说,输出该点所属于表面区域,这里应该是不同的表面区域代表不同的类别
    • 可以看到形状是64x65x65,意味着一共有64个不同表面区域
    • 文章后续探究了不同的表面区域数量对方法的影响,有兴趣的可以看一下原文
  • Visible Object Mask: M v i s M_{vis} Mvis
    • 就是一个遮罩,类似语义分割的物体遮罩
SO-Pose
image-20230420141221133

如上图所示,该方法的特点就是引入了一个自遮挡信息(Self-Occlusion Information),进一步增强了准确度

KDF-Net

传统方法通常都是使用像素粒度的投票来确定2D的关键点,利用解决PnP问题来求解物体的姿态

不过这种投票方法,因为是基于方向的,所以难以处理一些比较长、薄的物体

这些长、薄的物体的方向难以被推断出来,因此,该方法提出了一种关键点距离场 (Keypoint Distance Field)

利用KDF来预测2D的关键点位置

image-20230420142331314

如上图所示,首先用一个全卷积网络来预测KDF,对于每一个像素应该都有一个KDF,然后使用RANSAC方法去随机采样N次

再使用投票来选出关键点,最后使用PnP求解

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

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

相关文章

一文搞定接口幂等性架构设计方案

幂等性介绍 现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题&am…

VIP + Nginx + Keepalived

VIP(Virtual IP Address),虚拟IP地址,主要是用来进行不同主机之间的切换,主要用在服务器的主从切换技术。主从服务器都配置同一个VIP地址,保障系统不间断切换。 Keepalived是高可用解决方案,借助…

Zookeeper源码分析——ZK服务端加载数据源码解析

ZK服务端加载数据源码解析 (1)zk 中的数据模型,是一棵树,DataTree,每个节点,叫做DataNode (2)zk 集群中的DataTree 时刻保持状态同步 (3)Zookeeper 集群中每个…

现代化生态灌区智慧灌溉管理系统-中小灌区节水改造

系统概述 现代化生态灌区智慧灌溉管理系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依…

SpringCloud断路器——Hystrix

Hystrix 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 简介 Hystrix是一个用于处理分布式系统的延迟和容错的一个开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix…

React context 用法

Context 提供了一个无需为每层组件手动添加 props,就能在组件树间进行数据传递的方法。 1. 用法 React.createContext const MyContext React.createContext(defaultValue);创建一个 Context 对象。当 React 渲染一个订阅了这个 Context 对象的组件,…

服务(第六篇)LNMP

第一步、安装nginx: 前期准备: 安装依赖环境: 创建nginx用户和解压: 编译安装nginx: 优化: 进入/usr/local/systemd/system创建nginx.service(开启nginx服务) 结果: 第…

Vector - CAPL - Panel面板_03

CheckBox 功能:复选框可以用作控制和显示元素,使用它可以启动、显示、使能等选项。 适用场景: 1、特定场景触发某些使能信号,例如转速达到5000r/mi后使能Checkbox,触发错误场景等 2、亦或者将信号设置为特定的值。 3、…

树莓派计算机视觉编程:1~5

原文:Raspberry Pi Computer Vision Programming 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候&#xff…

资讯分享 | 华为云携手图扑软件共话行业新发展

华为云携手制造行业同路人共话行业新发展 当前,国家高度重视制造业的“智改数转”,然而面向工业数字化转型的复杂场景,涉及的工业软件和信息软件星罗棋布、不胜枚举。 因此,企业在数字化转型落地过程中会产生语言无法对齐、应用…

(数字图像处理MATLAB+Python)第五章图像增强-第四、五节:基于模糊技术和基于伪彩色处理的图像增强

文章目录 一:基于模糊技术的图像增强(1)图像的模糊特征平面(2)算法步骤(3)程序 二:基于伪彩色处理的图像增强(1)真彩色、假彩色和伪彩色(2&#x…

《扬帆优配》TMT板块或成跨年主线 大消费行业复苏“虽迟但到”

4月14日,第61届我国资本商场高档研讨会暨上证春季所长论坛的圆桌二环节题为“新气象新特征 如何掌握2023年出资主线”,由浙商证券研究所联席所长邱世梁主持。 我国经济延续复苏态势,结构上正在推进以高端制作、安全自主、数字经济为导向的工业…

大型医院健康体检管理系统源码(PEIS)

一、体检管理系统(PEIS)概念 体检管理系统(PEIS)是以健康为中心的身体检查。一般医学家认为健康体检是指在身体尚未出现明显疾病时,对身体进行的全面检查。方便了解身体情况,筛查身体疾病。即应用体检手段对…

Unity --- UGUI(Unity Graphical user interface)--- Canvas画布

1.UI --- User Interface --- 使用者与机器之间的交互界面 1.所谓的自适应系统指的是分辨率的适应: 比如在一个分辨率下做的UI放到另一个分辨率下显示时,如果没有自适应系统的话就会导致UI过大,过小,被辟成一半等等情况&#xff…

文心一言眼里的SQL世界

目录 一、Java基础教程系列二、先听听文心一言怎么说?三、话不多说,开干。1、要有一个正确的数据库学习路线,做一个细致的MySQL学习规划。2、学习资料推荐 四、MySQL基础知识总结五、MySQL进阶六、Redis和MongoDB需要学吗?七、如何…

代码随想录Day56

今天继续学习动规解决子序列问题。 674.最长连续递增子序列 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 …

GeoPandas 笔记:合并数据

很多地方和 pandas 笔记&#xff1a;合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客是类似的 1 导入数据 import geopandas import pandas as pd world geopandas.read_file(geopandas.datasets.get_path(naturalearth_lowres)) world cities geopand…

《快速掌握PyQt5》专栏整理成书出版啦!

首先非常感谢大家对《快速掌握PyQt5》专栏的喜爱与支持&#xff01;该专栏现已整理成书出版&#xff0c;书名为《PyQt编程快速上手》。 本书内容在专栏内容的基础上进行了多方面的优化&#xff0c;内容更加丰富&#xff0c;知识点布局更加合理&#xff0c;代码和解释也更加简洁…

Zookeeper源码分析——ZK选举源码解析

ZK选举源码解析 Zookeeper选举机制——第一次启动 Zookeeper选举机制——非第一次启动 ZK选举源码解析 ZK选举准备源码解析 public synchronized void start() {if (!getView().containsKey(myid)) {throw new RuntimeException("My id " myid " not in the …

Camunda流程引擎 Modeler (二)

Camunda Modeler是Camunda官方提供的建模器&#xff1a; Modeler - 独立安装的建模器&#xff08;[windows、linux、mac] 一、下载camunda-modeler Download The Camunda BPMN / DMN Process Modeler | Camunda Release v5.10.0 camunda/camunda-modeler GitHubAn integrate…