6D 视觉识别系统解读 | yolov5 | Depth-Anything | AnyGrasp

前言:本文纪念自己的三步走战略已经迈开第二步,故此发布原设计文档

0-概述


        本视觉系统是支持垃圾空间信息的 6D 高自由度识别系统,对标工业级视觉系统。

        受设备性能和技术产权保护等因素,本视觉系统在研究工业视觉系统原理后,选取三种基于深度学习的开源技术相互配合,来达到工业级视觉系统的效果。

        系统技术原理主要分为三部分:

  1. YOLOv5 物体检测;

  2. Anything Depth 单目图像深度识别;

  3. AnyGrasp 抓取点推理;

        具体原理将在下文详细介绍。

1.yolov5 物体检测


        yolov5 作为近期火热的单阶段目标检测算法,其识别效果和效率有目共睹,模型的部署和调用也也相对便捷简单。

        但是如果要运用到智能垃圾桶中,那么就必须将 yolo 模型部署到嵌入式系统中。在个人 PC 中,yolov5 “s(small)” 模型推理速度可以保持在 10ms 左右;但是在算力资源极为宝贵的嵌入式设备中,yolov5 的单图片推理时间长达 70ms,识别稳定性差、机械识别延迟长,效率低下。

>TensorRT 加速模型<

        为了解决 yolov5 推理速度低下的问题,经过长远考虑,我们选择了 NVIDIA 的 jetson TX2 边缘 AI 设备。NVIDIA 作为 GPU 的行业大头,对于 GPU 优化依赖的深度学习自然是更加兼容,jetson 系列特有的 GPU 优化为我们后期部署多种深度学习模型打下了基础。

        TensorRT 将 yolov5 的 pt(pytorch)模型转化为 engine 模型,并对其进行优化。优化后,yolov5 在 TX2 上的推理速度可以达到 30ms,基本可以达到实时推理的要求。

但实际上,30ms 推理速度只是在物体检测阶段实用,而在机械爪移动时,有很长的空档期,从而导致算力过剩而不能很好利用。

这里为 yolov5 模型加速给后面的模型组合埋下了伏笔,后面会谈到具体原因。

 

2.AnyGrasp 抓取检测


        尽管 yolov5 模型足够强大,识别率足够高,但是 yolov5 给出的结果始终是物体所在位置的一个正矩形,如何选取抓取方向?模型框选位置不全如何?物体落下角度反常不适合矩形框选怎么办?

        简单的物体检测并不能适应复杂环境中垃圾的堆叠情况。如何保证每次抓取的成功率和效率?除了对夹爪机械结构和材料的设计外,更高效的方法是更加精确的识别算法。

        所以我们找到了 AnyGrasp。

        

        AnyGrasp 是由上海交通大学-非夕科技联合实验室开发的一款无需训练的通用抓取算法,可以对从未见过的物体进行 6D 自由度的抓取。

图为 AnyGrasp 6D 自由抓取效果;

        由于 AnyGrasp 受到技术签证保护,嵌入式设备不方便申请签证,但是我们可以使用 AnyGrasp 的前身 graspNet-Baseline 算法,做到近似 AnyGrasp 的识别效果。

        经过简单测试后发现,AnyGrasp 是基于深度图像(RGB-D,即包含深度信息的图像)来推理最优“空间抓取点”的,而想要获取图像深度信息却不简单。

        想要获取深度信息,需要依靠特殊的设备,市面上常见的有双目深度摄像机、单目结构光深度摄像机等,但一般都价格昂贵,不够经济。

3.Depth-Anything 单目深度获取


        双目摄像机通过模拟人眼双目结构,通过对比同一物体不同角度的像素,通过极几何原理计算出图像深度信息;结构光摄像机通过分析接收到的光谱信息,推算出物体距离的远近。它们都十分昂贵。

        但如果我们只有 100 元的普通摄像机,所拍摄的图片都只是由像素点组成,如何才能获取图像的深度信息呢?

        于是,我们又发现了 Depth-Anything 技术。

        今年年初,来自香港大学、字节跳动、浙江大学实验室联合发布的论文: Depth-Anything 单目深度估计深度学习算法横空出世,今年 6 月,迭代出了 Depth-Anything v2,相比 v1 更强,更快,更稳定;

        只需要一张普通相机所拍出的照片,不需要经过任何训练,就能推理出图片的深度信息,图片像素的(x,y)坐标加上深度 D 就能够转化为三维点云数据图,从而导入 AnyGrasp 推理得出最优抓取点,高效完成抓取任务。

图中为 Depth-Anything 模型识别效果;

 

 4.模型集成及优化思路


        对于嵌入式设备来说,能流畅推理一个深度学习模型就很不错了;那么对于 AI 算力仅仅只有 1.3 TOPS 的 jetson TX2 来说,同时运行 3 个模型如何保证推理速度?如何确保实时定位效率?这就需要对整个抓取流程进行针对性优化。

> 抓取流程示意图 <

        整个流程结构大致如上,投入垃圾(或夹取)后,垃圾难免会有些许扰动,通过分析yolo模型识别处的矩形选框的波动程度,来判断垃圾是否已经静止;等待垃圾静止后,Depth-Anything 和 AnyGrasp 两个模型相互合作,就能输出最佳夹取点的三维坐标,将数据输入给电控,即可完成一次精准抓取。

        下面是对每个流程之间的部分优化解读:

1.对模型进行 tensorRT 加速

        在前面讲到,yolo模型可以利用TensorRT进行加速,从而将推理速度提升一倍;实际上Depth-Anything 和 AnyGrasp 两个模型本就是运用在嵌入式设备中的算法,可以很好的兼容我们的 jetson系列设备,同样也能利用TensorRT进行大幅优化;

2.针对推理结构进行优化

        前面在介绍YOLO模型的部分时说到,其30ms的推理速度实在是有些过剩,当机械夹爪移动时,无法有效利用算力资源;而如果三个模型一起实时推理,那么在更新速度上无法得到保证。于是,我们设计出了‘yolo更新定位——其后深度推理’的推理模式,能够在夹爪移动的每一个阶段高效分配算力资源。

        原理图如下:

### YOLOv5 6D 姿态估计实现与教程 YOLO (You Only Look Once) 是一种流行的实时目标检测算法,在多个版本迭代之后,YOLOv5 成为了社区广泛使用的模型之一。对于6D姿态估计的任务来说,其目的是不仅定位物体的位置而且要确定物体的方向。 #### 实现方法 在处理6D姿态估计时,通常会扩展标准的目标检测框架来预测额外的姿态参数。这些参数可以表示为旋转和平移向量的形式[^1]。具体到YOLOv5上,可以通过修改网络结构以及损失函数来进行适应性的调整: - **数据集准备**:收集带有精确位置和方向标签的数据集是非常重要的一步。这可能涉及到使用专门设备捕捉真实世界中的对象实例或者是通过合成图像生成训练样本。 - **特征提取器增强**:基于YOLOv5原有的骨干网(Backbone),比如CSPDarknet53, 可能需要引入新的分支用于回归姿态信息。此部分的设计取决于所选的具体表征方式,例如Euler角、四元数或是轴角形式等。 - **多任务学习**:为了让模型能够同时完成边界框预测和姿态估计两项任务,可以在原有基础上增加一个或几个辅助头(Auxiliary Head),它们共享大部分卷积层权重但是具有独立的最后一层用来输出不同类型的预测结果。 ```python import torch.nn as nn class PoseEstimationHead(nn.Module): def __init__(self, num_classes=80, input_channels=256): super(PoseEstimationHead, self).__init__() # 定义用于姿态估计的新头部组件... def forward(self, x): ... ``` - **自定义损失函数**:由于角度误差分布特性不同于普通的分类错误率计算,因此建议采用特定于姿态的损失项如Smooth L1 Loss 或者 Cosine Similarity Loss 来衡量预测值同真值间的差异程度并指导反向传播过程更新权值矩阵。 #### 教程资源推荐 针对想要深入了解如何利用YOLOv5实施6D姿态估计的研究人员或者开发者而言,可以从以下几个方面入手获取更多帮助和支持: - TensorFlow官方提供了丰富的文档资料介绍怎样构建自己的深度神经网络架构,并且有详细的API说明可供查阅[^2];虽然不是专门为YOLO设计的内容,但对于理解底层机制仍然非常有用处。 - MXNet项目组也分享了一系列有关视觉识别系统的开发指南,其中包含了大量实用技巧和技术细节有助于加速原型搭建速度[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iecy_MR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值