1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| """ 座舱数据合成管道示例
基于Cosmos + CoMET架构, 为IMS生成合成训练数据 """
import numpy as np
class CabinDataSynthesis: """座舱数据合成管道""" def __init__(self): self.scenarios = self.define_rare_scenarios() self.augmentations = self.define_augmentation_space() def define_rare_scenarios(self) -> dict: """定义需要合成的稀有场景""" return { "CPD": [ "3岁儿童独自在后排, 睡着, 冬季夜间", "婴儿在安全座椅中, 被毯子覆盖, 夏季中午", "儿童在后备箱区域, 车辆锁止", "宠物+儿童同时在后排" ], "OOP": [ "成人零重力座椅后靠60°, 睡着", "乘员侧坐看手机, 面朝右侧", "儿童前倾趴在后排座椅背", "乘员脚放在仪表台上" ], "疲劳": [ "驾驶员微睡眠3秒, 高速公路场景", "驾驶员严重疲劳, 连续眨眼>5次/10秒", "夜间驾驶, 驾驶员闭眼2秒", "黎明时分, 驾驶员打哈欠" ], "认知分心": [ "驾驶员睁眼但注视固定点(走神), 持续10秒", "驾驶员频繁眨眼(>25次/分), 注视前方", "驾驶员瞳孔缩小, 注视偏离道路", "驾驶员在思考, 眨眼模式异常" ] } def define_augmentation_space(self) -> dict: """定义数据增强空间""" return { "光照": ["白天(500+lux)", "黄昏(50lux)", "夜间红外(0lux, 940nm)", "隧道入口", "隧道出口", "树荫闪烁"], "人物": ["不同人种(亚/欧/非/拉美)", "年龄(3/8/15/25/45/65)", "体型(瘦/中/胖)", "眼镜/墨镜/无"], "姿态": ["正常坐(25°)", "微后靠(35°)", "半躺(43°)", "全躺(60°)"], "遮挡": ["无遮挡", "手挡脸(打电话)", "口罩", "帽子", "安全带挡颈部", "方向盘挡下半身"] } def estimate_synthesis_value(self): """估算合成数据的价值""" scenarios = self.define_rare_scenarios() augs = self.define_augmentation_space() total_combinations = 1 for key, items in scenarios.items(): print(f"{key}: {len(items)} 稀有场景") for key, items in augs.items(): print(f"{key}: {len(items)} 变体") total_combinations *= len(items) print(f"\n理论组合空间: {total_combinations:,}") print(f"每场景生成100帧: {len(scenarios) * total_combinations * 100:,} 总帧数") def generate_plan(self) -> dict: """生成合成数据计划""" return { "Phase 1 (1-3月)": { "任务": "Cosmos Predict生成CPD场景", "场景数": 20, "每场景帧数": 1000, "总帧数": 20000, "标注": "CoMET自动标注(位置/姿态)" }, "Phase 2 (3-6月)": { "任务": "Cosmos Transfer生成多光照变体", "场景数": 20, "变体数": 6, "总帧数": 120000, "标注": "自动+人工抽检" }, "Phase 3 (6-9月)": { "任务": "OOP+疲劳场景合成", "场景数": 30, "总帧数": 300000, "标注": "3D关键点+姿态标签" }, "Phase 4 (9-12月)": { "任务": "认知分心场景+多人物变体", "场景数": 40, "总帧数": 500000, "标注": "PERCLOS+眨眼率+扫视熵" } }
if __name__ == "__main__": synth = CabinDataSynthesis() synth.estimate_synthesis_value() print("\n=== 合成数据生成计划 ===\n") for phase, details in synth.generate_plan().items(): print(f"{phase}: {details['任务']}") print(f" 场景: {details['场景数']}, 帧数: {details['总帧数']:,}")
|