晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

有件事情一直令我感到好奇:

都2021年了,现在有自动驾驶船在海上行驶吗?

带着这个问题,我打开谷歌,输入“Autonomous ship”,没想到现在的自动驾驶轮船技术刷新了我的认知:

完全无人的自动驾驶轮船今年将横渡大西洋;零排放的自动驾驶轮船正在研发中……

 准备横渡大西洋的“五月花号”自动驾驶船(图片来自IBM)

除了实验室里的成果,其商业化进度更是超出我的想象:

原来,早在2018年,RR(也就是劳斯莱斯)曾用自动驾驶轮船成功跨海运送了80名VIP客户的汽车。

RR的技术来自一家挪威公司——Kongsberg Maritime(康斯博格海事)。他们运用雷达和摄像头检测并避开障碍物,在途中自动行驶,驶入港口后自动停泊。

之后,RR商业海事部门于2019年4月被Kongsberg收购。

而这家Kongsberg,正是前面提到的开发零排放自动驾驶船舶的航海巨头。

在Kongsberg的技术蓝图里,未来挪威公司生产的化肥将在三个港口之间装船、航行和卸货。整个过程完全无需人工现场干预。

 Kongsberg正在开发的世界第一艘自动驾驶集装箱货船(图片来自官网)

按照国际海事组织(IMO)的定义,现在的自动驾驶轮船技术正在从L2向L3演进。

至此,我对自动驾驶轮船的商业化进程已经有大致的了解,那么剩下的问题来了。

轮船如何自动驾驶?

自动驾驶汽车使用的技术和芯片五花八门,有坚持只用图像识别的,也有结合激光雷达的;有自研芯片的,也有购买第三方计算平台的。

Kongsberg用的是什么方案?

和大多数无人车类似,Kongsberg的方案采用了多种传感器:雷达探测远距离物体,激光雷达对船体附近区域进行高精度分析,高清摄像头拍摄船舶前方海域180度视野景象。

这就是他们首款上市的全自动驾驶船解决方案Intelligent Awareness(智能意识)。

三种传感器收集到的信息,经过算法处理后显示在屏幕上,船员可以通过仪表盘看到高亮显示的潜在危险区域。

按照,Kongsberg的说法,“智能意识”可帮助降低航海者的风险,尤其是在黑暗环境、恶劣天气条件下,或是拥挤海域,以及进出船坞之时。

当然,其中用的图像识别与分类比自动驾驶汽车要复杂得多。

因为海面上的搜索距离更大,因此图像中物体的缩放比例是一个巨大挑战。相同物体在不同距离上呈现的大小有天壤之别,可能最小10个像素块、最大10万个像素块。

海上目标检测因距离问题导致模型准确率下降

这必然对硬件有很高的要求。

他们居然只用CPU

然而令人吃惊的是,Kongsberg在这套方案里没有使用AI推理加速硬件,比如独立的GPU或NPU,而是完全依赖于英特尔的CPU(和内部集成GPU)。

即使在运算量更小的自动驾驶车上,不使用专门的AI芯片都是不可想象的。

况且Kongsberg过去的AI方案也不是没使用过GPU,为什么在轮船上反而不用了?令人费解。

后来,这家公司的一位项目经理Saarela在采访中道出了缘由:

其中一个重要原因是海事认证问题。如果不用GPU,我们的服务器会更容易通过认证。而且,我们还想降低功耗。

我们理想的方案是使用差不多相同的通用服务器系统。我们并不是每台服务器都需要GPU,所有服务器都不用GPU会更好,这样我们就获得了冗余,能在任何服务器上运行任何应用程序。

工业领域严苛的认证体系,商业用户节约成本的需求,让全CPU方案成为了“自动驾驶轮船”的首选方案。

实际上, CPU也是完全可以胜任AI推理的。

在这套方案中,Kongsberg使用两个英特尔至强铂金8153处理器,每个处理器有16个内核。每个内核可处理两个线程,所以总共可并行处理64个模型。

硬件规格绝对够豪华。问题是,CPU能满足自动驾驶的计算需求吗?

对于这一点,就连项目经理Saarela本人最初也没有信心。

如果CPU处理图像的速度不够快,那么自动驾驶轮船就可能撞到其他高速移动的船只。对于商业海运来说,这种事故造成的经济损失不容小觑。

谁说CPU不适合AI推理

为了解决这个难题,Kongsberg找来CPU供应商英特尔联手优化了“智能意识”解决方案。

Kongsberg负责提供预先训练好的人工智能模型供英特尔使用。而英特尔则提供OpenVINO“加速包”,在不降低准确度的情况下帮助提升数据处理速度。

OpenVINO(开放式视觉推理和神经网络优化)是英特尔于2018年推出的深度学习优化与部署开源工具包,帮助开发者更方便地在英特尔硬件平台上部署AI模型。

OpenVINO支持Caffe、TensorFlow、MXNet、ONNX等主流深度学习框架,而PyTorch、PaddlePaddle等支持转换为ONNX的框架也可以间接使用,覆盖了绝大多数AI开发者。

当然,用TensorFlow开发自动驾驶轮船的Kongsberg也不例外。

OpenVINO将训练好的模型通过模型优化器转换为中间表示 (IR)文件(*.bin和*.xml)。

由于去除了模型中任何仅与训练相关的运算,并将部分推理运算融合在一起,所以大大加快了推理计算的速度。

下图展示了OpenVINO(深蓝色)在模型中的作用,它就像假设在深度学习框架(浅蓝色)和用户应用(橙色)之间的桥梁。

OpenVINO将训练后的模型针对英特尔硬件进行深度优化,再重新部署,而且这个过程中无需重新训练AI模型。

经优化后,在Kongsberg的一个目标识别基准项目上,CPU每秒处理的图片数量提升了4.8倍

看到这个结果后,Kongsberg的项目经理Saarela表示:

结果让我十分震惊。我原以为我们永远都摆脱不了GPU,但这些结果改变了我的想法,让我看到了使用CPU的可能性。

打开OpenVINO的介绍页面,你会发现,这套工具给英特尔CPU带来了巨大的AI技术加成。

最新的2021.2版功能已十分强大,支持图像分类、语义分割、目标检测、人脸识别、单眼深度估计、图像修补等几乎所有CV应用模型。

而作为一款可以放心用于工业领域的工具包,英特尔也考虑到稳定性提供LTS版,保证了性能、接口向后兼容性、7x24稳定性以及压力测试。

搭配上英特尔配套提供的Python分发版,只需微调代码即可提高Python应用程序的性能,加速NumPy、SciPy和Scikit-learn等科学计算、机器学习库。

在官方文档中,Python分发版最高可以带来数倍的性能提升。

现在,我终于明白,Kongsberg为什么只用CPU也能开发自动驾驶轮船了。

其实不仅是轮船,类似的场合还很多。就拿很多个人开发者来说,一台开发电脑可能没有独立显卡,但是绝对不能没有CPU。

而有了OpenVINO工具包的加持,受限的硬件环境一样能发挥出AI的性能。

说到这里,我突然想起来之前在英特尔开发者活动上抽中的奖品——第二代神经计算棒,这家伙放在我抽屉里很久了。

我特意去官网查询了一下,这款英特尔硬件也支持OpenVINO,而且我最近还入手了树莓派开发板,正愁如何使用。

没想到解决自动驾驶轮船的疑问,还帮我解决了另一个难题——如何防止树莓派吃灰,现在是时候用OpenVINO和神经计算棒去重新部署一下我的YOLO模型了。

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

只用CPU开发自动驾驶轮船,他们居然做到了相关推荐

  1. 听见丨前谷歌无人车负责人联手大众和现代 开发自动驾驶 自动驾驶技术研发公司AImotive获3800万美元C轮融资

    Canalys:2018年智能音箱全球出货量将达5630万台 据新浪科技报道,Canalys今天发布了一份新的报告,预测2018年将是普及智能音箱的"决定性一年",相比全年出货量刚 ...

  2. 专利申请显示:苹果正在开发自动驾驶汽车无线充电技术

    [TechWeb]7月12日消息,据国外媒体报道,当地时间周四发布的一份专利申请显示,苹果正在开发一种用于自动驾驶汽车的无线充电系统 ,这可能暗示了苹果汽车的宏伟抱负. 苹果帮助iPhone进行无线充 ...

  3. 中国5G进入第二阶段场景测试;苹果瑞士建秘密实验室开发自动驾驶 | IoT黑板报...

    三星推出Connected Home路由器 @cnBeta 三星今天发布一款Wi-Fi路由器Connected Home.这种小型Wi-Fi路由器也作为SmartThings中枢,让用户可以更好地控制 ...

  4. IoT黑板报:苹果瑞士建秘密实验室开发自动驾驶

    IoT黑板报,阅尽物联网新鲜事! 关注同名公众号"IoT黑板报" ,获取更多物理网资讯及干货 关注物联网领域,寻求报道或投稿请邮件联系 jiawd@csdn.net 三星推出Con ...

  5. 眼图matlab仿真_MATLAB开发自动驾驶第二十课-自动驾驶场景设计器中的预建驾驶场景...

    自动驾驶场景设计应用提供了一个代表常见驾驶动作的预建场景库.该应用还包括代表欧洲新车评估计划(Euro NCAP)测试协议的场景,以及3D仿真环境中使用的预建场景的3D版本. 选择一个预建场景 要开始 ...

  6. matlab simulink_运用MATLAB和Simulink开发自动驾驶控制系统

    来自专辑< MATLAB&SIMULINK > 本文主要是mathswork在adas和自动驾驶开发方面的应用 好书推荐:<推荐理由:本书全面的讲述了驾驶员辅助系统的重要知识 ...

  7. matlab 定义string_MATLAB开发自动驾驶第十课-创建用于加载自定义地面真值数据源的类...

    在Ground Truth Labeler应用中,可以对来自图像和点云数据源的信号进行标记.这些数据源包括视频.图像序列.点云序列.Velodyne 数据包捕获.视频.图像和点云数据. (PCAP)文 ...

  8. matlab连续信号离散化_MATLAB开发自动驾驶第八课-控制信号帧的回放以进行标签化处理...

    Ground Truth Labeler应用可以同时标注多个图像或激光雷达点云信号.当播放信号或在帧之间导航时,可以控制那个通过改变信号显示的帧率来显示每个信号的帧数. 信号帧 所标注的信号是由帧组成 ...

  9. 学习笔记14--其他自动驾驶开发平台

    本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...

最新文章

  1. PHP查看PECL模块包含的函数
  2. PHP、mysql面试题 (附答案+实现代码)
  3. 工业机器人用铸铁牌号_蠕墨铸铁生产工艺
  4. python求解括号匹配的相关问题
  5. python3基础题目 100例_Python3.x 基础练习题100例(51-60)
  6. 华为NP课程笔记3-OSPF3
  7. html仿qq截图,javascript实现粘贴qq截图功能(clipboardData)
  8. 苏轼 天涯 青砚1989
  9. 出口商贸易融资工具:汇出汇款融资
  10. unix网络编程中的fd是什么
  11. 使用BaseMap绘制地图它不香么
  12. matlab的GUI怎么嵌入图片,如何用matlab在GUI中显示一张图片
  13. linux手机E680的几个概念
  14. 用php做的网上留言簿代码,php的php留言簿简单留言板功能
  15. Postgre SQL 中的时间格式
  16. 以计算机专业为主题的黑板报,环保主题黑板报内容
  17. html2canvas + jspdf 实现 html导出pdf
  18. 赋予金融科技人性化 易通贷召开品牌重塑发布会
  19. 有关KeyStore的问题
  20. windows程序设计 王艳平版

热门文章

  1. 订购后如何限制Oracle查询返回的行数?
  2. 如何动态合并两个JavaScript对象的属性?
  3. __name__ ==“ __main__”怎么办?
  4. 计算机操作系统(八)---虚拟存储器
  5. 如何解决SQL Server 2008 R2中“阻止保存要求重新创建表的更改”的问题!
  6. P1984 [SDOI2008]烧水问题
  7. 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...
  8. The 13th Zhejiang Provincial Collegiate Contest(2016年浙江省赛)
  9. shell的最大命令行长度
  10. .Net简单上传与下载