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
| """ IMS 座舱合成数据管线(基于 NVIDIA 方案) """
class IMSSyntheticDataPipeline: """ 座舱感知合成数据生成管线 目标:减少 80%+ 真实数据采集需求 """ def __init__(self): self.scene_generator = SceneGenerator() self.metahuman = MetaHumanGenerator() self.behavior_script = BehaviorScripter() self.renderer = OmniverseRenderer() self.auto_labeler = AutoLabeler() self.validator = SyntheticDataValidator() def generate_batch(self, scenario_config: dict, n_samples: int = 1000): """ 批量生成合成数据 Args: scenario_config: 场景配置 n_samples: 生成数量 """ dataset = [] for i in range(n_samples): scene = self.scene_generator(scenario_config) person = self.metahuman.generate( age=scene.get('age', random.randint(18, 70)), gender=scene.get('gender', random.choice(['M', 'F'])), body_type=scene.get('body_type', 'normal'), skin_tone=scene.get('skin_tone', random.uniform(0.2, 0.9)) ) behavior = self.behavior_script( action=scene.get('action', 'normal_driving'), severity=scene.get('severity', 0.0), duration=scene.get('duration', 30) ) frames = self.renderer.render( scene=scene, person=person, behavior=behavior, camera_config={ 'resolution': '1600x1200', 'fps': 30, 'ir_mode': scene.get('ir', False) } ) labels = self.auto_labeler.label( frames=frames, scene=scene, person=person, behavior=behavior ) dataset.append({ 'frames': frames, 'labels': labels, 'metadata': scene }) validation = self.validator.validate(dataset) return { 'dataset': dataset, 'validation': validation, 'n_samples': n_samples }
|