前言:本文纪念自己的三步走战略已经迈开第二步,故此发布原设计文档
0-概述
本视觉系统是支持垃圾空间信息的 6D 高自由度识别系统,对标工业级视觉系统。
受设备性能和技术产权保护等因素,本视觉系统在研究工业视觉系统原理后,选取三种基于深度学习的开源技术相互配合,来达到工业级视觉系统的效果。
系统技术原理主要分为三部分:
-
YOLOv5 物体检测;
-
Anything Depth 单目图像深度识别;
-
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更新定位——其后深度推理’的推理模式,能够在夹爪移动的每一个阶段高效分配算力资源。
原理图如下: