рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

рдЙрдиреНрдирдд рдЕрдиреБрдХреВрд▓рди

рджреЛрдиреЛрдВ Ultralytics YOLO рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдФрд░ Python рдЗрдВрдЯрд░рдлреЗрд╕ рдмреЗрд╕ рдЗрдВрдЬрди рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдкрд░ рдмрд╕ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрддрддрд╛ рд╣реИред рдЖрдЗрдП рдЯреНрд░реЗрдирд░ рдЗрдВрдЬрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред



рд╕рддрд░реНрдХрддрд╛: рдорд╛рд╣рд┐рд░ Ultralytics YOLOv8: рдЙрдиреНрдирдд рдЕрдиреБрдХреВрд▓рди

рдмреЗрд╕рдЯреНрд░реЗрдирд░

рдмреЗрд╕рдЯреНрд░реЗрдирд░ рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд┐рдирдЪрд░реНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдФрд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • get_model(cfg, weights) - рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИ
  • get_dataloader() - рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ BaseTrainer рд╣рд╡рд╛рд▓рд╛

рдбрд┐рдЯреЗрдХреНрд╢рдирдЯреНрд░реЗрдирд░

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ YOLOv8 DetectionTrainer рдФрд░ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # get best model

рдбрд┐рдЯреЗрдХреНрд╢рдирдЯреНрд░реЗрдирд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛

рдЖрдЗрдП рдЯреНрд░реЗрдирд░ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдХрд╕реНрдЯрдо рдбрд┐рдЯреЗрдХреНрд╢рди рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реАрдзреЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ get_model рдкреНрд░рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        ...


trainer = CustomTrainer(overrides={...})
trainer.train()

рдЕрдм рдЖрдк рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЯреНрд░реЗрдирд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ loss function.
  • рдЖрдЧреЗ рдХрд╣рдирд╛ callback рдЬреЛ рд╣рд░ 10 рдХреЗ рдмрд╛рдж рдЖрдкрдХреЗ Google рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдореЙрдбрд▓ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ epochs рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel


class MyCustomModel(DetectionModel):
    def init_criterion(self):
        ...


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        return MyCustomModel(...)


# callback to upload model weights
def log_model(trainer):
    last_weight_path = trainer.last
    print(last_weight_path)


trainer = CustomTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callback
trainer.train()

рдХреЙрд▓рдмреИрдХ рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдХреЙрд▓рдмреИрдХ рдЧрд╛рдЗрдб рдХреЛ рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ

рдЕрдиреНрдп рдЗрдВрдЬрди рдШрдЯрдХ

рдРрд╕реЗ рдЕрдиреНрдп рдШрдЯрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕реА рддрд░рд╣ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ Validators рдФрд░ Predictors. рдЗрди рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред



2023-11-12 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-02-03
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (4), рд░рд┐рдЬрд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (1), рдЖрдпреБрд╖рдПрдХреНрд╕реЗрд▓ (1), рд▓рд╛рдлрд┐рдВрдЧ-рдХреНрдпреВ (1)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ