|
|
@ -47,6 +47,7 @@ class YOLO: |
|
|
|
self.trainer = None # trainer object |
|
|
|
self.trainer = None # trainer object |
|
|
|
self.task = None # task type |
|
|
|
self.task = None # task type |
|
|
|
self.ckpt = None # if loaded from *.pt |
|
|
|
self.ckpt = None # if loaded from *.pt |
|
|
|
|
|
|
|
self.ckpt_path = None |
|
|
|
self.cfg = None # if loaded from *.yaml |
|
|
|
self.cfg = None # if loaded from *.yaml |
|
|
|
self.overrides = {} # overrides for trainer object |
|
|
|
self.overrides = {} # overrides for trainer object |
|
|
|
self.init_disabled = False # disable model initialization |
|
|
|
self.init_disabled = False # disable model initialization |
|
|
@ -78,6 +79,7 @@ class YOLO: |
|
|
|
weights (str): model checkpoint to be loaded |
|
|
|
weights (str): model checkpoint to be loaded |
|
|
|
""" |
|
|
|
""" |
|
|
|
self.model = attempt_load_weights(weights) |
|
|
|
self.model = attempt_load_weights(weights) |
|
|
|
|
|
|
|
self.ckpt_path = weights |
|
|
|
self.task = self.model.args["task"] |
|
|
|
self.task = self.model.args["task"] |
|
|
|
self.overrides = self.model.args |
|
|
|
self.overrides = self.model.args |
|
|
|
self.overrides["device"] = '' # reset device |
|
|
|
self.overrides["device"] = '' # reset device |
|
|
@ -177,8 +179,8 @@ class YOLO: |
|
|
|
""" |
|
|
|
""" |
|
|
|
if not self.model: |
|
|
|
if not self.model: |
|
|
|
raise AttributeError("model not initialized. Use .new() or .load()") |
|
|
|
raise AttributeError("model not initialized. Use .new() or .load()") |
|
|
|
|
|
|
|
overrides = self.overrides.copy() |
|
|
|
overrides = kwargs |
|
|
|
overrides.update(kwargs) |
|
|
|
if kwargs.get("cfg"): |
|
|
|
if kwargs.get("cfg"): |
|
|
|
LOGGER.info(f"cfg file passed. Overriding default params with {kwargs['cfg']}.") |
|
|
|
LOGGER.info(f"cfg file passed. Overriding default params with {kwargs['cfg']}.") |
|
|
|
overrides = yaml_load(check_yaml(kwargs["cfg"])) |
|
|
|
overrides = yaml_load(check_yaml(kwargs["cfg"])) |
|
|
@ -187,10 +189,13 @@ class YOLO: |
|
|
|
if not overrides.get("data"): |
|
|
|
if not overrides.get("data"): |
|
|
|
raise AttributeError("dataset not provided! Please define `data` in config.yaml or pass as an argument.") |
|
|
|
raise AttributeError("dataset not provided! Please define `data` in config.yaml or pass as an argument.") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if overrides.get("resume"): |
|
|
|
|
|
|
|
overrides["resume"] = self.ckpt_path |
|
|
|
self.trainer = self.TrainerClass(overrides=overrides) |
|
|
|
self.trainer = self.TrainerClass(overrides=overrides) |
|
|
|
self.trainer.model = self.trainer.load_model(weights=self.model, |
|
|
|
if not overrides.get("resume"): |
|
|
|
model_cfg=self.model.yaml if self.task != "classify" else None) |
|
|
|
self.trainer.model = self.trainer.load_model(weights=self.model, |
|
|
|
self.model = self.trainer.model # override here to save memory |
|
|
|
model_cfg=self.model.yaml if self.task != "classify" else None) |
|
|
|
|
|
|
|
self.model = self.trainer.model # override here to save memory |
|
|
|
|
|
|
|
|
|
|
|
self.trainer.train() |
|
|
|
self.trainer.train() |
|
|
|
|
|
|
|
|
|
|
|