π [Fix] quite mode bugs, enable to disable :)
Browse files- tests/conftest.py +3 -1
- yolo/lazy.py +3 -1
- yolo/tools/solver.py +1 -1
- yolo/utils/logging_utils.py +14 -10
tests/conftest.py
CHANGED
@@ -67,7 +67,8 @@ def model_v7(inference_v7_cfg: Config, device) -> YOLO:
|
|
67 |
|
68 |
@pytest.fixture(scope="session")
|
69 |
def solver(train_cfg: Config) -> Trainer:
|
70 |
-
|
|
|
71 |
trainer = Trainer(
|
72 |
accelerator="cuda",
|
73 |
max_epochs=getattr(train_cfg.task, "epoch", None),
|
@@ -77,6 +78,7 @@ def solver(train_cfg: Config) -> Trainer:
|
|
77 |
log_every_n_steps=1,
|
78 |
gradient_clip_val=10,
|
79 |
deterministic=True,
|
|
|
80 |
)
|
81 |
return trainer
|
82 |
|
|
|
67 |
|
68 |
@pytest.fixture(scope="session")
|
69 |
def solver(train_cfg: Config) -> Trainer:
|
70 |
+
train_cfg.use_wandb = False
|
71 |
+
callbacks, loggers, save_path = setup(train_cfg)
|
72 |
trainer = Trainer(
|
73 |
accelerator="cuda",
|
74 |
max_epochs=getattr(train_cfg.task, "epoch", None),
|
|
|
78 |
log_every_n_steps=1,
|
79 |
gradient_clip_val=10,
|
80 |
deterministic=True,
|
81 |
+
default_root_dir=save_path,
|
82 |
)
|
83 |
return trainer
|
84 |
|
yolo/lazy.py
CHANGED
@@ -14,7 +14,7 @@ from yolo.utils.logging_utils import setup
|
|
14 |
|
15 |
@hydra.main(config_path="config", config_name="config", version_base=None)
|
16 |
def main(cfg: Config):
|
17 |
-
callbacks, loggers = setup(cfg)
|
18 |
|
19 |
trainer = Trainer(
|
20 |
accelerator="cuda",
|
@@ -25,6 +25,8 @@ def main(cfg: Config):
|
|
25 |
log_every_n_steps=1,
|
26 |
gradient_clip_val=10,
|
27 |
deterministic=True,
|
|
|
|
|
28 |
)
|
29 |
|
30 |
match cfg.task.task:
|
|
|
14 |
|
15 |
@hydra.main(config_path="config", config_name="config", version_base=None)
|
16 |
def main(cfg: Config):
|
17 |
+
callbacks, loggers, save_path = setup(cfg)
|
18 |
|
19 |
trainer = Trainer(
|
20 |
accelerator="cuda",
|
|
|
25 |
log_every_n_steps=1,
|
26 |
gradient_clip_val=10,
|
27 |
deterministic=True,
|
28 |
+
enable_progress_bar=not getattr(cfg, "quite", False),
|
29 |
+
default_root_dir=save_path,
|
30 |
)
|
31 |
|
32 |
match cfg.task.task:
|
yolo/tools/solver.py
CHANGED
@@ -149,6 +149,6 @@ class InferenceModel(BaseModel):
|
|
149 |
return fps
|
150 |
|
151 |
def _save_image(self, img, batch_idx):
|
152 |
-
save_image_path = Path(self.
|
153 |
img.save(save_image_path)
|
154 |
print(f"πΎ Saved visualize image at {save_image_path}")
|
|
|
149 |
return fps
|
150 |
|
151 |
def _save_image(self, img, batch_idx):
|
152 |
+
save_image_path = Path(self.trainer.default_root_dir) / f"frame{batch_idx:03d}.png"
|
153 |
img.save(save_image_path)
|
154 |
print(f"πΎ Saved visualize image at {save_image_path}")
|
yolo/utils/logging_utils.py
CHANGED
@@ -223,7 +223,7 @@ class ImageLogger(Callback):
|
|
223 |
logger.log_image("Prediction", images, step=step, boxes=[log_bbox(pred_boxes)])
|
224 |
|
225 |
|
226 |
-
def setup_logger(logger_name):
|
227 |
class EmojiFormatter(logging.Formatter):
|
228 |
def format(self, record, emoji=":high_voltage:"):
|
229 |
return f"{emoji} {super().format(record)}"
|
@@ -234,16 +234,14 @@ def setup_logger(logger_name):
|
|
234 |
if rich_logger:
|
235 |
rich_logger.handlers.clear()
|
236 |
rich_logger.addHandler(rich_handler)
|
|
|
|
|
237 |
|
238 |
|
239 |
def setup(cfg: Config):
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
return
|
244 |
-
|
245 |
-
setup_logger("lightning.fabric")
|
246 |
-
setup_logger("lightning.pytorch")
|
247 |
|
248 |
def custom_wandb_log(string="", level=int, newline=True, repeat=True, prefix=True, silent=False):
|
249 |
if silent:
|
@@ -256,6 +254,11 @@ def setup(cfg: Config):
|
|
256 |
save_path = validate_log_directory(cfg, cfg.name)
|
257 |
|
258 |
progress, loggers = [], []
|
|
|
|
|
|
|
|
|
|
|
259 |
progress.append(YOLORichProgressBar())
|
260 |
progress.append(YOLORichModelSummary())
|
261 |
progress.append(ImageLogger())
|
@@ -264,7 +267,7 @@ def setup(cfg: Config):
|
|
264 |
if cfg.use_wandb:
|
265 |
loggers.append(WandbLogger(project="YOLO", name=cfg.name, save_dir=save_path, id=None))
|
266 |
|
267 |
-
return progress, loggers
|
268 |
|
269 |
|
270 |
def log_model_structure(model: Union[ModuleList, YOLOLayer, YOLO]):
|
@@ -312,7 +315,8 @@ def validate_log_directory(cfg: Config, exp_name: str) -> Path:
|
|
312 |
)
|
313 |
|
314 |
save_path.mkdir(parents=True, exist_ok=True)
|
315 |
-
|
|
|
316 |
logger.addHandler(FileHandler(save_path / "output.log"))
|
317 |
return save_path
|
318 |
|
|
|
223 |
logger.log_image("Prediction", images, step=step, boxes=[log_bbox(pred_boxes)])
|
224 |
|
225 |
|
226 |
+
def setup_logger(logger_name, quite=False):
|
227 |
class EmojiFormatter(logging.Formatter):
|
228 |
def format(self, record, emoji=":high_voltage:"):
|
229 |
return f"{emoji} {super().format(record)}"
|
|
|
234 |
if rich_logger:
|
235 |
rich_logger.handlers.clear()
|
236 |
rich_logger.addHandler(rich_handler)
|
237 |
+
if quite:
|
238 |
+
rich_logger.setLevel(logging.ERROR)
|
239 |
|
240 |
|
241 |
def setup(cfg: Config):
|
242 |
+
quite = hasattr(cfg, "quite")
|
243 |
+
setup_logger("lightning.fabric", quite=quite)
|
244 |
+
setup_logger("lightning.pytorch", quite=quite)
|
|
|
|
|
|
|
|
|
245 |
|
246 |
def custom_wandb_log(string="", level=int, newline=True, repeat=True, prefix=True, silent=False):
|
247 |
if silent:
|
|
|
254 |
save_path = validate_log_directory(cfg, cfg.name)
|
255 |
|
256 |
progress, loggers = [], []
|
257 |
+
|
258 |
+
if quite:
|
259 |
+
logger.setLevel(logging.ERROR)
|
260 |
+
return progress, loggers, save_path
|
261 |
+
|
262 |
progress.append(YOLORichProgressBar())
|
263 |
progress.append(YOLORichModelSummary())
|
264 |
progress.append(ImageLogger())
|
|
|
267 |
if cfg.use_wandb:
|
268 |
loggers.append(WandbLogger(project="YOLO", name=cfg.name, save_dir=save_path, id=None))
|
269 |
|
270 |
+
return progress, loggers, save_path
|
271 |
|
272 |
|
273 |
def log_model_structure(model: Union[ModuleList, YOLOLayer, YOLO]):
|
|
|
315 |
)
|
316 |
|
317 |
save_path.mkdir(parents=True, exist_ok=True)
|
318 |
+
if not getattr(cfg, "quite", False):
|
319 |
+
logger.info(f"π Created log folder: [blue b u]{save_path}[/]")
|
320 |
logger.addHandler(FileHandler(save_path / "output.log"))
|
321 |
return save_path
|
322 |
|