5 天玩转无人驾驶实训基地

9 月 17 日

Hi,大家好,从今天起,我将会记录由 PIX,Udacity 和 Tier IV 联合举办的为期 5 天的无人驾首期培训线下体验。



无人驾驶领域人才极度稀缺,工程师的培育高度依赖真车测试环境与算法演练。而目前全球范围内,可供无人驾驶的测试场地不足 20 家,真正意义上的实训基地几乎没有。
——雷锋网

本次线下实训不仅让学员可以体验到从 0 到 1 搭建无人车,还可以让学员体验真正的无人车改装的过程。这是 Udacity 的一次大胆尝试与创新,想想,让自己的学员将自己手写的代码亲自实现在汽车上,并让汽车有“灵魂”的动起来,这本身就是一件令人激动并且有意义的事。

来,先放放几张今天发布会的图。

学员与发布会嘉宾合影留念
Udacity 亚太区总负责人 Robert
可爱又辛苦的 Udacity 小伙伴
爱摆 Pose 的学员

首次无人驾驶线下培训课程,有幸请到了来自名古屋大学教授 Alex Carballo 来担任此次活动的技术讲师。他带来的 Autoware 是全球首款无人驾驶应用平台。在 Udacity 无人驾驶工程师纳米学位 Capstone 毕业项目中,Autoware 给全球的学员搭建了由软件到硬件的桥梁。

更难得可贵的是,PIX 公司不仅提供了三辆改装的无人车(配备了 Velodyne 公司提供的 VLP-16 线激光雷达),并且还提供真实的自动驾驶测试基地,供学员进行一系列的测试。

首次线下课程,经过层层筛选,最后邀请了全国 15 名学员来参加这次线下课程。他们来自上海,北京,沈阳,西安,湖北等许多城市。这其中还包括来自台风重灾区的深圳和广州的学员(由于台风到来,飞机火车全部停运,两名学员预计开课当天到)。学员笑称说,无人驾驶的门槛果然太高,台风都要拦住我。

课程设计搭建了一套完整的实现无人驾驶红绿灯检测的项目流程攻略。希望通过此次项目,能够让学员真正领略到无人驾驶车在改装过程中的所有细节。课程的目的并不仅仅是 Udacity 能教会学员什么,而更重要的是希望通过此次线下培训,能激发出学员的潜力,让他们能够通过自己的学习以及探索,自己可以拓展新思路。我将会在未来 5 天记录整个线下体验活动的过程。


9 月 18 日

进入实训课程的第一天,15 名学员都很兴奋地早早来到了 PIX 工厂。两名来自深圳和广州的学员也都按时到位。上午主要的活动是本次实训课程的整体流程介绍,并让队员自我介绍,进行分组。最终,在各自 Leader 的带领下,“可还行”、“起步弹射”、“红鲤鱼与绿鲤鱼与驴” 三组战队隆重诞生。中午稍作休息之后,学员迫不及待地开始了“探索”新车。

拍摄 Velodyne 激光雷达
探索无人车的“秘密”

第一天的任务是机器部署。

其实刚刚开始设计机器部署作为线下培训内容的时候,听过很多反对的声音。大多数人觉得课程应该给学员准备好一台软硬件配置相同的机器。学员来了之后,可以直接上手,比如训练深度学习模型。但是,在实际的生活中,往往就是机器部署卡住了很多非计算机专业的学员,从而令很多学员在学习的初期就会因为这样的原因所放弃。虽然这一部分很耗时,为了让学员亲自的“趟坑”,课程保留了这一部分交给学员自己去探索,完成机器部署的任务。

果不其然,在简单的搭建起机器硬件连接后,网络成为了所有人最大的问题。大多数学员无论是有线还是无线都连不上网络。PIX 也紧急调用工程师帮助学员解决问题。刚开始,觉得这是很简单的事情,但是无网络的状态持续了一个半小时。这时,学员的情绪可能因此而焦躁。因为没有网络,基本什么事都做不了。但是令人意外的是,学员并没有任何的抱怨。有些学员主动和 PIX 工程师进行交流,一起解决断网的问题。而有些学员开始规划并且预习接下来几天的学习任务,并找擅长某些知识点的学员进行交流。大家并没有因为这次事故而感觉到焦虑,也都有自己的事情去做。

经过所有人的努力,网络问题终于解决了。原来,三台无人车的激光雷达和学员所有的主机与个人笔记本都在一个网关内,而激光雷达每秒又要传输几十兆的脉冲数据。这就导致其他终端抢占的网络空间减少。这次意外,不仅没有让学员感觉到失望,而且通过大家集体的力量,发现了其中的问题,并得到了知识的收获。

在这之后,学员们在各自 Leader 的带领下,分工明确,高效地完成部署的任务。其中遇到的问题,都在学员之间的交流, PIX 讲师的帮助下,最终得到解决。在整个的部署过程中,Alex 教授也不遗余力地帮助学员答疑解惑。

学员通过自己的笔记本远程部署无人车主机
Alex 教授 面授机宜

经过一整天的实践,三组学员都顺利地完成了机器部署的任务,并且都表示整个一天下来,收获满满。每个人都至少在 PIX 工厂奋战到晚 9 点以后。能够看出,这 15 名学员每个人都非常喜欢无人驾驶,也非常珍惜这次机会。

明天继续更,再见!


9 月 19 日

无人开始实训的第二天。15 位奋战到凌晨的学员们眼里看不到丝毫疲惫,经过前一天机器部署,第二天一大早抑制不住的兴奋,迫不及待的希望能够尽早完成任务前往场地训练模型。 Alex 教授的技术分享,他耐心的教授大家如何用 Autoware 去构建地图,将平时需要 6 天时间讲座的知识点抽选出它们的精华部分授予学员,希望他们能在最短的时间内高效掌握关键技术点,虽然这样的高容量的吸收对学员而言是一个不小的挑战。学员们以最快的速度午餐后,便以十足的热情投入到了下午的实训内容-采集数据。连绵了 4 天的秋雨仿佛也为了这群充满理想与激情的学员而刻意停下,在秋日暖阳的沐浴下,大家依次配置好车上摄像头的驱动后,都怀着跃跃欲试与迫不及待的心情准备出发去无人驾驶实训场地进行拍摄了。

最先完成配置的是我们的 “可还行” 与 “起步弹射” 小组,他们驱车离开后,我问还在焦急配置的 “红鲤鱼” 队员看到别的队员离开是否会有焦虑感:“最后一个挺好的,司机不用着急回来接别的队伍,时间充裕,说不定还可以顺便出去兜兜风呢~ ” 最小的队员于伸庭笑着答到,下午 3 点的阳光从天窗上折射下来正好洒在他开朗的笑脸上。但说完他们便加快了配置速度。嘿,永远都要把积极乐观的一面留给他人,是我从这些学员们身上感受到的又一个正能量。

热情洋溢的学员

早就听闻贵阳今年这个季节的天气 “变幻莫测”,来了两三天之后,大家都深知今天下午的阳光来之不易,抵达测试场地后便迅速进入 “战斗” 状态,分秒必争,谁知道天气是不是说变就变呢。每个小组都想尽办法开动汽车,竭尽全力从不同的角度拍摄红绿灯的图像数据,为了增加数据的多样性,还多次变换红绿灯的摆放位置以此来增加数据的多样性。

实训基地的无人车
可怜的交通灯

来回折腾了近 4 个小时后,每个小组带着拍摄的近万张满怀期待的回到了工厂。

随后各个小组的队长便开始迅速分配任务-人工打标签。这是一项枯燥、艰苦却又十分重要的工作,它是用来解读数据的最佳方式,通过仔细的观察图像与数据,才能清楚的判断采集回来的数据的优缺点。

认真观察数据的学员

打标签的过程便开始能逐渐判断出每个小组的特点,而小组队长的整体组织规划与协调的能力也在这时拉开了每个小组的进度差距。三个小组中,有采用流水线分工的模式进行标签处理,也有均分的方式,接下来便是用打好标签的数据进行模型的 fine-tune。Fine-tune 是现在最快达到优秀检测结果的方式;通过迁移学习,可以利用世界上检测和速度最好的网络模型的优势。只需进行一些微调,便可以适应现在的红绿等数据。经过一段时间的训练后导出最佳模型,嵌入到 Autoware 检测的节点上,就可以去做实地的测试了。

转眼间就已经深夜 10 点,但是大家却丝毫没有想要回酒店休息的迹象。这样的专研精神状态,在别人看来是苦与累,但是只有身在其中的人,才明白,为改变人类出行方式与交通未来而求知的路,其实是一种最持久的快乐。


9 月 20 日

实训课程进入第三天,经历了前两天的磨合,各个组的队长与组员之间越发的默契。大家都进入了快速迭代期。

上午,Alex 教授继续昨天 Autoware 建图的知识讲解。谁知,仅仅吃过了午饭,一条重磅炸弹突然爆炸。主办方突然决定为学员赞助,增加一些奖品给到这些学员。设置这些奖项的目的,并不是为了排出名次,而是想让大家明白,每一个人都是赢家,但是为了鼓励最有突出贡献的团队与个人,希望以此进一步激发团队协作能力。

学员们听到这个,瞬间增加了他们的斗志。既然这是个挑战,那就会有压力。整个下午,学员们都在加速进行自己的进程。虽然少了些欢声笑语,但多了些挑战的激情。

学员认真备战

昨日学员们根据采集的数据而训练好模型,想尽快配置好相关文件。准备将真车再次开往实测场地进行测试。每一队在自己计算机上使用的模型经过图片测试,都能够很好的检测出红绿灯位置与类别。但是在实测场地的结果反馈来看,效果并不是很理想。这其中表现领先的是“可还行”队,他们的检测效果时好时坏,但是他们的打标签的数据只有区区 100 张。而“弹射起步”队手动标签打了 1000 张,但是却没有多少交通灯检测能力。原因分析应该是数据的差异性太小,导致模型实际上学到的映射并没有泛化能力。因为图像数据采集是从视频流中提取出来的,而连续的视频帧之间的区别并不是很明显。如果把这种情况更加极端化,就好比我用一张图片复制了 1000 张,所以最终很有可能模型虽然训练了 1000 次,但实际上只通过这一张图像而训练出模型而已。这样的模型存在严重的过拟合现象。

各自的队伍都通过自己模型反馈的好坏找出下一步改进的策略。但是,在过程中,出现了一些小小的事故。“鲤鱼”队的的 Honda 出现了电路老化,产生了短路,引起了小火灾。好在 PIX 的员工非常专业,反应迅速,第一时间将火苗扑灭。这次小事故,也让大家对于安全性重新的重视起来,提高警觉性。

实训的表现也吸引了媒体广泛的注意,我们的部分学员也接受了央视的采访。

面对央视羞涩的“小鲜肉”

繁忙的一天即将结束,明天是备战最后实战测评的最后一天,学员们都摩拳擦掌做最后的冲刺。


9 月 21 日

实训基地首次集训来到了倒数第二天。在这一天,我们将时间都交给了学员。今天天气不错,各个战队根据自己训练优化过的模型又反复几次前往实测地点进行测试。我们的测评规则也发放给大家。主要是由两部分组成。第一部分为实测表现,第二部分是团队综合表现。其中实测表现又分为两部分。第一部分为红灯停止测试。具体需要车辆在检测出前方有红灯时,在适当的位置停下来。通过反复测试,规定车的前轮的中轴线落在 6 到 8 米处为满分,其他区域将适当扣分,超过红绿灯或者离红绿灯特别远的情况下,计入零分。

第二部分为绿灯启动,需要车辆在检测出前方有绿灯时,以尽量快的速度完成启动。0 秒为满分,30 秒以上为 0 分。

这两部分的占比相同,都会计入到总分中。每组测试留有 5 次机会,将去最好的四次成绩取平均值。具体的计分规则请参考如下链接:

udacity/PIX-Self-Driving-Engineering-Basegithub.com图标

由于“红鲤鱼”队进度稍稍落后,训练的深度学习模型并不是很稳定。为了完成实测的目标,队长决定放弃用神经网络的方法,而决定用传统的视觉方法进行。他们决定采用检测图像中红色像素点多少为依据,来进行是否需要停止车辆。当红色像素点大于一定的阈值,那么判断当前环境内有红灯,而其他情况下认为是可以前行的状态。而路线是通过采集地图以及标定路点的方式确定下来,而根据车的特性,适当调整车的速度。

另一方“弹射起步”队,虽然起初进度上很快,但是这几天经历了系统重装,今早又发生激光雷达报废,进度上稍稍被“可还行”队的进度悄悄赶上。受到“红鲤鱼”队启发,“弹射起步”也决定放弃深度学习的模型。他们的策略比“红鲤鱼”队更加完善。因为实测环境已经固定。小车循迹的路线也完全固定。所以所有的位置坐标都已经固定。只要车内的摄像头的位置变化不大,每次在相同区域所采集的图像都是差不多的。所以,他们根据实测环境,在图像中又做出了最感兴趣区域,将这一区域之外的所有图像信息进行了过滤。之后又在最感兴趣区域做出轮廓检测,将红绿灯的区域识别的更加准确。最后在 HSV 颜色模型中的色度通道进行红绿像素的计算,同样是判断像素点的积累是否超过一定的阈值,来结合车辆纵向控制,决定是否启动与停止。当两队决定改变策略并且调通代码后,已经来到了傍晚。但是,在光线不足的条件下,新程序在实地测试中表现都异常的好。

我们再看看一直神神秘秘的“可还行”队伍。队伍不声不响地、有条不紊地执行着深度学习模型。并反反复复一次次的微调、优化、编译程序。他们的目标很简单。虽然本次实训课程新增了实地测评,并加入了竞争机制。但是他们还是想放下功利心里,去用泛化性更好、但是相对复杂并且会花大量时间成本的深度学习模型去进行最终的评比。虽然,从理论上分析,在这种简单场景的红绿灯测验中,其他两组的策略会更加简单有效,但是在未知复杂场景中,这种方案并不能够举一反三。

为了尽量在最终测评取得一个优秀的成绩,优化模型是无止境的。所以每一个队伍都决定为了明天而通宵达旦。佩服这群年轻的力量。

晚间奋战的学员

9 月 22 日

今天的实训时间应该是整个实践培训课程中最长的一天。因为计时器是从凌晨 0 点开始。三组战队的学员一次次地奔往实测场地(可怜了实测场地的保安小哥)。这其中,效果达到测评成绩完美状态的是“弹射起步”战队。在队长的带领下,他们用传统控制的方法,可以达到每一圈无人车停止的位置都在同一点。并且,绿灯亮起后,可以在 1 秒之内迅速起步。真正达到了“队名”的标准。“红鲤鱼”战队貌似在停止的位置上,并不是很稳定,有时近有时远。并且速度大小有时会影响无人车是否可以顺利停下来。但是“可还行“队貌似在等待什么,他们优化网络需要重新训练,需要重新编译,都非常的耗时间。五个人都挤在一辆车里安静的讨论,等待,并没有急躁。他们在等待模型重新训练完整,等待白天的来临,因为他们的模型是采集白天的数据集,所以只有白天红绿灯在背景复杂的情况下才可以得到接近完美的检测。

凌晨测试的战队
盯着屏幕调试程序的学员

为了获取一些休息的时间,”弹射起步“队决定先回去休息。他们胸有成竹,认为白天的比赛自己的成绩绝对可以达到满分。这时,已经是凌晨 3:30。”红鲤鱼“战队测试到 5:30,也决定休息一两个小时。终于等到太阳升起的”可还行“战队,这时开始了他们的测试计划。他们已决定这次要通宵就通到底,破釜沉舟。

早晨的测评计划是在上午 9:30,但是天空不作美,贵阳开始下雨,并且雨量还很大。这打乱了所有人的计划。首先,雨天窜在安全问题。现在,地上已经有一定量的积水。如果无人车的代码不够严谨,操作失误,即使有安全驾驶员,可能刹车也无济于事。其二,由于采集数据的摄像头是在车的内部,面对玻璃上有雨滴的情况,在这短短的 5 天时间,大家并没有考虑过,所以对于自己的模型的最终检测结果,也有很大的影响。所以,Udacity 和 PIX 决定暂时取消上午的测评。先回到工厂,等到下午,视情况而定。如果天气转好,可以继续测评,但是如果继续大雨,那么就取消测评,这次的奖项平分给各个战队。我们将这个决定告诉给各个战队队长后,各个队长分别与自己的组员讨论。得到的反馈大体上可以归纳为,每一个来参加培训的人并不是冲着奖项而来,而是学习到新的东西,对于名次大家并不在意,更重要的是为了按时完成目标的过程能够学习到多少知识。大家非常支持现在的决定。这让我们非常感动。这也是我们建立这样项目的目的。

也许老天爷听到了这样的心声,在中午过后,居然太阳露了出来。大家按照计划集体出发,来到最终测评的地点,开始热身。热身的时候一切和预料的没什么差别。”弹射起步“战队依然拥有着稳定的发挥。其次是”红鲤鱼”战队。但是“可还行”战队迟迟不能热身,因为由于他们操作失误,导致模型需要重新编译,这需要时间。在大家集体的商议后,测评决定在 2:30 开始。第一组出场的是“弹射起步”战队,第二组是“红鲤鱼”战队,最后一组是“可还行”战队。这样的安排也是其他两组想为了给“可还行”战队争取一些时间。大家彼此之间虽然会存在些许竞争意识,但是还是很有爱的。

到了下午 2:30,我们的测评正式开始。第一组“弹射起步”战队气势登场。首先测评的是红灯停止的测评,但是在这之前,必须要通过绿灯行驶的简单测试。这是为了防止队伍每次经过红绿灯前设置强制停止的规则。但是让人们大跌眼镜的是,“弹射起步”队遇到了绿灯,自动驾驶模式居然停了下来。我们认为这是偶然事件,大家都觉得可以再给一次机会,但是无论如何,无人车每次都停在一个位置上。经过讨论,每组队长同意让“弹射起步”队在场下进行代码调试,而第二组“红鲤鱼”队出场。

“红鲤鱼“队上来迅速通过绿灯测验,这也是本次测评中第一个通过红绿灯的队伍。之后在第一轮的红灯停止计分环节中,没有成功停下来,只能遗憾得到 0 分。但是,”红鲤鱼“队还有 4 次机会。第二次第三次都顺利地通过测试。但是第四次,在红灯处即将停止的时刻,汽车又突然加速。队长决定申请场下调代码。经过与其他队长以及组员商量之后,”鲤鱼“队也在场下调整自己的代码。

两组的失败,使得场上的气氛有些压抑。现在轮到了没有经过热身的”可还行“队。大家把所有的希望寄托于这只赛前不看好的队伍中。第一次绿灯测试,顺利通过。队员们振臂高呼。到了正式红灯停止项目,行驶车辆稳稳地停在了满分指定区域。全场都报以热烈掌声。在绿灯起步项目,在计时大约 7 秒处,准确出发。厉害的不只是第一圈,这之后的每一次停车起步,成绩稳定的让人诧异。谁也没有想到,一直神秘的”可还行“队,第一个完成了所有赛事。队长和队员以及其他队的所有成员都在为这支队伍鼓掌。更难得可贵的是,这只队伍从项目初期到最后一直坚持使用泛化性很好但对于简单环境下反而并不稳定的深度学习模型。在其他两队中途放弃深度学习模型而换用创痛机器视觉方法的对比下,他们依然坚信自己可以成功。最终的结果表明,他们的选择是正确的。

无人车通过测评

现在,回到第一战队和第二战队,两组都是因为算法上的不稳定,导致测评环节出现问题。不过两支队伍经过不断的调试代码之后,并不断地测试。终于经过反复的测试之后,完成了任务。虽然原则上,即使完成了任务,也不会计入成绩。但是毕竟这次培训并不是为了最后的竞赛,而是让大家都能体验到这次无人驾驶的真车实践。所以,当任务成功完成后,每个人都在庆祝,都在互相祝贺,并合影留恋。

学员与导师的合影

回到实训基地,我们也进行了简短的总结仪式。每个队伍都进行了小组分享。Udacity 和 PIX 以及 Tier IV 也为每一名成员颁发证书。然后迎接我们就是最后的狂欢。谁知,这些可爱的学员,不放过任何可以学习的机会。吃饭只占用了半个小时。然后抓紧时间又去学习了。有些学员是整理代码,有些学员抓住 Alex 不放,继续发问。有些学员在学习这几天没有学透的知识,向各位大佬请教。这让 PIX 准备的“啤酒们”很是多余。

结语

历时 5 天的线下培训课程就这样结束了。这其中,有期许,有盼望,也有压力,有沮丧,还有成功后的喜悦。学员们纷纷表示,期待下一次的实训,期待下一次的重逢。我们 Udacity 也带着满满的收获,已经准备下一次的旅途。每一名学员都是全球首个实训基地的创立者,这些都是我们的财富。

每天写知乎写得腿都麻了!

终于和后面的 KUKA 机械臂合了影

另外,Udacity 的学员也撰写了自己的复盘体验,欢迎大家去捧场!

江浩:为期5天的无人驾驶线下实训,你能学到什么?zhuanlan.zhihu.com图标

编辑于 2018-10-17