您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

英伟达Orin算法库都有什么算法?

时间:2022-08-03 17:10:05  来源:  作者:佐思汽车研究

做自动驾驶芯片必须软硬一体,最多的工作不是芯片本身,而是与之对应的算法库。对于自动驾驶,英伟达提供两种合作模式。

图片来源:互联网

一种是车企交出全部灵魂,英伟达提供全套解决方案,包括底层OS,中间件DRIVEWORKS,上层应用模块DRIVE AV包括座舱的模块DRIVE IX也一起提供。不过中国禁止国外厂家上路采集信息,也就是用于识别的训练数据集还是需要中国厂家自己去做。如果是在美国,训练数据集英伟达也可以提供。

 

另一种是车企交出部分灵魂,英伟达提供底层的基础算法,这些算法大多基于手工模型,和深度学习没关联。实际深度学习或者说AI是自动驾驶领域最容易做的部分,搜集数据,标注数据,训练数据,提取权重模型。这也是为什么AI不具备可解释性,无法迭代,好在AI可溯源。工作量最大,难度最高的都是非深度学习部分。手工模型,传统算法的好处是可解释,可迭代,具备确定性。

 

后一种的算法库,英伟达称之为VPI,即Vision Programming Interface,2021年2月发布,目前是2.0版本,VPI除了针对智能驾驶,也能用在任何计算机视觉领域,英伟达Jeston系列硬件平台都支持VPI。VPI提供一系列软件库,可在英伟达的硬件平台上得到加速,通常加速器还叫Backend后端。VPI用来取代NVIDIA®VisionWorks™。VPI可以最大化利用硬件,特别是Xavier和Orin的PVA、VIC、OFA。简单地说VPI将一些简单的算法封装成了类似硬件指令集的指令,对用户几乎透明,可直接调用,让原本需要N行代码才能完成的算法函数,只需一行指令就完成,让不熟悉基础算法的人也能胜任。大大缩减了开发周期和开发人员,效率显著提升。缺点是被英伟达深度捆绑,想换个平台绝无可能。

图片来源:互联网

用C++或Python/ target=_blank class=infotextkey>Python都可以直接使用。

  • PVA(Programmable Vision Accelerator),可编程视觉加速器;
  • VIC(Video Image Compositor),做一些固定功能的图像处理,如缩放、色彩转换、消噪;
  • NVENC(NVIDIA Encoder Engine),主要做视觉编码,也能做稠密光流应用。

整个VPI的执行概念,就是提供适合实时图像处理应用的异步计算管道,由一个或多个异步计算流(streams)组成,这些流在可用计算后端(backends)的缓冲区(buffers)上运行算法(algorithms),流之间使用事件(events)进行同步。VPI将数据封装到需要使用的每个算法的缓冲区中,提供Images(二维图像)、Arrays(一维数组)和Pyramids(二维图像金字塔)的三种抽象,以及用户分配内存包装,由VPI直接分配和管理。

 

英伟达VPI 2.0算法对应硬件。

图片来源:互联网

算法库主要包含三类算法:

  • 一是简单的图像前处理,包括各种平滑滤波、镜头畸变矫正、缩放、透视、拼接、直方图、消噪、快速傅里叶变换等;
  • 二是针对立体双目视差的获得;
  • 三是光流追踪。

OFA即光流加速器,为Orin平台独有,Xavier平台不支持。OFA只针对一个算法,就是立体双目视差估算。

 

英伟达VPI核心算法即图中这六大算法

图片来源:互联网

尽管只有奔驰和丰田用英伟达处理器处理立体双目,新型造车除了RIVIAN目前都不使用立体双目(小鹏小米可能在将来使用立体双目),但英伟达每一次硬件升级都不忘对立体双目部分特别关照。

 

英伟达立体双目处理流程

图片来源:互联网

立体双目视差的获得需要多种运算资源的参加,包括了VIC、GPU(CUDA)、CPU和PVA。

图片来源:互联网

英伟达Orin平台立体双目视差测试成绩,要达到每秒30帧,那么处理时间必须低于30毫秒,考虑到还有后端决策与控制系统的延迟,处理时间必须低于20毫秒。1个下取样情况下,显然都无法满足30帧的要求,4个下取样,不加置信度图时,单用OFA就可以满足。加置信图后,需要OFA/PVA/VIC联手,也能满足30帧需求。但这只是200万像素,300万像素估计就无法满足了。

图片来源:互联网

并且此时是火力全开,运行频率如下:

  • CPU: 12x ARMv8 Processor rev 1 (v8l) running at 2.2016 GHz
  • EMC freq.: 3.1990 GHz
  • GPU freq.: 1.3005 GHz
  • PVA/VPS freq.: 1.1520 GHz
  • PVA/AXI freq.: 832.8 MHz
  • VIC freq.: 729.6 GHz
  • Power mode: MAXN
  • Fan speed: MAX

这种火力全开情况下,恐怕不能持续太长时间。

 

光流Optical Flow追踪主要用于目标的行驶轨迹的预测。

图片来源:互联网

上图就是奔驰用光流法预测车辆行驶轨迹。

图片来源:互联网

上图是奔驰的颜色编码,不同的颜色代表车辆即将行驶的速度和方位角。

 

光流是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场,其本质是一个二维向量场,每个向量表示了场景中该点从前一帧到后一帧的位移。那对于光流的求解,即输入两张连续图像(图像像素),输出二维向量场的过程。除了智能驾驶,体育比赛中各种球类的轨迹预测,军事行动中的目标轨迹预测都能用到。光流场是运动场在二维图像平面上的投影。因为立体双目和激光雷达都是3D传感器,而单目或三目是2D传感器,所以单目或三目的光流非常难做。光流再分为稀疏和稠密(Dense)两种,稀疏光流对部分特征点进行光流解算,稠密光流则针对的是所有点的偏移。

 

最常见的光流算法即KLT特征追踪,源自1981年,早期的光流算法都是稀疏光流,手工模型或者说传统算法。2015年有人提出深度学习光流法,在CVPR2017上发表改进版本Flo.NET2.0,成为当时最先进的方法。截至目前,FlowNet和FlowNet2.0依然是深度学习光流估计算法中引用率最高的论文。传统算法计算资源消耗少,实时性好,效果比较均衡,但鲁棒性不佳。深度学习消耗大量的运算资源,鲁棒性好,但容易出现极端,即某个场景非常差,但无法解释,与训练数据集关联程度高。即使强大的Orin也无法FlowNet2.0做到实时性,毕竟Orin不能只做光流这一件事。因此英伟达还是推荐KLT。产业领域光流法主流还是KLT。但学术领域已经是深度学习了。

 

硬件与算法互相推动,硬件算力的增强让人们敢于部署越来越大规模的深度学习模型,反过来,这又推动硬件算力的需求,特别是自动驾驶,传统可解释算法研究的人越来越少,因为投入产出比太低,深度学习正横扫一切,但深度学习不可解释,汽车领域需要的是可解释可预测可确定。否则无法迭代,无法划出安全边际线。这也是自动驾驶难以落地的主要原因。

 

声明:本文仅代表作者个人观点。



Tags:Orin算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
英伟达Orin算法库都有什么算法?
做自动驾驶芯片必须软硬一体,最多的工作不是芯片本身,而是与之对应的算法库。对于自动驾驶,英伟达提供两种合作模式。图片来源:互联网一种是车企交出全部灵魂,英伟达提供全套解...【详细内容】
2022-08-03  Search: Orin算法  点击:(445)  评论:(0)  加入收藏
▌简易百科推荐
小红书、视频号、抖音流量算法解析,干货满满,值得一看!
咱们中国现在可不是一般的牛!网上的网友已经破了十个亿啦!到了这个互联网的新时代,谁有更多的人流量,谁就能赢得更多的掌声哦~抖音、小红书、、视频号,是很多品牌必争的流量洼地...【详细内容】
2024-02-23  二手车小胖说    Tags:流量算法   点击:(18)  评论:(0)  加入收藏
雪花算法详解与Java实现:分布式唯一ID生成原理
SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳...【详细内容】
2024-02-03   一安未来  微信公众号  Tags:雪花算法   点击:(54)  评论:(0)  加入收藏
程序开发中常用的十种算法,你用过几种?
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。1. 冒泡排序 (Bubble Sort):冒泡排序是一种简单的比...【详细内容】
2024-01-17  架构师老卢  今日头条  Tags:算法   点击:(46)  评论:(0)  加入收藏
百度推荐排序技术的思考与实践
本文将分享百度在推荐排序方面的思考与实践。在整个工业界的推广搜场景上,特征设计通常都是采用离散化的设计,需要保证两方面的效果,一方面是记忆,另一方面是泛化。特征都是通过...【详细内容】
2024-01-09  DataFunTalk  微信公众号  Tags:百度推荐   点击:(81)  评论:(0)  加入收藏
什么是布隆过滤器?如何实现布隆过滤器?
以下我们介绍了什么是布隆过滤器?它的使用场景和执行流程,以及在 Redis 中它的使用,那么问题来了,在日常开发中,也就是在 Java 开发中,我们又将如何操作布隆过滤器呢?布隆过滤器(Blo...【详细内容】
2024-01-05  Java中文社群  微信公众号  Tags:布隆过滤器   点击:(94)  评论:(0)  加入收藏
面向推荐系统的深度强化学习算法研究与应用
随着互联网的快速发展,推荐系统在各个领域中扮演着重要的角色。传统的推荐算法在面对大规模、复杂的数据时存在一定的局限性。为了解决这一问题,深度强化学习算法应运而生。本...【详细内容】
2024-01-04  数码小风向    Tags:算法   点击:(106)  评论:(0)  加入收藏
非负矩阵分解算法:从非负数据中提取主题、特征等信息
非负矩阵分解算法(Non-negativeMatrixFactorization,简称NMF)是一种常用的数据分析和特征提取方法,主要用于从非负数据中提取主题、特征等有意义的信息。本文将介绍非负矩阵分解...【详细内容】
2024-01-02  毛晓峰    Tags:算法   点击:(75)  评论:(0)  加入收藏
再谈前端算法,你这回明白了吗?
楔子 -- 青蛙跳台阶一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求该青蛙跳上一个n级的台阶总共需要多少种跳法。分析: 当n=1的时候,①只需要跳一次即可;只有一种跳法,即f(...【详细内容】
2023-12-28  前端爱好者  微信公众号  Tags:前端算法   点击:(114)  评论:(0)  加入收藏
三分钟学习二分查找
二分查找是一种在有序数组中查找元素的算法,通过不断将搜索区域分成两半来实现。你可能在日常生活中已经不知不觉地使用了大脑里的二分查找。最常见的例子是在字典中查找一个...【详细内容】
2023-12-22  小技术君  微信公众号  Tags:二分查找   点击:(81)  评论:(0)  加入收藏
强化学习算法在资源调度与优化中的应用
随着云计算和大数据技术的快速发展,资源调度与优化成为了现代计算系统中的重要问题。传统的资源调度算法往往基于静态规则或启发式方法,无法适应动态变化的环境和复杂的任务需...【详细内容】
2023-12-14  职场小达人欢晓    Tags:算法   点击:(169)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条