рдЙрдиреНрдирдд рдЕрдиреБрдХреВрд▓рди
рджреЛрдиреЛрдВ 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)