|
|
|
|
|
|
|
|
|
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,
|
|
),
|
|
)
|
|
|