|
|
@@ -28,7 +28,7 @@ from utils.autoanchor import check_anchors |
|
|
|
from utils.datasets import create_dataloader |
|
|
|
from utils.general import labels_to_class_weights, increment_path, labels_to_image_weights, init_seeds, \ |
|
|
|
fitness, strip_optimizer, get_latest_run, check_dataset, check_file, check_git_status, check_img_size, \ |
|
|
|
print_mutation, set_logging |
|
|
|
print_mutation, set_logging, one_cycle |
|
|
|
from utils.google_utils import attempt_download |
|
|
|
from utils.loss import compute_loss |
|
|
|
from utils.plots import plot_images, plot_labels, plot_results, plot_evolution |
|
|
@@ -126,12 +126,12 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): |
|
|
|
|
|
|
|
# Scheduler https://arxiv.org/pdf/1812.01187.pdf |
|
|
|
# https://pytorch.org/docs/stable/_modules/torch/optim/lr_scheduler.html#OneCycleLR |
|
|
|
lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * (1 - hyp['lrf']) + hyp['lrf'] # cosine |
|
|
|
lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] |
|
|
|
scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) |
|
|
|
# plot_lr_scheduler(optimizer, scheduler, epochs) |
|
|
|
|
|
|
|
# Logging |
|
|
|
if wandb and wandb.run is None: |
|
|
|
if rank in [-1, 0] and wandb and wandb.run is None: |
|
|
|
opt.hyp = hyp # add hyperparameters |
|
|
|
wandb_run = wandb.init(config=opt, resume="allow", |
|
|
|
project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem, |