henry000 commited on
Commit
91a3f78
Β·
1 Parent(s): ed7ee89

πŸ› [Fix] display on DDP mode

Browse files
yolo/tools/data_loader.py CHANGED
@@ -46,7 +46,7 @@ class YoloDataset(Dataset):
46
  Returns:
47
  dict: The loaded data from the cache for the specified phase.
48
  """
49
- cache_path = dataset_path / f"{phase_name}.cache"
50
 
51
  if not cache_path.exists():
52
  logger.info(f":factory: Generating {phase_name} cache")
 
46
  Returns:
47
  dict: The loaded data from the cache for the specified phase.
48
  """
49
+ cache_path = dataset_path / f"{phase_name}.cache1"
50
 
51
  if not cache_path.exists():
52
  logger.info(f":factory: Generating {phase_name} cache")
yolo/tools/solver.py CHANGED
@@ -59,10 +59,10 @@ class ValidateModel(BaseModel):
59
  def on_validation_epoch_end(self):
60
  epoch_metrics = self.metric.compute()
61
  del epoch_metrics["classes"]
 
62
  self.log_dict(
63
  {"PyCOCO/AP @ .5:.95": epoch_metrics["map"], "PyCOCO/AP @ .5": epoch_metrics["map_50"]}, rank_zero_only=True
64
  )
65
- self.log_dict(epoch_metrics, prog_bar=True, logger=True, on_epoch=True, rank_zero_only=True)
66
  self.metric.reset()
67
 
68
 
@@ -92,7 +92,6 @@ class TrainModel(ValidateModel):
92
  self.log_dict(
93
  loss_item,
94
  prog_bar=True,
95
- logger=True,
96
  on_epoch=True,
97
  batch_size=batch_size,
98
  rank_zero_only=True,
 
59
  def on_validation_epoch_end(self):
60
  epoch_metrics = self.metric.compute()
61
  del epoch_metrics["classes"]
62
+ self.log_dict(epoch_metrics, prog_bar=True, rank_zero_only=True)
63
  self.log_dict(
64
  {"PyCOCO/AP @ .5:.95": epoch_metrics["map"], "PyCOCO/AP @ .5": epoch_metrics["map_50"]}, rank_zero_only=True
65
  )
 
66
  self.metric.reset()
67
 
68
 
 
92
  self.log_dict(
93
  loss_item,
94
  prog_bar=True,
 
95
  on_epoch=True,
96
  batch_size=batch_size,
97
  rank_zero_only=True,
yolo/utils/logger.py CHANGED
@@ -1,10 +1,11 @@
1
  import logging
2
 
 
3
  from rich.console import Console
4
  from rich.logging import RichHandler
5
 
6
  logger = logging.getLogger("yolo")
7
  logger.setLevel(logging.DEBUG)
8
  logger.propagate = False
9
- if not logger.hasHandlers():
10
  logger.addHandler(RichHandler(console=Console(), show_level=True, show_path=True, show_time=True, markup=True))
 
1
  import logging
2
 
3
+ from lightning.pytorch.utilities.rank_zero import rank_zero_only
4
  from rich.console import Console
5
  from rich.logging import RichHandler
6
 
7
  logger = logging.getLogger("yolo")
8
  logger.setLevel(logging.DEBUG)
9
  logger.propagate = False
10
+ if rank_zero_only.rank == 0 and not logger.hasHandlers():
11
  logger.addHandler(RichHandler(console=Console(), show_level=True, show_path=True, show_time=True, markup=True))
yolo/utils/logging_utils.py CHANGED
@@ -223,21 +223,27 @@ class ImageLogger(Callback):
223
  logger.log_image("Prediction", images, step=step, boxes=[log_bbox(pred_boxes)])
224
 
225
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  def setup(cfg: Config):
227
- seed_everything(cfg.lucky_number)
228
  if hasattr(cfg, "quite"):
229
  logger.removeHandler("YOLO_logger")
230
  return
231
 
232
- class EmojiFormatter(logging.Formatter):
233
- def format(self, record):
234
- return f":high_voltage: {super().format(record)}"
235
-
236
- rich_handler = RichHandler(markup=True)
237
- rich_handler.setFormatter(EmojiFormatter("%(message)s"))
238
- lightning_logger = logging.getLogger("lightning.pytorch")
239
- lightning_logger.handlers.clear()
240
- lightning_logger.addHandler(rich_handler)
241
 
242
  def custom_wandb_log(string="", level=int, newline=True, repeat=True, prefix=True, silent=False):
243
  if silent:
@@ -288,6 +294,7 @@ def log_model_structure(model: Union[ModuleList, YOLOLayer, YOLO]):
288
  console.print(table)
289
 
290
 
 
291
  def validate_log_directory(cfg: Config, exp_name: str) -> Path:
292
  base_path = Path(cfg.out_path, cfg.task.task)
293
  save_path = base_path / exp_name
@@ -305,7 +312,7 @@ def validate_log_directory(cfg: Config, exp_name: str) -> Path:
305
  )
306
 
307
  save_path.mkdir(parents=True, exist_ok=True)
308
- logger.info(f"πŸ“„ Created log folder: [blue b u]123{save_path}[/]")
309
  logger.addHandler(FileHandler(save_path / "output.log"))
310
  return save_path
311
 
 
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)}"
230
+
231
+ rich_handler = RichHandler(markup=True)
232
+ rich_handler.setFormatter(EmojiFormatter("%(message)s"))
233
+ rich_logger = logging.getLogger(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
+ # seed_everything(cfg.lucky_number)
241
  if hasattr(cfg, "quite"):
242
  logger.removeHandler("YOLO_logger")
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:
 
294
  console.print(table)
295
 
296
 
297
+ @rank_zero_only
298
  def validate_log_directory(cfg: Config, exp_name: str) -> Path:
299
  base_path = Path(cfg.out_path, cfg.task.task)
300
  save_path = base_path / exp_name
 
312
  )
313
 
314
  save_path.mkdir(parents=True, exist_ok=True)
315
+ logger.info(f"πŸ“„ Created log folder: [blue b u]{save_path}[/]")
316
  logger.addHandler(FileHandler(save_path / "output.log"))
317
  return save_path
318