3d_model / ylff /__init__.py
Azan
Clean deployment build (Squashed)
7a87926
"""
You Learn From Failure (YLFF)
BA-Supervised Fine-Tuning for Visual Geometry Models
"""
__version__ = "0.0.0"
"""
YLFF Package - Backward Compatibility Imports
For backward compatibility, common imports are available directly:
- from ylff import BAValidator, Profiler, JobResponse
Preferred imports (new structure):
- from ylff.services import BAValidator, ARKitProcessor
- from ylff.utils.profiler import Profiler, profile
- from ylff.utils.model_loader import load_da3_model
- from ylff.utils.losses import pose_loss, geodesic_rotation_loss
- from ylff.utils.exceptions import DataError, ModelLoadError
- from ylff.models import JobResponse, ValidateSequenceRequest
"""
# Lazy imports for backward compatibility (avoid eager loading dependencies)
def __getattr__(name: str):
"""Lazy import for backward compatibility."""
if name == "BAValidator":
from .services.ba_validator import BAValidator
return BAValidator
elif name == "ARKitProcessor":
from .services.arkit_processor import ARKitProcessor
return ARKitProcessor
elif name == "Profiler":
from .utils.profiler import Profiler
return Profiler
elif name in ("profile", "profile_context"):
from .utils.profiler import profile, profile_context
return profile if name == "profile" else profile_context
elif name == "convert_arkit_to_opencv":
from .utils.coordinate_utils import convert_arkit_to_opencv
return convert_arkit_to_opencv
elif name in ("load_da3_model", "get_recommended_model", "list_available_models"):
from .utils.model_loader import ( # noqa: F401
get_recommended_model,
list_available_models,
load_da3_model,
)
return locals().get(name)
elif name in ("pose_loss", "geodesic_rotation_loss", "depth_loss", "confidence_weighted_loss"):
from .utils.losses import ( # noqa: F401
confidence_weighted_loss,
depth_loss,
geodesic_rotation_loss,
pose_loss,
)
return locals().get(name)
elif name in (
"JobResponse",
"ValidateSequenceRequest",
"ValidateARKitRequest",
"BuildDatasetRequest",
"TrainRequest",
"PretrainRequest",
"EvaluateBAAgreementRequest",
"VisualizeRequest",
"HealthResponse",
"ModelsResponse",
"ValidationStats",
"JobStatus",
"DeviceType",
"UseCase",
):
from .models import ( # noqa: F401
BuildDatasetRequest,
DeviceType,
EvaluateBAAgreementRequest,
HealthResponse,
JobResponse,
JobStatus,
ModelsResponse,
PretrainRequest,
TrainRequest,
UseCase,
ValidateARKitRequest,
ValidateSequenceRequest,
ValidationStats,
VisualizeRequest,
)
return locals().get(name)
raise AttributeError(f"module 'ylff' has no attribute '{name}'")
__all__ = [
# Version
"__version__",
# Services
"BAValidator",
"ARKitProcessor",
# Utils
"convert_arkit_to_opencv",
"Profiler",
"profile",
"profile_context",
# API Models
"BuildDatasetRequest",
"DeviceType",
"EvaluateBAAgreementRequest",
"HealthResponse",
"JobResponse",
"JobStatus",
"ModelsResponse",
"PretrainRequest",
"TrainRequest",
"UseCase",
"ValidateARKitRequest",
"ValidateSequenceRequest",
"ValidationStats",
"VisualizeRequest",
]