Update 4 main ops for paths and .run() (#3715)
* Add yolov5/ to path * rename functions to run() * cleanup * rename fix * CI fix * cleanup find models/export.py
This commit is contained in:
1 parent
75c0ff43af
commit
1f69d12591
7 files changed
+130
-100
No files matched your search
@@ -1,8 +1,15 @@
|
||||
"""Train a YOLOv5 model on a custom dataset
|
||||
|
||||
Usage:
|
||||
$ python path/to/train.py --data coco128.yaml --weights yolov5s.pt --img 640
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import math
|
||||
import os
|
||||
import random
|
||||
import sys
|
||||
import time
|
||||
import warnings
|
||||
from copy import deepcopy
|
||||
@@ -22,6 +29,9 @@ from torch.nn.parallel import DistributedDataParallel as DDP
|
||||
from torch.utils.tensorboard import SummaryWriter
|
||||
from tqdm import tqdm
|
||||
|
||||
FILE = Path(__file__).absolute()
|
||||
sys.path.append(FILE.parents[0].as_posix()) # add yolov5/ to path
|
||||
|
||||
import test # for end-of-epoch mAP
|
||||
from models.experimental import attempt_load
|
||||
from models.yolo import Model
|
||||
@@ -89,7 +99,7 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary
|
||||
# W&B
|
||||
opt.hyp = hyp # add hyperparameters
|
||||
run_id = torch.load(weights).get('wandb_id') if weights.endswith('.pt') and os.path.isfile(weights) else None
|
||||
run_id = run_id if opt.resume else None # start fresh run if transfer learning
|
||||
run_id = run_id if opt.resume else None # start fresh run if transfer learning
|
||||
wandb_logger = WandbLogger(opt, save_dir.stem, run_id, data_dict)
|
||||
loggers['wandb'] = wandb_logger.wandb
|
||||
if loggers['wandb']:
|
||||
@@ -375,18 +385,18 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary
|
||||
final_epoch = epoch + 1 == epochs
|
||||
if not notest or final_epoch: # Calculate mAP
|
||||
wandb_logger.current_epoch = epoch + 1
|
||||
results, maps, _ = test.test(data_dict,
|
||||
batch_size=batch_size // WORLD_SIZE * 2,
|
||||
imgsz=imgsz_test,
|
||||
model=ema.ema,
|
||||
single_cls=single_cls,
|
||||
dataloader=testloader,
|
||||
save_dir=save_dir,
|
||||
save_json=is_coco and final_epoch,
|
||||
verbose=nc < 50 and final_epoch,
|
||||
plots=plots and final_epoch,
|
||||
wandb_logger=wandb_logger,
|
||||
compute_loss=compute_loss)
|
||||
results, maps, _ = test.run(data_dict,
|
||||
batch_size=batch_size // WORLD_SIZE * 2,
|
||||
imgsz=imgsz_test,
|
||||
model=ema.ema,
|
||||
single_cls=single_cls,
|
||||
dataloader=testloader,
|
||||
save_dir=save_dir,
|
||||
save_json=is_coco and final_epoch,
|
||||
verbose=nc < 50 and final_epoch,
|
||||
plots=plots and final_epoch,
|
||||
wandb_logger=wandb_logger,
|
||||
compute_loss=compute_loss)
|
||||
|
||||
# Write
|
||||
with open(results_file, 'a') as f:
|
||||
@@ -443,17 +453,17 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary
|
||||
if not evolve:
|
||||
if is_coco: # COCO dataset
|
||||
for m in [last, best] if best.exists() else [last]: # speed, mAP tests
|
||||
results, _, _ = test.test(data,
|
||||
batch_size=batch_size // WORLD_SIZE * 2,
|
||||
imgsz=imgsz_test,
|
||||
conf_thres=0.001,
|
||||
iou_thres=0.7,
|
||||
model=attempt_load(m, device).half(),
|
||||
single_cls=single_cls,
|
||||
dataloader=testloader,
|
||||
save_dir=save_dir,
|
||||
save_json=True,
|
||||
plots=False)
|
||||
results, _, _ = test.run(data,
|
||||
batch_size=batch_size // WORLD_SIZE * 2,
|
||||
imgsz=imgsz_test,
|
||||
conf_thres=0.001,
|
||||
iou_thres=0.7,
|
||||
model=attempt_load(m, device).half(),
|
||||
single_cls=single_cls,
|
||||
dataloader=testloader,
|
||||
save_dir=save_dir,
|
||||
save_json=True,
|
||||
plots=False)
|
||||
|
||||
# Strip optimizers
|
||||
for f in last, best:
|
||||
|
||||
Reference in new issue
Block a user