现阶段,自动驾驶浪潮正席卷全球,各大车企都在积极研发汽车的自动驾驶功能,但各自采用的方向却并不相同。
与谷歌、Waymo等自动驾驶公司不同,特斯拉坚持走纯视觉路线,即使用成本更低的8枚摄像头进行识别。
低成本的硬件在帮助特斯拉获取大量数据上起到了至关重要的作用。而特斯拉使用PyTorch语言编写的系统可以自动处理数据并对自身进行升级。特斯拉的自动驾驶之所以能够快速的迭代,正是因为软硬件的完美结合。
日前特斯拉的人工智能和计算机视觉主管Andrej Karpathy做了一个10分钟左右的演讲,介绍了特斯拉如何训练其自动驾驶系统实现自我进化。
一、完善算法的关键 普及自动驾驶硬件收集车主海量数据
特斯拉的自动驾驶方案与其它公司不同,并不基于激光雷达或高精度地图,而是采用由8颗摄像头组成的计算机视觉系统,用摄像头拍摄的图像识别道路环境。
与此同时,特斯拉的所有的车型都搭载了自动驾驶硬件,并通过软件更新的形式向车主逐步开放其自动驾驶功能,这样,特斯拉就可以获取大量的真实数据。
截至目前,特斯拉的Navigate on Autopilot(自动辅助导航驾驶系统)已经在全球 50 个国家累计行驶里程 16 亿公里,自动变道 20 万次。
智能召唤功能也已经推送到全球多个地区,车主实际完成了超过 50 万次车辆召唤。
二、使用PyTorch语言实现自我进化 提高数据处理效率
这些数据如果通过人工进行处理,难以想象需要多少时间。Andrej Karpathy 在这里引入了PyTorch和Torch的概念。
据了解,Torch 是一个基于 BSD License 的开源机器学习框架,主要用于图像和视频的深度学习。
而PyTorch,是使用 Python 语言编写的Torch机器学习框架 。相比Torch,PyTorch拥有了更高的编译和运行效率,为特斯拉的自动驾驶系统奠定了良好的基础。
基于PyTorch,Karpathy的团队开发了一个内部戏称为“假期计划”的计算机自我训练系统。使得特斯拉的自动驾驶系统不光能够收集数据,甚至还能够对数据进行处理并实现自我进化。
这就对系统的数据处理逻辑及处理速度有着极强的要求。Karpathy为我们阐述了这套系统是如何工作的。
首先,该系统会把收集到的图像解构成多个独立的物体,如红绿灯、路缘石、道路标识、移动物体等。而所有这些数据组合起来,就可以完整的描绘当前道路的信息。
接下来,每个物体的数据都有相对应的处理器进行分析处理。这些处理器的数据处理是协同进行的,以避免数据之间相互孤立。微观上,系统能够监测某一物体的各项数据;宏观上,系统能够把各物体的数据进行汇总,良好的还原当时的道路情况。
三、数据互联协同分析 多传感器宏观判断路况
Karpathy还介绍了该系统的一个特点:汽车的8个摄像头也是协同工作的。在很多情况下(例如距离和深度的判断),单张图像无法提供足够的数据量。而多摄像头协同工作将有助于自动驾驶系统更好的理解该场景。
在车辆行驶的过程中,针对同一个场景,8个摄像头会用不同的距离和焦距拍摄总计4096张照片。这些照片最终都会被以上述的方法进行加工处理。
特斯拉的这套训练系统最终形成了一个多摄像头,多传感器共同协作的系统。这套系统不光能够分析车辆外部的道路环境,还能收集车辆在应对各种情况时的处理及结果。
结语:软硬件结合是特斯拉方案的关键
先用低成本的硬件完成普及,然后再用交付的硬件收集数据,最后用合理的编程语言训练机器独立处理数据,完成自我升级。特斯拉的每一步棋都下的精妙无比。
数据样本大,数据处理能力强是特斯拉这套自动驾驶系统的两大核心优势。
根据这两点,我更加看好特斯拉未来的全自动驾驶系统,但对于马斯克给出的2020年特斯拉实现全自动驾驶的承诺,我持怀疑态度。