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 <[email protected]>
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.
|
|
|
22 |
|
23 |
# Directories
|
24 |
if save_dir == Path('runs/detect'): # if default
|
25 |
-
|
26 |
save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
|
27 |
-
|
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
|
10 |
|
11 |
import torch
|
12 |
|
@@ -29,7 +29,7 @@ def create(name, pretrained, channels, classes):
|
|
29 |
Returns:
|
30 |
pytorch model
|
31 |
"""
|
32 |
-
config =
|
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 |
-
|
51 |
save_dir = Path(increment_dir(save_dir / 'exp', opt.name)) # increment run
|
52 |
-
|
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 |
-
|
42 |
last = wdir / 'last.pt'
|
43 |
best = wdir / 'best.pt'
|
44 |
-
results_file =
|
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=
|
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
|
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
|
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)
|