Khiem Doan glenn-jocher commited on
Commit
1c8464e
1 Parent(s): 19e2482

Use pathlib instead of low-level module (#1329)

Browse files

* Use pathlib instead of low-level module

* Use pathlib instead of low-level module

* Update detect.py

* Update test.py

* reformat

Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>

Files changed (4) hide show
  1. detect.py +4 -4
  2. hubconf.py +2 -2
  3. test.py +2 -2
  4. train.py +5 -5
detect.py CHANGED
@@ -1,5 +1,4 @@
1
  import argparse
2
- import os
3
  import time
4
  from pathlib import Path
5
 
@@ -18,13 +17,14 @@ from utils.torch_utils import select_device, load_classifier, time_synchronized
18
  def detect(save_img=False):
19
  save_dir, source, weights, view_img, save_txt, imgsz = \
20
  Path(opt.save_dir), opt.source, opt.weights, opt.view_img, opt.save_txt, opt.img_size
21
- webcam = source.isnumeric() or source.startswith(('rtsp://', 'rtmp://', 'http://')) or source.endswith('.txt')
 
22
 
23
  # Directories
24
  if save_dir == Path('runs/detect'): # if default
25
- os.makedirs('runs/detect', exist_ok=True) # make base
26
  save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
27
- os.makedirs(save_dir / 'labels' if save_txt else save_dir, exist_ok=True) # make new dir
28
 
29
  # Initialize
30
  set_logging()
 
1
  import argparse
 
2
  import time
3
  from pathlib import Path
4
 
 
17
  def detect(save_img=False):
18
  save_dir, source, weights, view_img, save_txt, imgsz = \
19
  Path(opt.save_dir), opt.source, opt.weights, opt.view_img, opt.save_txt, opt.img_size
20
+ webcam = source.isnumeric() or source.endswith('.txt') or \
21
+ source.lower().startswith(('rtsp://', 'rtmp://', 'http://'))
22
 
23
  # Directories
24
  if save_dir == Path('runs/detect'): # if default
25
+ save_dir.mkdir(parents=True, exist_ok=True) # make base
26
  save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
27
+ (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make new dir
28
 
29
  # Initialize
30
  set_logging()
hubconf.py CHANGED
@@ -6,7 +6,7 @@ Usage:
6
  """
7
 
8
  dependencies = ['torch', 'yaml']
9
- import os
10
 
11
  import torch
12
 
@@ -29,7 +29,7 @@ def create(name, pretrained, channels, classes):
29
  Returns:
30
  pytorch model
31
  """
32
- config = os.path.join(os.path.dirname(__file__), 'models', f'{name}.yaml') # model.yaml path
33
  try:
34
  model = Model(config, channels, classes)
35
  if pretrained:
 
6
  """
7
 
8
  dependencies = ['torch', 'yaml']
9
+ from pathlib import Path
10
 
11
  import torch
12
 
 
29
  Returns:
30
  pytorch model
31
  """
32
+ config = Path(__file__).parent / 'models' / f'{name}.yaml' # model.yaml path
33
  try:
34
  model = Model(config, channels, classes)
35
  if pretrained:
test.py CHANGED
@@ -47,9 +47,9 @@ def test(data,
47
 
48
  # Directories
49
  if save_dir == Path('runs/test'): # if default
50
- os.makedirs('runs/test', exist_ok=True) # make base
51
  save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
52
- os.makedirs(save_dir / 'labels' if save_txt else save_dir, exist_ok=True) # make new dir
53
 
54
  # Load model
55
  model = attempt_load(weights, map_location=device) # load FP32 model
 
47
 
48
  # Directories
49
  if save_dir == Path('runs/test'): # if default
50
+ save_dir.mkdir(parents=True, exist_ok=True) # make base
51
  save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
52
+ (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make new dir
53
 
54
  # Load model
55
  model = attempt_load(weights, map_location=device) # load FP32 model
train.py CHANGED
@@ -38,10 +38,10 @@ def train(hyp, opt, device, tb_writer=None, wandb=None):
38
  logger.info(f'Hyperparameters {hyp}')
39
  log_dir = Path(tb_writer.log_dir) if tb_writer else Path(opt.logdir) / 'evolve' # logging directory
40
  wdir = log_dir / 'weights' # weights directory
41
- os.makedirs(wdir, exist_ok=True)
42
  last = wdir / 'last.pt'
43
  best = wdir / 'best.pt'
44
- results_file = str(log_dir / 'results.txt')
45
  epochs, batch_size, total_batch_size, weights, rank = \
46
  opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank
47
 
@@ -121,7 +121,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None):
121
  # Logging
122
  if wandb and wandb.run is None:
123
  id = ckpt.get('wandb_id') if 'ckpt' in locals() else None
124
- wandb_run = wandb.init(config=opt, resume="allow", project="YOLOv5", name=os.path.basename(log_dir), id=id)
125
 
126
  # Resume
127
  start_epoch, best_fitness = 0, 0.0
@@ -371,7 +371,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None):
371
  n = opt.name if opt.name.isnumeric() else ''
372
  fresults, flast, fbest = log_dir / f'results{n}.txt', wdir / f'last{n}.pt', wdir / f'best{n}.pt'
373
  for f1, f2 in zip([wdir / 'last.pt', wdir / 'best.pt', results_file], [flast, fbest, fresults]):
374
- if os.path.exists(f1):
375
  os.rename(f1, f2) # rename
376
  if str(f2).endswith('.pt'): # is *.pt
377
  strip_optimizer(f2) # strip optimizer
@@ -520,7 +520,7 @@ if __name__ == '__main__':
520
  os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists
521
 
522
  for _ in range(300): # generations to evolve
523
- if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate
524
  # Select parent(s)
525
  parent = 'single' # parent selection method: 'single' or 'weighted'
526
  x = np.loadtxt('evolve.txt', ndmin=2)
 
38
  logger.info(f'Hyperparameters {hyp}')
39
  log_dir = Path(tb_writer.log_dir) if tb_writer else Path(opt.logdir) / 'evolve' # logging directory
40
  wdir = log_dir / 'weights' # weights directory
41
+ wdir.mkdir(parents=True, exist_ok=True)
42
  last = wdir / 'last.pt'
43
  best = wdir / 'best.pt'
44
+ results_file = log_dir / 'results.txt'
45
  epochs, batch_size, total_batch_size, weights, rank = \
46
  opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank
47
 
 
121
  # Logging
122
  if wandb and wandb.run is None:
123
  id = ckpt.get('wandb_id') if 'ckpt' in locals() else None
124
+ wandb_run = wandb.init(config=opt, resume="allow", project="YOLOv5", name=log_dir.stem, id=id)
125
 
126
  # Resume
127
  start_epoch, best_fitness = 0, 0.0
 
371
  n = opt.name if opt.name.isnumeric() else ''
372
  fresults, flast, fbest = log_dir / f'results{n}.txt', wdir / f'last{n}.pt', wdir / f'best{n}.pt'
373
  for f1, f2 in zip([wdir / 'last.pt', wdir / 'best.pt', results_file], [flast, fbest, fresults]):
374
+ if f1.exists():
375
  os.rename(f1, f2) # rename
376
  if str(f2).endswith('.pt'): # is *.pt
377
  strip_optimizer(f2) # strip optimizer
 
520
  os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists
521
 
522
  for _ in range(300): # generations to evolve
523
+ if Path('evolve.txt').exists(): # if evolve.txt exists: select best hyps and mutate
524
  # Select parent(s)
525
  parent = 'single' # parent selection method: 'single' or 'weighted'
526
  x = np.loadtxt('evolve.txt', ndmin=2)