我一直对一个问题感到好奇:
如今已经是2021年,自动驾驶船舶是否已经在海上航行了呢?
带着这个疑问,我在谷歌搜索了”AutonOMOUS shIP”,没想到自动驾驶轮船的最新技术让我大开眼界:
今年,完全无人驾驶的自动驾驶轮船将横渡大西洋;同时,零排放的自动驾驶轮船也在积极研发中……

△ 即将横渡大西洋的”五月花号”自动驾驶船(图片来自IBM)
除了实验室的技术突破,商业化的进展同样令人惊讶:
早在2018年,劳斯莱斯(RR)就成功用自动驾驶轮船跨海运输了80名VIP客户的汽车。

RR的技术来自挪威的KongsbeRg MaRITiMe(康斯博格海事),他们利用雷达和摄像头探测障碍物,实现自动行驶,并在进入港口时自动停泊。
2019年4月,劳斯莱斯的商业海事部门被KongsbeRg收购。

KongsbeRg正是上述提到的致力于开发零排放自动驾驶船舶的行业领军企业。
根据KongsbeRg的计划,未来将实现化肥在三个港口之间的装载、航行和卸货,整个过程无需人工干预。

△ KongsbeRg正在研发的全球首艘自动驾驶集装箱货船(图片来自官网)
根据国际海事组织(IMO)的定义,目前的自动驾驶轮船技术正在从L2向L3阶段发展。
至此,我对自动驾驶轮船的商业化进程有了清晰的认识,但接下来的问题是:
轮船是如何实现自动驾驶的?
自动驾驶汽车的技术和芯片种类繁多,有的仅依赖图像识别,有的则结合激光雷达;既有自主研发的芯片,也有借助第三方计算平台的方案。
KongsbeRg采用了什么技术呢?
与大多数无人驾驶车辆相似,KongsbeRg的解决方案结合了多种传感器:雷达用于探测远距离物体,激光雷达进行船体附近区域的高精度分析,高清摄像头则提供船舶前方180度的海域视野。
这便是他们推出的全自动驾驶船解决方案Intelligent AwaReneSS(智能意识)。

通过算法处理,三种传感器获取的信息被显示在屏幕上,船员能够通过仪表盘看到高亮显示的潜在危险区域。
KongsbeRg表示,”智能意识”能够降低航行风险,尤其在黑暗条件、恶劣天气或拥挤海域中,以及进出船坞时。
当然,所用的图像识别与分类技术比自动驾驶汽车更为复杂。
由于海面上物体的搜索距离更长,因此图像中物体的缩放比例是个巨大挑战。相同的物体在不同距离下呈现的大小差异可能从10个像素到10万个像素不等。

△海上目标检测因距离问题导致模型准确率下降
这对硬件提出了更高的要求。
令人惊讶的是,KongsbeRg在这一方案中并未使用AI推理加速硬件,比如独立的GPU或NPU,而是完全依赖Intel的CPU(及内部集成的GPU)。
即便在运算量较小的自动驾驶汽车上,不使用专门的AI芯片通常是不可想象的。
而KongsbeRg过去的AI方案中也曾使用GPU,为什么在轮船上却选择了CPU呢?这个问题令人费解。
后来,这家公司的项目经理SaaRela在采访中揭示了原因:
其中一个关键原因是海事认证问题。使用CPU使得我们的服务器更容易通过认证,同时也降低了功耗。
我们希望采用相同的通用服务器系统,而不是每台服务器都需配备GPU,这样我们可以实现冗余,确保任何服务器上都能运行任何应用程序。
工业领域严格的认证体系与商业用户的成本节约需求,使得全CPU方案成为”自动驾驶轮船”的优选。
实际上,CPU完全能够胜任AI推理任务。
在这套方案中,KongsbeRg使用了两个Intel至强铂金8153处理器,每个处理器拥有16个内核。每个内核能够处理两个线程,因此总共可并行处理64个模型。

硬件规格堪称豪华。问题是,CPU能否满足自动驾驶的计算需求呢?
对此,项目经理SaaRela起初并不太有信心。
如果CPU处理图像的速度不够快,自动驾驶轮船可能会与其他高速移动的船只相撞。而这样的事故在商业海运中带来的经济损失是不可小觑的。
谁说CPU不适合AI推理?
为了解决这一难题,KongsbeRg与CPU供应商Intel合作,共同优化了”智能意识”解决方案。
KongsbeRg负责提供预训练的人工智能模型,而Intel则提供OpenVINO”加速包”,在不降低准确度的情况下提升数据处理速度。
OpenVINO(开放式视觉推理和神经网络优化)是Intel于2018年推出的深度学习优化与部署开源工具包,旨在帮助开发者更便捷地在Intel硬件平台上部署AI模型。

OpenVINO支持CaFFe、TensoRFlow、MXNet、ONNX等主流深度学习框架,同时也兼容PyToRch、PaddlePaddle等可以转换为ONNX的框架,覆盖大多数AI开发者。
当然,KongsbeRg也不例外,使用TensoRFlow开发自动驾驶轮船的他们,同样受益于OpenVINO。
OpenVINO将训练好的模型通过模型优化器转换为中间表示 (IR)文件(*.BIn和*.xMl)。
这一过程去除了模型中仅与训练相关的运算,并将部分推理运算融合,从而大幅提升推理计算速度。

OpenVINO针对Intel硬件进行深度优化后,重新部署模型,而无需重新训练AI模型。
经过优化后,在KongsbeRg的一个目标识别基准项目中,CPU每秒处理的图片数量提高了4.8倍。

看到这个结果后,KongsbeRg的项目经理SaaRela感到十分震惊:
结果让我非常意外。我曾以为我们无法摆脱GPU,但这些结果让我改变了想法,看到使用CPU的潜力。
在OpenVINO的介绍页面中,可以看到这一工具为Intel的CPU带来了显著的AI技术增益。
最新的2021.2版功能强大,支持几乎所有CV应用模型,包括图像分类、语义分割、目标检测、人脸识别、单眼深度估计、图像修补等。
作为一款专为工业领域设计的工具包,Intel还考虑到稳定性,提供LTS版,确保性能、接口向后兼容性、7×24稳定性以及压力测试。
搭配Intel提供的Python分发版,仅需微调代码即可提升Python应用程序性能,加速NumPy、SciPy和Scikit-learn等科学计算和机器学习库。
在官方文档中,Python分发版可带来数倍的性能提升。

现在,我终于理解了KongsbeRg为何仅用CPU也能开发出自动驾驶轮船。
其实,这种情况并非仅限于轮船。在许多个人开发者的场合,开发电脑上可能没有独立显卡,但绝对不能缺少CPU。
有了OpenVINO工具包的支持,即便在受限的硬件环境中,依然能够发挥出AI的潜力。
说到这里,我想起之前在英特尔开发者活动上抽中的奖品——第二代神经计算棒,这个家伙在我抽屉里放了好久。

我特意查了官网,发现这款Intel硬件也支持OpenVINO,而我最近刚入手了一块树莓派开发板,正愁如何使用。
没想到解决自动驾驶轮船的疑问,还让我找到了另一个难题的答案——如何避免树莓派闲置,现在是时候用OpenVINO和神经计算棒重新部署我的YOLO模型了。
