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
| class DMSDataSynthesis: """使用Cosmos 3生成DMS训练数据""" def __init__(self): self.cosmos = Cosmos3Edge() self.scenario_generator = ScenarioGenerator() def generate_fatigue_scenarios(self, n_samples=10000): """生成疲劳场景""" scenarios = [] for i in range(n_samples): params = { "driver_age": np.random.randint(18, 70), "lighting": np.random.choice(["day", "night", "twilight"]), "road_type": np.random.choice(["highway", "urban", "rural"]), "fatigue_level": np.random.choice(["mild", "moderate", "severe"]) } scenario = self.cosmos.generate( prompt=f"Generate driver fatigue scenario: {params}", modality=["video", "action"] ) scenarios.append({ "video": scenario["video"], "label": params["fatigue_level"], "metadata": params }) return scenarios def generate_distraction_scenarios(self, n_samples=10000): """生成分心场景""" distraction_types = [ "phone_use", "eating", "adjusting_radio", "looking_away", "talking_to_passenger" ] scenarios = [] for i in range(n_samples): distraction = np.random.choice(distraction_types) scenario = self.cosmos.generate( prompt=f"Generate driver distraction scenario: {distraction}", modality=["video", "gaze", "action"] ) scenarios.append({ "video": scenario["video"], "gaze": scenario["gaze"], "label": distraction, "metadata": {"type": distraction} }) return scenarios
|