自动驾驶汽车还未上路,自动驾驶轮船已在乘风破浪( 二 )


工业领域严苛的认证体系 , 商业用户节约成本的需求 , 让全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模型了 。