智能座舱开发与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.1 整体流程

(1)开发流程 图2-11所示为智能座舱场景整体开发流程,一共包含7个步骤:

1)场景定义:明确了场景面向的群体(驾驶员、乘客、儿童、老人、婴儿等)以及想要解决的问题。场景一般包含了时间、地点、人物、事件任务、情境等元素,作为智能座舱开发的第一步,有着独特的指导意义。在场景定义中,不但要充分分析要解决的问题,还要考虑软硬件平台、技术可行性等各方面因素,最后定义出合理的场景。对于一些比较复杂的场景,可以将其分为若干个小场景分别展开。以DMS中的疲劳检测为例,可以按照算法难易程度及出现频次来开发实现轻度疲劳检测(打哈欠)、中度疲劳检测(中高频眨眼、眯眼呆滞等)及重度疲劳(长时间闭眼等)。

2)UE/UI设计:用户体验(User Experience,UE)设计主要是针对上面定义的场景进行更加具象化的设计,以交互为主,设计为辅。它关注用户使用前、使用中、使用后的整体感受,包括行为、情感、成就等各个方面。UE注重座舱系统与驾驶员、驾驶员与乘客、乘客与座舱系统的双方互动,在思维上要考虑更周全、缜密,以用户为中心。需要深入需求分析阶段,站在更高的层面上,去思考如何在动态变化的过程中找到两者的连接和契合之处,从而使整个产品能够在完整的场景下,增强用户体验。通常情况下,UE在一定意义上和产品经理并驾齐驱,需要做好对产品设计的把关工作。与之不同的是,用户界面(User Interface,UI)主要面向用户使用界面的视觉设计,负责相关场景中的图形、图标、色彩搭配等,致力于打造产品的美感、风格、气质等。在智能座舱中,具体涉及对仪表盘、车内屏幕展示、提示内容等设计。在大多数情况下,UI和UE是两个互有交集的概念。UI是专注于细节的页面交互设计,而UE则专注于需求、任务和目标三者的有效实现。在产品工作中,UI和UE都有着不可替代的作用,两者只有与产品经理协同配合,才能打造出界面精美、符合用户使用习惯、提升用户体验的座舱产品。

3)平台搭建:主要是进行算法开发平台以及软件开发平台的搭建。其中算法开发平台主要包含数据管理、数据标注、模型训练及评测、模型的版本管理等功能。软件开发平台核心是感知插件化模块的开发,包括模型输入输出的预处理与后处理等。除此之外,还有回灌测试平台、座舱的台架环境与实车环境等,方便后续进行场景测试与体验。对于刚开始进行智能座舱开发的小团队来说,以上平台可以由单独的模型训练机器(带GPU的机器)、简单场景开发工具包,以及相应芯片的开发验证板(Development Verification Board,DVB)构成,这种配置可以用于开发简单的座舱demo。但是如果要实现功能量产,则正式的开发平台就必不可少了。

4)开发:主要包含算法开发、感知插件化模块开发以及交互应用场景开发。具体工具以及开发方法,将会在本书的第6~8章做详细介绍。

5)测试:这里主要指的是场景功能测试。具体来说,就是对于开发完成的场景进行各类测试,包含压力测试、全量测试、定点测试等,以帮助开发者发现问题,确保交付的场景能够稳定高效运行。我们将会在本书第9章详细介绍这部分内容。

6)部署:这里的部署可以分为两部分,一部分是对于初次开发的场景进行部署,一部分是对已开发完成的场景进行升级。对于前者,通常没有严格的定义,会随着合作模式以及场景的变化而变化。对于后者,通过使用OTA的方式进行升级。在极端情况下(如返厂维修),可能会采用USB的方式进行升级。

7)维护:在智能座舱场景中,维护的方式可以有很多种。因为机器学习固有的缺点,并不能完全泛化到所有场景中,因此系统容易在陌生场景中出现误报漏报等问题。对于加入“用户体验计划”的用户来说,以上问题可以尽快反馈,从让服务商通过OTA等方式来进行系统升级,降低错误发生率。而对于其他用户,以上周期就会拉长,因此需要在客户与服务商之间搭建方便客户反馈的桥梁,从而尽早发现问题,并解决问题。

图2-11 场景整体开发流程

(2)开发团队 为了完成以上流程,一个座舱团队往往包含以下子团队:

1)数据团队:负责模型训练及测试相关数据的采集与管理,一般使用网络附属存储(Network Attached Storage,NAS)、移动硬盘以及数据管理平台来进行数据采集及管理。

2)标注团队:负责训练及测试数据的筛选、标注等,一般使用数据标注平台。

3)算法团队:负责算法模型研发及交付等工作,一般使用算法开发平台。

4)工程团队:负责感知插件化模块开发以及交互应用场景开发、工具打磨等工作,一般使用软件开发及场景开发平台。

5)测试团队:负责场景测试及反馈等工作,一般使用测试平台。

在项目初期,以上团队及平台可能会随着项目的变化而变化,但是伴随着交付与量产经验的积累,以上团队及相关平台会逐步趋于稳定。下面,我们着重介绍在开发阶段使用的相关工具,包含UI/UE开发平台、算法开发平台、软件开发平台以及场景开发平台。其中对于算法、软件以及场景开发平台及使用方法,我们还会在本书的第6~8章做更加详细的介绍。