File size: 3,618 Bytes
7a87926 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | """
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",
]
|