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
| class SceneParameterizer: """ 场景参数化(随机化) """ def __init__(self): self.params = { 'driver': { 'gender': ['male', 'female'], 'age': [20, 60], 'height': [150, 190], 'weight': [50, 100], 'pose': ['normal', 'leaning_forward', 'leaning_back', 'side'], 'emotion': ['neutral', 'happy', 'tired', 'angry'] }, 'environment': { 'illumination': ['day', 'night', 'tunnel', 'shadow'], 'weather': ['clear', 'rain', 'fog'], 'external_scene': ['highway', 'city', 'parking'] }, 'camera': { 'position_noise': 0.05, 'orientation_noise': 5, 'lens_distortion': [0, 0.1] } } def randomize_driver(self): """ 随机化驾驶员参数 """ import random driver = {} driver['gender'] = random.choice(self.params['driver']['gender']) driver['age'] = random.randint(*self.params['driver']['age']) driver['height'] = random.randint(*self.params['driver']['height']) driver['weight'] = random.randint(*self.params['driver']['weight']) driver['pose'] = random.choice(self.params['driver']['pose']) driver['emotion'] = random.choice(self.params['driver']['emotion']) return driver def randomize_environment(self): """ 随机化环境参数 """ import random env = {} env['illumination'] = random.choice(self.params['environment']['illumination']) env['weather'] = random.choice(self.params['environment']['weather']) env['external_scene'] = random.choice(self.params['environment']['external_scene']) return env def apply_domain_randomization(self, scene): """ 应用域随机化 """ driver_params = self.randomize_driver() self.apply_driver_params(scene, driver_params) env_params = self.randomize_environment() self.apply_environment_params(scene, env_params) self.apply_camera_noise(scene) def apply_driver_params(self, scene, params): """ 应用驾驶员参数 """ pass def apply_environment_params(self, scene, params): """ 应用环境参数 """ if params['illumination'] == 'day': light_intensity = 1.0 elif params['illumination'] == 'night': light_intensity = 0.1 elif params['illumination'] == 'tunnel': light_intensity = 0.3 else: light_intensity = 0.6 self.set_light_intensity(scene, light_intensity)
|