@@ -80,32 +80,34 @@ def save_config(dataset, classes):
8080 with open (path , 'w' ) as f :
8181 f .write (yaml_content )
8282
83+
84+ def prepare_dataset (dataset , force = False ):
85+ if force or not os .path .exists (dataset .project ):
86+ train , val , test = dataset .split ()
87+ data_annotations = {'train' : train , 'val' : val , 'test' : test }
88+ for x in ['train' , 'val' , 'test' ]:
89+ save_data (data_annotations [x ], f"{ dataset .project } /{ x } " , dataset .classes , dataset .task )
90+ save_config (dataset .project , dataset .classes )
91+
8392
8493class ModelTrainer :
8594 """High-level trainer orchestrator using models and dataset utilities."""
86- def __init__ (self , task : str , imgsz : int = None ):
87- imgsz = imgsz or ( 224 if task == 'classify' else 640 )
95+ def __init__ (self , project : str , task : str , classes : list , imgsz : int = None ):
96+ self . project = project
8897 self .task = task
98+ self .classes = classes
99+ imgsz = imgsz or (224 if task == 'classify' else 640 )
89100 if task == 'classify' :
90101 self .model = classify .Model ()
91102 else :
92103 self .model = detect .Model (task , imgsz = imgsz )
93-
94- def prepare_dataset (self , project : str , classes , force : bool = False ):
95- if force or not os .path .exists (project ):
96- dataset = load_dataset (project )
97- train , val , test = dataset .split ()
98- data_annotations = {'train' : train , 'val' : val , 'test' : test }
99- for x in ['train' , 'val' , 'test' ]:
100- save_data (data_annotations [x ], f"{ project } /{ x } " , classes , self .task )
101- save_config (project , classes )
102-
103- def train (self , dataset : str , epochs : int = None , batch : int = 32 ) -> None :
104+
105+ def train (self , epochs : int = None , batch : int = 32 ) -> None :
104106 epochs = epochs or (30 if self .task == 'classify' else 300 )
105107 if self .task == 'classify' :
106- self .model .train (dataset , epochs = epochs )
108+ self .model .train (self . project , epochs = epochs )
107109 else :
108- self .model .train (dataset , epochs = epochs , batch = batch )
110+ self .model .train (self . project , epochs = epochs , batch = batch )
109111
110112 def test (self , split : str = 'val' ) -> Dict [str , Any ]:
111113 if self .task == 'classify' :
@@ -114,8 +116,8 @@ def test(self, split: str = 'val') -> Dict[str, Any]:
114116 else :
115117 return self .model .test (split = split )
116118
117- def save (self , dataset : str , classes , device = 'cpu' ) -> None :
118- self .model .save (dataset , classes , device = device )
119+ def save (self , device = 'cpu' ) -> None :
120+ self .model .save (self . project , self . classes , device = device )
119121
120122 def run (self , img ):
121123 return self .model .run (img )
0 commit comments