当前位置:主页> 智能汽车>

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

5月中旬,英伟达发布了A100 Tensor Core GPU——基于全新的7nm工艺架构“安培”(Ampere)的首款产品。

英伟达发布了A100 Tensor Core GPU

Ampere架构相当先进,还记得去年英伟达在GTC China 2019上发布的NVIDIA DRIVE AGX Orin吗?这个Soc就集成了Ampere架构GPU,单芯片系统的算力便可达200万亿次运算( TOPS),相比目前主流产品NVIDIA DRIVE AGX Xavier(也就是小鹏P7搭载的那个)的30万亿次运算( TOPS),性能提升近7倍。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

同时,DRIVE AGX还将通过Orin SoC和基于Ampere架构GPU的各种组合,提供L2级以上自动驾驶至L5级全自动驾驶功能。其中面向L5级全自动驾驶领域的DRIVE AGX Pegasus Robotaxi平台甚至可以提供2000万亿次运算( TOPS)的性能,而现有的四芯片系统DRIVE AGX PEGASUS算力仅有320万亿次运算( TOPS)。

可以说,英伟达Ampere架构GPU的推出让自动驾驶芯片的算力再踏上了一个台阶,这也是为什么圈内人士在英伟达Ampere架构推出后丝毫不吝啬自己的溢美之词。

但今天我们不吹英伟达,吹的人已经够多了,我们不妨从更深的角度来理解一下,英伟达为什么要推出算力如此高的自动驾驶芯片,自动驾驶要那么高的算力有必要吗?

2000TOPS

前不久我们的文章指出过,自动驾驶的实现主要有三个步骤:感知、决策规划、行车控制。虽然这三者缺一不可,但如果从对硬件性能的需求上来看的话,感知系统绝对是对性能要求最高的,占据了整体算力需求的大半。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

感知系统对算力的巨大需求主要在于两个方面:

1.视觉信号本身数据量大

2.视觉识别算法十分繁琐

第一点比较好理解,视觉信号就是由摄像头采集到的视频数据,是由每秒多少帧图像来计算的,可以将它的数据简单地理解成一张张的照片,每颗摄像头每一秒的数据量都会达到MB级别。

与之相比,毫米波雷达、激光雷达、超声波等传感器采集到的数据就只是规范化的数据包。以Velodyne VLP-16 16线激光雷达为例,它每一帧的数据长度固定为1248字节,也就是大约1KB,而这颗雷达每秒输出480帧,算下来每秒的数据总量大约只有500KB。

左侧为雷达数据,右侧为视频数据

左侧为雷达数据,右侧为视频数据

虽然视觉信号的数据量大,但越是高级的自动驾驶系统就更依赖于视觉信号,因为仅凭雷达提供的轮廓+距离数据,难以实现物体的识别,而“知道车周围有什么”是高级自动驾驶运行的基础。要达成这一点,目前只能交给视觉信号,这也是为什么现在自动驾驶车辆上的感知摄像头越来越多。

这里就涉及到了第二个点:繁琐的视觉识别算法。

人类可以通过眼睛看到的画面感知到环境,并认出所有物体。但即便给汽车装上摄像头,自动驾驶系统也看不懂拍到的画面,因为在电脑看来,这些图像只是由一个个像素点组成的无意义画面而已。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

如何让电脑“看”得懂图片呢?这时候就需要视觉识别算法了。

注意,下面这段内容读起来可能会有些晦涩,但如果看懂了会觉得非常有意思,遇到不懂的地方也可以善用搜索引擎。

目前几乎所有视觉识别算法都基于一个叫做“卷积”(Convolution)的概念,它是目前深度学习(deep learning)的代表算法之一,这也是目前自动驾驶视觉识别技术的基石。

卷积是对图像的一种处理方法,一张图像经过卷积运算可以生成一张归纳有原始图像特征信息的新图像。

在进行卷积运算时,首先要人为规定一个卷积核,它一般是一个n*n像素大的格子方阵,n通常是奇数,例如3*3或者5*5,每个格子内都有一个固定值。如下图,就是一个3*3像素的卷积核。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

以原始数据只有0和1的黑白照片为例,在卷积运算时,将卷积核“覆盖”在原始图像数据上,被覆盖的原始数据与卷积核中对应位置的值相乘,并用它们的和作为结果矩阵中对应点的值,这个值就是原始图像中3*3像素中的一个卷积结果,如下图。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

可见,这个“4”是由原始图像中9个像素点的数据计算出来的,可以认为它这一个像素包含了原始图像中9个像素的“特征”。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

在卷积完一次后,将卷积核向右移动一格,再次进行卷积运算,就会得出第二个结果。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

我们让卷积核从左到右、从上到下不停地移动、计算,直到整幅图像都被卷积之后,就能得到一张新的图像,这个图像中每个像素点都包含了原始图像中9个像素点的“特征”,而这个新生成的图像就是特征图。

得到一张特征图并没有什么用,计算机的识别需要大量的数据,所以我们可以通过调整卷积核中的数字、卷积核的大小、卷积核每次运算移动的距离等等,来产生不同的特征图。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

同时我们也可以对特征图再次进行卷积,第二层的一个点感知了上一层的9个,第三层的一个点感知了第二层的9个,这样得到的新的特征图中每个像素点最多可以包含到原始数据中81个像素点的数据,然后再继续卷积下去,就会让特征图中每个点能感知到的信息越来越丰富。

一般来讲,这种重复的卷积运算要进行一百多层,才能让最终得到的特征图包含足够量的信息,再通过其他的算法来对特征图进行分析,并确定原始图像中出现某个物体的概率。

特斯拉144TOPS,英伟达2000TOPS,自动驾驶为啥需要高算力?

如上图,就是将一张图片进行一百多层卷积/截取/筛选运算后得到的不同特征图,以及最后算法识别出的概率。

正因如此,原始图像的尺寸会对卷积运算的次数产生极大影响。

例如,一个4*4的黑白图像用3*3的卷积核来计算只需要计算4次即可生成特征图,如果是5*5的图像则需要9次,如果是6*6的图像就需要16次,如果是512*512的图像,则需要进行260100次运算,才能生成1张特征图。

那如果是一张1920*1080的图像呢?按照运算深度100层,步进为1来算,对1张1920*1080大小的黑白图像进行识别,仅卷积运算就要进行2.1亿次,这还是十分保守的估计。

一个30帧的摄像头,每秒会产生30张图像,一辆车可能会有几到十几个摄像头。同时实际的卷积算法也不会如此简单,例如卷积核中的数字不会单纯是0或1,原始图像也不会只有黑白两色,每一层都会有数十个不同的卷积核……所以视觉识别算法的计算复杂度极其夸张,对算力的需求也是空前的。

这也是为什么人工神经网络的概念76年就有论文提出了,但是直到最近十年算力发展起来之后,才开始大范围应用的原因。

现在我们知道了,视觉识别算法对算力的需求极大,但要注意,视觉识别只是自动驾驶中的一个步骤,融合感知、系统决策等,对算力的需求也是非常大的。

以决策系统为例,虽然决策系统不需要对直接处理原始数据,但要依据感知系统和定位系统提供的信息进行结果计算,系统的算力越高,决策系统可以同时计算的可能性就越多,得出最佳决策的速度就越快。

可以说,自动驾驶系统的每个阶段对算力都有极高的需求,这也是为什么特斯拉要推出单芯片最高72TOPS算力的FSD(full self-driving computer/全自动驾驶计算机)。

特斯拉Autopilot系统

但即便这样,特斯拉Autopilot系统的前置三目摄像头也只开了2目,而环视摄像头也只能取低分辨率。

那么,自动驾驶芯片的算力越高越好吗?

目前看来,是的,但未来不一定。

前文说过,目前自动驾驶系统中对算力需求最高的是视觉识别系统,但深度学习目前还是个黑箱,也就是一个看不透的箱子,它虽然可以很好地工作,效率远超传统方法,但没有一个合理的数学解释。

同时,对卷积核等参数(一般称其为超参数)的调整会极大地影响算法的识别效果,优化算法就只能靠经验和猜来调整超参数,并通过不停地训练/测试来验证,以实现更高的识别率。

这也是为什么深度学习算法工程师会自称为“炼丹师”的原因,因为他们也不知道为什么调整超参数会让算法更准……

但深度学习不会一直保持黑箱状态,就好似伽利略时代虽然没有光学理论,类似于现在的深度学习,但是同样造出了人类历史上第一架天文望远镜,推动了天文学的发展。

当深度学习的研究到达一定程度时,人们对超参数的调整就会有迹可循,对算法的优化也会到达一个全新的程度,等那时,或许只需要更少的算力就可以达到甚至超过目前的识别效果。

可见,对于高级自动驾驶来说,芯片、算力、算法是相辅相成的:芯片的算力足够高,才能让算法运算的更快,结果更准确;而识别算法的计算方式,又影响了芯片的设计和发展方向,并催生了TPU等专门用于机器学习工作负载的芯片。关于这一点,我们将在下一篇文章中为大家详细解读,请大家持续关注电动知士。

上一篇:量产在即!自主代客泊车还缺一个合法身份
下一篇:封闭园区物流场景下的自动驾驶应用进程

相关新闻

精彩推荐

请自觉遵守互联网相关政策法规,作者可以直接删除恶意评论、广告或违禁词语
用户名: 验证码:点击我更换图片