VLA 场景指南
简介
VLA(Vision-Language-Action)场景是一类特殊场景。在该类场景中,用户需要根据相机画面中的交通指示牌等视觉内容,完成多种类型的感知与决策任务,包括文本指令理解、违停车辆检测以及功能区合规性审查。
如何辨别 VLA 场景
通过
metacar.SceneAPI.get_scene_static_data()获取到的SceneStaticData中,vla_extension不为None即可判断为 VLA 场景。与普通场景的主要差异如下:
任务类型与提交内容
VLA 场景包含三种不同的任务类型,用户需要根据当前场景的具体任务提交相应的结果。在每个子场景中,用户通过 metacar.VLAExtensionOutput 提交结果。
1. 文本指令任务
在此类任务中,用户需要识别场景中的文字指令,并解析出关键信息。
提交字段: text_info (VLATextOutput)
ocr_text: 识别到的整句 OCR 指令文本(例如“100秒内去到B栋一单元门口”)。time_phrase: 从指令中抽取的时间相关片段(例如“100秒内”)。location_phrase: 从指令中抽取的地点相关片段(例如“B栋一单元门口”)。action_phrase: 从指令中抽取的动作相关片段(例如“去到”)。
2. 停车区违规检测任务
在此类任务中,用户需要识别停车区域内的车辆,判断其是否位于限制区域,并上报违停车辆的贴纸编号。
提交字段: parking_result (ParkingResult)
violating_sticker_ids: 检测到的违停车辆贴纸编号列表(例如["B-01", "B-03"])。
3. 功能区合规检测任务
在此类任务中,用户需要结合规则文本与车辆贴纸类别,判断车辆是否合规,并上报违规信息。
提交字段: function_zone_result (FunctionZoneResult)
violations: 违规列表,包含多个FunctionZoneViolation对象。FunctionZoneViolation包含:rule_code: 违反的规则代码(例如 "R01")。sticker_ids: 违反该规则的车辆贴纸 ID 列表。
如何提交
使用 metacar.SceneAPI.set_vehicle_control() 发送车辆控制命令时,可将 metacar.VLAExtensionOutput 通过参数 vla_extension 传入。
根据任务不同,只需填充 metacar.VLAExtensionOutput 中对应的字段,其他字段保持为 None 即可。
示例 1:提交文本指令结果
from metacar import SceneAPI, VehicleControl, VLAExtensionOutput, VLATextOutput
# ... 初始化代码 ...
vla_payload = VLAExtensionOutput(
text_info=VLATextOutput(
ocr_text="100秒内去到B栋一单元门口",
time_phrase="100秒内",
location_phrase="B栋一单元门口",
action_phrase="去到",
)
)
api.set_vehicle_control(vc, vla_extension=vla_payload)
示例 2:提交停车区违规结果
from metacar import SceneAPI, VehicleControl, VLAExtensionOutput, ParkingResult
# ... 初始化代码 ...
vla_payload = VLAExtensionOutput(
parking_result=ParkingResult(
violating_sticker_ids=["B-01", "B-03"]
)
)
api.set_vehicle_control(vc, vla_extension=vla_payload)
示例 3:提交功能区合规结果
from metacar import SceneAPI, VehicleControl, VLAExtensionOutput, FunctionZoneResult, FunctionZoneViolation
# ... 初始化代码 ...
vla_payload = VLAExtensionOutput(
function_zone_result=FunctionZoneResult(
violations=[
FunctionZoneViolation(rule_code="R01", sticker_ids=["C-02"]),
FunctionZoneViolation(rule_code="R02", sticker_ids=["C-01", "C-03"])
]
)
)
api.set_vehicle_control(vc, vla_extension=vla_payload)
说明:
对于 文本指令任务,每个子场景仅需要提交一次
vla_extension,如多次提交,以最后一次提交为准。对于 停车区违规检测任务 和 功能区合规检测任务,提交
vla_extension后即视为最终结果,平台将立即进行评分并结束当前子场景。
相关模型
VLA 相关数据模型定义见: