Skip to content
This repository has been archived by the owner on Oct 9, 2023. It is now read-only.

Fix icevision task metric names #1252

Merged
merged 3 commits into from
Mar 28, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

- Fixed a bug where `InstanceSegmentation` would fail if samples had an inconsistent number of bboxes, labels, and masks (these will now be treated as negative samples) ([#1222](https://github.com/PyTorchLightning/lightning-flash/pull/1222))

- Fixed a bug where `ObjectDetector`, `InstanceSegmentation`, and `KeypointDetector` would log train and validation metrics with the same name ([#1252](https://github.com/PyTorchLightning/lightning-flash/pull/1252))

## [0.7.0] - 2022-02-15

### Added
Expand Down
1 change: 1 addition & 0 deletions flash/core/data/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
RunningStage.VALIDATING: "val",
RunningStage.PREDICTING: "predict",
RunningStage.SERVING: "serve",
RunningStage.SANITY_CHECKING: "val",
}
_STAGES_PREFIX_VALUES = {"train", "test", "val", "predict", "serve"}

Expand Down
4 changes: 2 additions & 2 deletions flash/core/integrations/icevision/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ class SimpleCOCOMetric(COCOMetric):
def finalize(self) -> Dict[str, float]:
logs = super().finalize()
return {
"Precision (IoU=0.50:0.95,area=all)": logs["AP (IoU=0.50:0.95) area=all"],
"Recall (IoU=0.50:0.95,area=all,maxDets=100)": logs["AR (IoU=0.50:0.95) area=all maxDets=100"],
"precision (IoU=0.50:0.95,area=all)": logs["AP (IoU=0.50:0.95) area=all"],
"recall (IoU=0.50:0.95,area=all,maxDets=100)": logs["AR (IoU=0.50:0.95) area=all maxDets=100"],
}


Expand Down
9 changes: 6 additions & 3 deletions flash/core/integrations/icevision/wrappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,19 @@

import torch

from flash.core.data.utils import _STAGES_PREFIX
from flash.core.utilities.imports import _ICEVISION_AVAILABLE

if _ICEVISION_AVAILABLE:
from icevision.models.ross.efficientdet.lightning.model_adapter import ModelAdapter as EffDetModelAdapter


def _log_with_prog_bar_override(log, name, value, **kwargs):
def _log_with_name_and_prog_bar_override(log, adapter, name, value, **kwargs):
ethanwharris marked this conversation as resolved.
Show resolved Hide resolved
if "prog_bar" not in kwargs:
kwargs["prog_bar"] = True
return log(name.split("/")[-1], value, **kwargs)
metric = name.split("/")[-1]
metric = f"{_STAGES_PREFIX[adapter.trainer.state.stage]}_{metric}"
ethanwharris marked this conversation as resolved.
Show resolved Hide resolved
return log(metric, value, **kwargs)


def _effdet_validation_step(validation_step, batch, batch_idx):
Expand All @@ -36,7 +39,7 @@ def _effdet_validation_step(validation_step, batch, batch_idx):

def wrap_icevision_adapter(adapter):
if not isinstance(adapter.log, partial):
adapter.log = partial(_log_with_prog_bar_override, adapter.log)
adapter.log = partial(_log_with_name_and_prog_bar_override, adapter.log, adapter)
ethanwharris marked this conversation as resolved.
Show resolved Hide resolved

if isinstance(adapter, EffDetModelAdapter) and not isinstance(adapter.validation_step, partial):
adapter.validation_step = partial(_effdet_validation_step, adapter.validation_step)
Expand Down