| import os |
| from pathlib import Path |
| from typing import Any, Optional |
|
|
| from lightning.pytorch.loggers.logger import Logger |
| from lightning.pytorch.utilities import rank_zero_only |
| from PIL import Image |
|
|
| LOG_PATH = Path("outputs/local") |
|
|
|
|
| class LocalLogger(Logger): |
| def __init__(self) -> None: |
| super().__init__() |
| self.experiment = None |
| os.system(f"rm -r {LOG_PATH}") |
|
|
| @property |
| def name(self): |
| return "LocalLogger" |
|
|
| @property |
| def version(self): |
| return 0 |
|
|
| @rank_zero_only |
| def log_hyperparams(self, params): |
| pass |
|
|
| @rank_zero_only |
| def log_metrics(self, metrics, step): |
| pass |
|
|
| @rank_zero_only |
| def log_image( |
| self, |
| key: str, |
| images: list[Any], |
| step: Optional[int] = None, |
| **kwargs, |
| ): |
| |
| |
| assert step is not None |
| for index, image in enumerate(images): |
| path = LOG_PATH / f"{key}/{index:0>2}_{step:0>6}.jpg" |
| path.parent.mkdir(exist_ok=True, parents=True) |
| Image.fromarray(image).save(path) |
|
|