|
|
|
|
|
from dataclasses import dataclass |
|
from enum import Enum |
|
|
|
from detectron2.config import CfgNode |
|
|
|
|
|
class DensePoseUVConfidenceType(Enum): |
|
""" |
|
Statistical model type for confidence learning, possible values: |
|
- "iid_iso": statistically independent identically distributed residuals |
|
with anisotropic covariance |
|
- "indep_aniso": statistically independent residuals with anisotropic |
|
covariances |
|
For details, see: |
|
N. Neverova, D. Novotny, A. Vedaldi "Correlated Uncertainty for Learning |
|
Dense Correspondences from Noisy Labels", p. 918--926, in Proc. NIPS 2019 |
|
""" |
|
|
|
|
|
IID_ISO = "iid_iso" |
|
INDEP_ANISO = "indep_aniso" |
|
|
|
|
|
|
|
@dataclass |
|
class DensePoseUVConfidenceConfig: |
|
""" |
|
Configuration options for confidence on UV data |
|
""" |
|
|
|
enabled: bool = False |
|
|
|
epsilon: float = 0.01 |
|
type: DensePoseUVConfidenceType = DensePoseUVConfidenceType.IID_ISO |
|
|
|
|
|
@dataclass |
|
class DensePoseSegmConfidenceConfig: |
|
""" |
|
Configuration options for confidence on segmentation |
|
""" |
|
|
|
enabled: bool = False |
|
|
|
epsilon: float = 0.01 |
|
|
|
|
|
@dataclass |
|
class DensePoseConfidenceModelConfig: |
|
""" |
|
Configuration options for confidence models |
|
""" |
|
|
|
|
|
uv_confidence: DensePoseUVConfidenceConfig |
|
|
|
segm_confidence: DensePoseSegmConfidenceConfig |
|
|
|
@staticmethod |
|
def from_cfg(cfg: CfgNode) -> "DensePoseConfidenceModelConfig": |
|
return DensePoseConfidenceModelConfig( |
|
uv_confidence=DensePoseUVConfidenceConfig( |
|
enabled=cfg.MODEL.ROI_DENSEPOSE_HEAD.UV_CONFIDENCE.ENABLED, |
|
epsilon=cfg.MODEL.ROI_DENSEPOSE_HEAD.UV_CONFIDENCE.EPSILON, |
|
type=DensePoseUVConfidenceType(cfg.MODEL.ROI_DENSEPOSE_HEAD.UV_CONFIDENCE.TYPE), |
|
), |
|
segm_confidence=DensePoseSegmConfidenceConfig( |
|
enabled=cfg.MODEL.ROI_DENSEPOSE_HEAD.SEGM_CONFIDENCE.ENABLED, |
|
epsilon=cfg.MODEL.ROI_DENSEPOSE_HEAD.SEGM_CONFIDENCE.EPSILON, |
|
), |
|
) |
|
|