目标检测与跟踪 (1)- 机器人视觉与YOLO V8

目录

1、研究背景

2. 算法原理及对比

 2.1 点对特征(Point Pairs)

 2.2 模板匹配

 2.3 霍夫森林

 2.4 深度学习 

3、YOLO家族模型演变

4、YOLO V8


1、研究背景

       机器人视觉识别技术是移动机器人平台十分关键的技术,代表着机器人智能化、自动化及先进性的条件判定标准。 如何在最短时间内最精确地识别检测到出现在深度相机视野范围内的目标,将检测到的三维点云数据提取出来是机器人后续抓取三维物体的基础,并且无论对于工业用还是服务业都有着巨大的意义与研究价值。基于机器视觉的三维物体目标的识别、检测与定位技术已经成功应用于众多工业领域中。

        配合着机械臂平台,以其为基础的操作系统可以完成一系列繁重复杂的工作,大大解放了人类的双手,提高了工业生产效率。作为促成这一切成果基础的机器人视觉识别技术正在逐步建立、稳定发展并一步步走向成熟。

        近年来,随着机器人相关技术的快速发展,其依靠的平台也快速的更新换代。 之前价格较为昂贵的3D工业相机、3D图像传感器、3D扫描仪渐渐得到普及,传感器的微型化、智能化、低功耗以及高效率带来的深度图像设备价格大幅下降,随之机器人视觉识别技术也越发深入且成熟。

        三维物体目标检测和识别、6D位姿估计、机械臂运动规划控制、移动平台的线路规划与基于即时定位与地图构建SLAM(Simultaneous Localization And Mapping)的精确导航、三维物体检测抓取是移动机器人平台的核心关键技术,其精度直接影响着最后整个移动机器人控制系统的抓取成功率以及任务的完成度。

         3D物体实时检测、三维目标识别、6D位姿估计一直是机器人视觉领域的核心研究课题,最新的研究成果也广泛应用于工业信息化领域的方方面面。通过众多的传感器,例如激光扫描仪、深度摄像头、双目视觉传感即可获得三维物体的识别数据,以此为基础开展研究的计算机视觉方向领域也有着较为深入的发展。

 

 

2. 算法原理及对比

        刚体的6D位姿估计按照使用的输入数据,可以分为基于2D图像的方法和基于3D点云的方法。早期基于2D图像的6D位姿估计方法处理的是纹理丰富的物体,通过提取显著性特征点,构建表征性强的描述符获得匹配点对,使用PnP方法恢复物体的6D位姿。对于弱纹理或者无纹理物体,可以使用基于模板的方法,检索得到最相似的模板图像对应的6D位姿,也可以通过基于机器学习的投票的方法,学习得到最优的位姿。

        随着2011年以kinect为代表的的廉价深度传感器的出现,在获取RGB图像的同时可以获得2.5D的Depth图像,进而可以辅助基于2D图像的方法。为了不受纹理影响,也可以只在3D空间操作,此时问题变成获取的单视角点云到已有完整物体点云的part-to-whole配准问题。如果物体几何细节丰富,可以提取显著性3D特征点,构建表征性强的描述符获得3D匹配点,使用最小二乘获得初始位姿;也可以使用随机采样点一致算法(Ransac)获得大量候选6D位姿,选择误差最小的位姿。

        自2012年始,深度学习在2D视觉领域一骑绝尘,很自然的会将深度学习引入到物体6D位姿估计,而且是全方位的,无论是基于纯RGB图像、RGB和Depth图像、还是只基于3D点云,无论是寻找对应、寻找模板匹配、亦或是进行投票,都展现了极好的性能。

        随着在实例级物体上的6D位姿估计趋于成熟,开始涌现了类别级物体6D位姿估计的方法,只要处理的物体在纹理和几何结构上近似,就可以学习到针对这一类物体的6D位姿估计方法,这将极大提升这项技术在机器人抓取或者AR领域的实用性。

本文分别介绍基于2D图像和基于3D点云的,基于对应(Correspondence-based)、模板(Template-based)和投票(Voting-based method)的物体6D位姿估计方法,综合如下表。

在这里插入图片描述

 

 

 2.1 点对特征(Point Pairs)

          2010年Bertram Drost等人提出了基于Point Pair 特征的PPF(PointPairFeature)算法。PPF算法使用物体的全局模型描述,基于定向点对特征,通过快速投票方案在本地匹配全局模型实现物体三维到二维搜索空间上的对应匹配识别,适用于快速监测点云较为稀疏或者缺乏表面纹理信息及局部曲率变化极小的物体。

        PPF算法在有噪声、部分遮挡情况下有较好的识别能力,然而其不能解决具有相似噪声背景下物体识别问题,而且并没有很好的利用物体的边缘信息。

 2.2 模板匹配

          2011年Stefan Hinterstoisser等人提出针对3D刚性物体的实时检测与定位算法LineMod算法。其基本原理是通过提取物体各个方向的深度图像采集模型,采用彩色图像的梯度信息结合物体表面的法向特征作为模板匹配的依据,训练其方向梯度生成物体模板后与实际图像的各对应方向位置匹配推测匹配结果。

         最后利用ICP算法对检测结果进行位姿修正完成3D刚性物体的位置检测判断。虽然LineMod利用了物体的多种特征,很好的解决了多种类目标在简单场景下的物体识别,然而其在模板分类时只关注物体的边缘,导致其在稍复杂实时模板匹配时识别率大幅度下降。

        2018年Tomas Hodan使用现有的数据集提出BOP算法,建立了新的模板分类基准。

        然而其只能识别单个场景下多类物体的识别,遇到同类物体较多以及重叠场景算法识别能力迅速下降。

 2.3 霍夫森林

  2009年Juergen Gall等人提出了基于霍夫森林的目标检测算法,通过构建一个随机森林(random forest)从图像上提取图像块,在构建的随机森林中的每个决策树上进行判断处理并在霍夫空间中进行投票,图像密集块采样后输出霍夫图像完成对目标重心位置的投票。

 当然在该算法提出后基于Hough Forest算法的目标检测也有着深入的发展。

 2.4 深度学习 

  2017年Wadim Kehl等人提出了基于SSD算法的三维物体6D位姿估计,通过将2D图像深度学习的思路与三维物体RGBD图像的特点,利用深度学习网络完成局部图像2D检测、特征图与预训练核卷积,并使用投影属性来解析深度网络推断的试点及平面内旋转分数以此构建6D位姿假设。

【REF】:https://arxiv.org/abs/1905.06658

 一、从机器人视觉识别领域-三维目标识别方向讲起 - 古月居

 刚体6D位姿估计方法综述_Guoguang Du的博客-CSDN博客


 

 

参考文献

2012-Model based training, detection and pose estimation of texture-less 3d objects in heavily cluttered scenes
2012-3d object detection and localization using multimodal point pair features
2014-Learning 6d object pose estimation using 3d object coordinate
2014-Latent-class hough forests for 3d object detection and pose estimation
2014-Super 4PCS: Fast Global Pointcloud Registration via Smart Indexing
2015-Detection and fine 3d pose estimation of texture-less objects in rgb-d images
2015-Go-icp: A globally optimal solution to 3d icp point-set registration
2015-The YCB object and model set: Towards common benchmarks for manipulation research
2017-Bb8: a scalable, accurate, robust to partial occlusion method for predicting the 3d poses of challenging objects without using depth
2017-Posecnn: A convolutional neural network for 6d object pose estimation in cluttered scenes
2017-Ssd-6d: Making rgb-based 3d detection and 6d pose estimation great again
2018-6d pose estimation using an improved method based on point pair features
2018-Deep-6dpose: recovering 6d object pose fromasinglergbimage
2018-Implicit 3d orientation learning for 6d object detection from rgb images
2018-Label Fusion: A Pipeline for Generating Ground Truth Labels for Real RGBD Data of Cluttered Scenes
2018-Learning to predict dense correspondences for 6d pose estimation
2018-PVNet Pixel-wise Voting Network for 6DoF Pose Estimation
2018-Real-time seamless single shot 6d object pose prediction
2018-Robust 3d object tracking from monocular images using stable parts
2018-Segmentation-driven 6d object pose estimation
2019-6-pack: Category-level 6d pose tracker with anchor-based keypoints
2019-Cdpn: Coordinates-based disentangled pose network for realtime rgb-based 6-dof object pose estimation
2019-Deep closest point: Learning representations for point cloud registration
2019-Densefusion: 6d object pose estimation by iterative dense fusion
2019-Dpod: 6d pose object detector and refiner
2019-Latentfusion: End-to-end differentiable reconstruction and rendering for unseen object pose estimation
2019-Normalized object coordinate space for category-level 6d object pose and size estimation
2019-One framework to register them all: Pointnet encoding for point cloud alignment
2019-Pcrnet: Point cloud registration network using pointnet encoding
2019-Pointnetlk: Robust & efficient point cloud registration using pointnet
2019-PVN3D: A Deep Point-wise 3D Keypoints Voting Network for 6DoF Pose Estimation
2019-Recovering 6d object pose from rgb indoor image based on two-stage detection network with multi-task loss
2019-Single-stage 6d object pose estimation
2020-6d object pose regression via supervised learning on point clouds
2020-6dof object pose estimation via differentiable proxy voting loss
2020-Learning canonical shape space for category-level 6d object pose and size estimation
2020-Lrf-net: Learning local reference frames for 3d local shape description and matching
2020-Robust 6d object pose estimation by learning rgb-d features
2020-Teaser: Fast and certifiable point cloud registration
2020-Yoloff: You only learn offsets for robust 6dof object pose estimation
 


3、YOLO家族模型演变

        在YOLO出现之前,检测图像中对象的主要方法是使用不同大小的滑动窗口依次通过原始图像的各个部分,以便分类器显示图像的哪个部分包含哪个对象。这种方法是合乎逻辑的,但非常迟缓。经过了一段时间的发展,一个特殊的模型出现了:它可以检测目标物ROI,速度最快的算法Faster R-CNN平均在0.2秒内处理一张图片,也就是每秒5帧。

        在以前的方法中,原始图像的每个像素都需要被神经网络处理几百次甚至几千次。每次这些像素都通过同一个神经网络进行相同的计算。有没有可能做些什么来避免重复同样的计算?

YOLO家族系列模型的演变:从v1到v8(上)-阿里云开发者社区YOLO V8已经在本月发布了,我们这篇文章的目的是对整个YOLO家族进行比较分析。了解架构的演变可以更好地知道哪些改进提高了性能,并且明确哪些版本是基于那些版本的改进,因为YOLO的版本和变体的命名是目前来说最乱的,希望看完这篇文章之后你能对整个家族有所了解。https://developer.aliyun.com/article/1139751

 


4、YOLO V8

        YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务。

        YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

 YOLOv8 深度详解!一文看懂,快速上手 - 知乎

YOLOV8是YOLO系列另一个SOTA模型,该模型是相对于YOLOV5进行更新的。其主要结构如下图所示:

在这里插入图片描述

 

        从图中可以看出,网络还是分为三个部分: 主干网络(backbone),特征增强网络(neck),检测头(head) 三个部分。
        主干网络: 依然使用CSP的思想,改进之处主要有:1、YOLOV5中的C3模块被替换成了C2f模块;其余大体和YOLOV5的主干网络一致。
        特征增强网络: YOLOv8使用PA-FPN的思想,具体实施过程中将YOLOV5中的PA-FPN上采样阶段的卷积去除了,并且将其中的C3模块替换为了C2f模块。
        检测头:区别于YOLOV5的耦合头,YOLOV8使用了Decoupled-Head

其它更新部分:
1、摒弃了之前anchor-based的方案,拥抱anchor-free思想。
2、损失函数方面,分类使用BCEloss,回归使用DFL Loss+CIOU Loss
3、标签分配上Task-Aligned Assigner匹配方式

YOLOV8在COCO数据集上的检测结果也是比较惊艳:

在这里插入图片描述

 

YOLOv5 原理和实现全解析

https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov5_description.html​mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov5_description.htmlicon-default.png?t=N6B9https://link.zhihu.com/?target=https%3A//mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov5_description.html

YOLOv6 原理和实现全解析

https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov6_description.html​mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov6_description.htmlicon-default.png?t=N6B9https://link.zhihu.com/?target=https%3A//mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/yolov6_description.html

RTMDet 原理和实现全解析

https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/rtmdet_description.html​mmyolo.readthedocs.io/zh_CN/latest/algorithm_descripicon-default.png?t=N6B9https://link.zhihu.com/?target=https%3A//mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/rtmdet_description.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言----动态内存分配(malloc calloc relloc free)超全知识点

目录 一.动态内存函数 1.malloc 2.free 3.calloc 4.malloc和calloc的区别 5.realloc 二.动态内存分配的常见错误 1.对null进行解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放动态开辟内存的一部分 5.对同一块动态内存多次…

基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理

基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分,这里不多赘述,基本的实现都在这里:Redux Toolkit 调用 API 的四种方式 和…

visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载

一. 内容简介 visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载 二. 软件环境 2.1 visio 三.主要流程 3.1 下载字体 http://www.downza.cn/ 微软官方给的链接好多字体没有,其他好多字体网站,就是给你看个样式&#xff…

【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT 2

1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网…

记一次ubuntu16误删libc.so.6操作的恢复过程

背景 操作系统:ubuntu16 glibc版本:2.23 修改原因: 经过一系列报错和手工构建之后,vulkansdk成功安装(起码运行./vulkansdu成功),在进行./vulkaninfo进行验证时,报错&#xff1a…

G-channel 实现低光图像增强

G-channel 之前研究低光图像增强时,看到一篇博客,里面介绍了一种方法,没有说明出处,也没有说明方法的名字,这里暂时叫做 G-channel 算法。 博客地址:低照度图像增强(附步骤及源码)…

vue+element中如何设置单个el-date-picker开始时间和结束时间关联

功能&#xff1a;选了开始时间&#xff0c;则结束时间只能选择开始时间之后的&#xff1b;选了结束时间&#xff0c;则开始时间只能选择结束时间之前的 重点是picker-options属性 图示&#xff1a; 代码展示: // body 内部<el-form-item><el-date-pickerv-model&qu…

AI抠图使用指南:Stable Diffusion WebUI Rembg实用技巧

抠图是图像处理工具的一项必备能力&#xff0c;可以用在重绘、重组、更换背景等场景。最近我一直在探索 Stable Diffusion WebUI 的各项能力&#xff0c;那么 SD WebUI 的抠图能力表现如何呢&#xff1f;这篇文章就给大家分享一下。 安装插件 作为一个生成式AI&#xff0c;SD…

一文学透设计模式——抽象工厂模式

创建者模式 抽象工厂模式 概念 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这是很多地方对于抽象工厂模式的描述&#xff0c;说实话感觉不是特别好懂。…

架构训练营学习笔记:5-2 负载均衡架构

多级负载架构 设计关键点 性能需求、维护复杂度之间做取舍。 一可以去掉F5、LVS &#xff1a; F5 是成本较高&#xff0c;LVS 是复杂&#xff0c;对于性能没那么高需求&#xff0c;可以去掉。 二 去掉ng: 服务网关服务 适应于初创公司快速验证&#xff0c;内部的 小系统…

Typescript+React入门

初识Typescript 出现背景 Typescript&#xff08;以下简称TS&#xff09;实际上就是JavaScriptType&#xff0c;用数据类型的方式来约束了JS的变量定义 在JS的基础上增加了类型支持 在JS中大多数错误都是因为数据类型造成的&#xff0c;所以TS为了规避这个问题加入了类型限制…

C语言案例 按序输出三个整数-02

题目&#xff1a;输入三个整数a,b,c,按从小到大的顺序输出 步骤一&#xff1a;定义程序的目标 编写一个C程序&#xff0c;随机输入三个整数&#xff0c;按照从小到大的顺序输出。 步骤二&#xff1a;程序设计 整个程序由三个模块组成&#xff0c;第一个为scanf输入函数模块&a…

OA会议管理系统之会议通知(送审成功可查看人员是否参与会议)

一、前言 1.导读 在上一次的博文中我们实现了会议审批&#xff0c;会议通过审批后&#xff0c;状态就会由原来的待审核变为待开&#xff0c;这时候我们就可以在我的会议下的反馈详情查看人员是否参与会议的反馈情况。这篇博客就是来了解&#xff0c;人员是怎么接收会议通知并反…

MyBatis 查询数据库之二(增、删、改、查操作)

目录 1. 配置打印 MyBatis 执行的SQL 2. 查询操作 2.1 通过用户 ID 查询用户信息、查询所有用户信息 (1) Mapper 接口 (2)UserMapper.xml 查询所有用户的具体实现 SQL (3)进行单元测试 3. 增加操作 3.1 在 mapper&#xff08;interface&#xff09;里面添加增加方法的声…

unity如何手动更改脚本执行顺序

在Unity中&#xff0c;脚本的执行顺序是由脚本的执行顺序属性决定的。默认情况下&#xff0c;Unity根据脚本在项目中的加载顺序来确定它们的执行顺序。然而&#xff0c;你可以手动更改脚本的执行顺序&#xff0c;以下是一种方法&#xff1a; 在Unity编辑器中&#xff0c;选择你…

剑指Offer05.替换空格

剑指Offer05.替换空格 目录 剑指Offer05.替换空格题目描述解法一&#xff1a;遍历添加解法二&#xff1a;原地修改 题目描述 请实现一个函数&#xff0c;把字符串s中的每个空格都替换成“%20”。 解法一&#xff1a;遍历添加 由于每次替换都要把一个空格字符变成三个字符&a…

【LeetCode】516. 最长回文子序列

文章目录 1. 思路讲解1.1 创建dp表1.2 状态转移方程1.3 不需考虑边界问题 2. 整体代码 1. 思路讲解 1.1 创建dp表 此题采用动态规划的方法&#xff0c;创建一个二维dp表&#xff0c;dp[i][j]表示s[i, j]中最大回文子序列的长度。且我们人为规定 i 是一定小于等于 j 的。 1.2…

OpenAI 已为 GPT-5 申请商标,GPT-4 发布不到半年,GPT-5 就要来了吗?

据美国专利商标局&#xff08;USPTO&#xff09;信息显示&#xff0c;OpenAI已经在7月18日申请注册了“GPT-5”商标。 在这份新商标申请中&#xff0c;OpenAI将“GPT-5”描述为一种“用于使用语言模型的可下载计算机软件”。 继GPT-4发布之后&#xff0c;它预计将成为OpenAI下一…

vue响应数据为二维码如何渲染到页面

在postman测试请求后发现响应数据为一个二维码图片,不是链接,如何解决? 然后如果在vue中使用请求还会报Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1的错误。这个就是使用了JSON.parse导致的响应格式不对)&#xff0c;使用JSON.stringify解决…

骑砍二 ATC MOD 使用教程与应用案例解析

骑砍二 ATC MOD 使用教程与应用案例解析 作者&#xff1a;blibli-财不外漏 / NEXUSMODS-PuepleKarmen 案例MOD依赖&#xff1a;ATC - Adonnay’s Troop Changer & AEW - Adonnay’s Exotic Weaponry & New Armor 文本编辑工具&#xff1a;VS Code&#xff08;推荐使用&…