本文经授权转载自飞船技术的博客.
飞船的技术建造一个机器人舰队是为了根据需求在当地投递包裹.要成功做到这一点,机器人必须安全、礼貌和快速。但如何在低计算资源和没有昂贵的传感器(如激光雷达)的情况下实现这一目标呢?这是你需要解决的工程现实,除非你生活在一个顾客乐意为送货支付100美元的世界里。
首先,机器人通过雷达、大量摄像机和超声波来感知世界。
然而,挑战在于大多数知识都是低级的和非语义的。例如,机器人可能会感知到10米外的物体,但如果不知道物体的类别,就很难做出安全驾驶的决定。
通过神经网络的机器学习在将这些非结构化的低级数据转换为高级信息方面出奇地有用。
使用机器学习来检测物体
星际飞船机器人大多在需要的时候在人行道上行驶,穿过街道。与自动驾驶汽车相比,这带来了一系列不同的挑战。汽车道路上的交通更加结构化和可预测。汽车在车道上行驶,不会经常改变方向,而人类却经常突然停车、漫步,可以带着狗带在身边,也不会用转弯灯发出信号。
为了实时了解周围环境,机器人的一个核心组件是目标检测模块——一个输入图像并返回目标框列表的程序。
这很好,但是如何编写这样的程序呢?
图像是一个巨大的三维阵列,由无数表示像素强度的数字组成。当图像在夜间而不是白天拍摄时,这些值会发生显著变化;当物体的颜色、比例或位置发生变化时,或者物体本身被截断或遮挡时。
左边是人类看到的东西;电脑看到的是正确的。(来源:飞船技术)
提高机器人的适应能力和学习能力
对于一些复杂的问题,教学比编程更自然。
在机器人软件中,我们有一组可训练的单元,大部分是神经网络,其中的代码是由模型自己编写的。该程序由一组权重表示。
首先,这些数字是随机初始化的,程序的输出也是随机的。工程师们展示了他们想要预测的模型实例,并要求网络在下次看到类似的输入时变得更好。优化算法通过迭代地改变权重,越来越准确地搜索出预测边界盒的程序。
通过优化程序发现程序的演化。(来源:飞船技术)
然而,需要深入思考用于训练模型的示例。
- 当该模型通过窗户反射检测到一辆汽车时,它应该受到惩罚还是奖励?
- 当它从海报上检测到一张人类的照片时,它会做什么?
- 是应该将装满汽车的拖车标注为一个实体,还是将每辆车单独标注?
- 这些都是在机器人构建物体检测模块时发生的例子。
神经网络从反射和海报中检测物体。bug还是功能?(来源:飞船技术)
建筑工程——有效地利用数据
当教授一台机器时,大数据仅仅是不够的。收集的数据必须丰富多样。例如,只使用统一采样的图像并对其进行注释,就会显示许多行人和汽车,但该模型缺乏摩托车或溜冰者的例子来可靠地检测这些类别。
团队需要专门挖掘困难的例子和罕见的案例,否则模型就不会进展。星际飞船在几个不同的国家运行,不同的天气条件丰富了一系列的例子。当星际飞船运送机器人在暴风雪“艾玛”期间在英国运行时,许多人都感到惊讶,然而机场和学校仍然关闭。
同时,注释数据需要时间和资源。理想情况下,最好用更少的数据训练和增强模型。这就是建筑工程发挥作用的地方。我们将先验知识编码到架构和优化过程中,以减少搜索空间,使程序更可能出现在现实世界中。
Starship将先验知识整合到神经网络中以获得更好的模型。(来源:飞船技术)
在一些计算机视觉应用中,比如像素级分割,模型可以知道机器人是在人行道上还是在十字路口上。为了提供提示,我们将全局图像级的线索编码到神经网络架构中;然后,模型决定是否使用它,而不需要从头学习。
资源受限环境下的神经网络
在数据和架构工程之后,模型可能会很好地工作。然而,深度学习模型需要大量的计算能力,这对团队来说是一个很大的挑战,因为我们无法在电池供电的低成本送货机器人上利用最强大的显卡。
Starship希望我们的交付是低成本的,这意味着我们的硬件必须是廉价的。这也是为什么星际飞船不使用激光雷达(一种基于雷达原理工作的探测系统,但使用激光发出的光)的原因,因为激光雷达会让我们更容易理解这个世界——但我们不希望我们的客户支付超出他们实际需要的运费。
学术论文中发表的最先进的目标检测系统大约是每秒5帧[MaskRCNN],而实时目标检测论文并没有报告超过100帧/秒[Light-Head R-CNN, tiny-YOLO, tiny-DSOD]。更重要的是,这些数字是在一张图片上报告的;然而,我们需要360度的理解(相当于处理大约5张单独的图像)。
为了提供一个视角,Starship模型在消费级GPU上运行超过2000帧/秒,并在一次向前传递中处理完整的360度全景图像。这相当于处理5个批大小为1的单个图像时的10,000 FPS。
目标检测模块的潜在问题。如何解决这些问题?(来源:飞船技术)
修复神经网络中的bug是一项挑战
神经网络在许多视觉问题上比人类做得更好,尽管它们仍然可能包含bug。例如,一个边界框可能太宽,置信度太低,或者一个物体可能在一个实际上是空的地方产生幻觉。
修复这些漏洞很有挑战性。
神经网络被认为是难以分析和理解的黑匣子。然而,为了改进模型,工程师们需要理解失败案例,并深入研究模型所学到的细节。
该模型由一组权重表示,人们可以看到每个特定神经元试图检测什么。例如,《星际飞船》的第一层网络激活标准模式,如水平和垂直边缘。下一个图层块检测更复杂的纹理,而更高的图层检测汽车部件和完整的物体。
Starship在机器人中使用的神经网络建立对图像的理解的方式。(来源:飞船技术)
在现实生产中使用神经网络的挑战
技术债务在机器学习模型中有另一层含义。工程师们不断改进架构、优化流程和数据集。结果,模型变得更加精确。然而,将检测模型更改为更好的并不一定保证机器人的整体行为成功。
有几十个组件使用对象检测模型的输出,每个组件需要不同的精度和召回水平,这些都是基于现有模型设置的。然而,新模式可能在不同的方面发挥不同的作用。例如,输出概率分布可能偏向于更大的值或更宽的值。即使平均性能更好,它可能更糟糕的一个特定群体,如大型汽车。为了避免这些障碍,该团队校准了概率,并检查了多重分层数据集的回归。
平均性能并不能告诉你模型的全部情况。(来源:飞船技术)
与监控标准软件相比,监控可培训软件组件带来了一系列不同的挑战。很少考虑推断时间或内存使用,因为这些大部分是常量。然而,数据集转移成为主要的关注点——用于训练模型的数据分布与模型当前部署的数据分布不同。
例如,突然之间,人行道上可能会有电动滑板车行驶。如果模型没有考虑到这个类,模型将很难正确地对它进行分类。来自物体检测模块的信息会与其他感官信息不一致,从而导致向操作人员请求帮助,从而减慢交付速度。
在实际机器学习中,一个主要的问题是训练和测试数据来自不同的分布。(星际飞船技术)
总结
神经网络使星际飞船机器人可以安全通过避开像汽车这样的障碍物,在人行道上通过理解人类和其他障碍物可以选择的所有不同方向。
星际飞船机器人利用廉价的硬件实现了这一点,这带来了许多工程挑战,但使机器人交付在今天成为一个强大的现实。Starship的机器人每周7天在世界各地的多个城市进行真正的送货,看到我们的技术不断给人们的生活带来越来越多的便利,这是值得的。
关于作者
Tanel Pärnamaa是Starship Technologies的深度学习工程师,具有统计学和机器学习背景。(MILA,多伦多大学,塔尔图大学)。
了下:机器人的报告,机器人•机器人抓手•末端执行器

告诉我们你的想法!