在2020年计算机视觉与模式识别会议(CVPR)上,特斯拉人工智能高级总监Andrej Karpathy发表了关于特斯拉如何构建自动驾驶汽车的演讲。Karpathy的团队负责构建用于特斯拉自动驾驶的神经网络。鉴于特斯拉在不使用激光雷达的自动驾驶计算机视觉领域的行业领先地位,Karpathy团队在特斯拉采用的方法为所有使用计算机视觉解决问题的团队提供了可行的建议。
在演讲的一个特别部分,Karpathy展示了构建一个成功识别停车标志的神经网络的挑战,以便汽车在识别到停车标志时能够学会在正确的位置停车。表面上看,这项任务听起来相对直接:停车标志是大型的红色八边形标志,通常很容易识别,并且位置统一(通常位于道路的右侧,附着在杆子上)。
实际上,通过简单的谷歌图片搜索“停车标志”,可以看到以下结果:这是在想到路口的停车标志时可能首先想到的最典型的停车标志示例。然而,Karpathy概述了一系列边缘情况——可能无法预料到的停车标志图像——在实际环境中看到它们之前可能无法预料到。
不幸的是,世界并不那么干净。考虑以下在教授模型识别停车标志时的边缘情况。遮挡:停车标志并不总是清晰可见。物体经常遮挡(和机器)清晰看到它们的能力。Karpathy分享了以下来自他们数据集的示例:遮挡阻挡了停车标志的视线。
安装:停车标志并不总是安装在柱子上。特斯拉的人工智能总监分享了额外的示例:不是安装在金属杆上的停车标志,这与通常的预期不同。例外:停车标志并不总是表示需要停车。考虑以下来自特斯拉数据集的示例:这些停车标志上写着“停车”——除了例如当车辆右转时。条件性:并非所有停车标志始终处于活动状态。例如,考虑附着在学校巴士上的停车标志、摆动门或道路上的工人。
看到停车标志并不总是意味着它处于需要停车的活动状态。在Andrej Karpathy走过一系列看似可笑的停车标志边缘情况后,他描述了特斯拉如何负责任地构建可靠的视觉系统。“因为这是客户手中的产品,被迫经历长尾效应。不能只做95%的案例,然后就此罢手。必须让它工作。所以那个长尾效应带来了各种有趣的挑战。”
在特斯拉的自动驾驶产品案例中,他们已经在向客户提供能力,为质量设定了高标准。Karpathy的团队不仅关注“快乐案例”——一个在路口的银色杆子上清晰可见的停车标志——实际上非常关注非典型案例。特斯拉对数据集的策划非常着迷。这表现在:特斯拉可能拥有世界上最全面的关于遮挡和例外情况的停车标志的数据集。
特斯拉在测试集策划上花费的时间与他们在训练集策划上花费的时间一样多,以确保他们的模型准备好应对车辆在路上可能遇到的各种边缘情况。哦,不要开始让Karpathy谈论速度限制标志……速度限制标志有各种各样的形状和大小,有独特的例外。
这也会影响模型。很可能在考虑停车标志的样子时没有猜到所有可能的边缘情况。以上边缘情况甚至没有捕捉到所有停车标志边缘情况的全部变化的可能性更高!这对计算机视觉模型创建过程意味着几件事情。强调持续的数据集策划而不是模型选择。
有传言说Karpathy每天花费数百小时审查图像——而不是模型构建——每一天。确保图像数据集代表模型将看到的条件对于创建高质量的模型和调试模型性能至关重要。Kaggle的CTO Ben Hamner最近在Twitter上分享了类似的想法。尽可能多地从实际生产条件中收集数据。正在训练的数据可能与在生产中看到的模型数据不同。尽可能多地从模型将在生产中运行的条件中收集数据,而不是训练数据。
可能有一些情况,从生产条件中获取数据是不可能的——比如捕捉一个不太可能发生的事件。在这些情况下,考虑训练数据集是否足够强大,可以创建一个初始部署模型,并且在模型部署到生产后继续收集数据。例如,特斯拉每天都在从路上的所有汽车中定期向总部反馈数百万张图像。Roboflow的上传API使从生产条件中捕获和反馈图像到不断增长的数据集变得无缝——就像把数据收集任务放在自动驾驶上一样。
监控和更新数据集质量。数据集的健康状况不是静态的。跟踪图像数量、跨类别的注释、类别平衡和注释质量是一项持续的努力。“数据集是活的,标记指令一直在变化。需要不断地策划和改变数据集。”