189 lines
5.9 KiB
Python
189 lines
5.9 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ModelSpec:
|
|
key: str
|
|
label: str
|
|
directory_name: str
|
|
repository: str
|
|
license_name: str
|
|
description: str
|
|
supports_gs: bool
|
|
download_patterns: tuple[str, ...] = ()
|
|
ready_patterns: tuple[str, ...] = ("config.json", "*.safetensors")
|
|
enabled: bool = True
|
|
r2_directory: str = ""
|
|
r2_files: tuple[tuple[str, int, str], ...] = ()
|
|
|
|
|
|
MODELS = {
|
|
"SMALL": ModelSpec(
|
|
key="SMALL",
|
|
label="DA3 Small",
|
|
directory_name="DA3-SMALL",
|
|
repository="depth-anything/DA3-SMALL",
|
|
license_name="Apache 2.0",
|
|
description="Fastest any-view model using ONNX Runtime",
|
|
supports_gs=False,
|
|
download_patterns=("model.onnx",),
|
|
ready_patterns=("model.onnx",),
|
|
r2_directory="DA3-SMALL",
|
|
r2_files=(
|
|
("model.onnx", 105484029, "7a9d81475b3e2334ace0d6d2c2a816b3c93081437e1866cc434ce1789125f631"),
|
|
),
|
|
),
|
|
"BASE": ModelSpec(
|
|
key="BASE",
|
|
label="DA3 Base",
|
|
directory_name="DA3-BASE",
|
|
repository="depth-anything/DA3-BASE",
|
|
license_name="Apache 2.0",
|
|
description="Balanced any-view model using ONNX Runtime",
|
|
supports_gs=False,
|
|
download_patterns=("model.onnx",),
|
|
ready_patterns=("model.onnx",),
|
|
r2_directory="DA3-BASE",
|
|
r2_files=(
|
|
("model.onnx", 412856697, "31f38fc4990539d7902ba267924b9731db1acb00d840c248a60b1865810ff9e6"),
|
|
),
|
|
),
|
|
"GIANT_1_1": ModelSpec(
|
|
key="GIANT_1_1",
|
|
label="DA3 Giant 1.1",
|
|
directory_name="da3_giant_1_1",
|
|
repository="depth-anything/DA3-GIANT-1.1",
|
|
license_name="CC BY-NC 4.0",
|
|
description="Non-commercial Giant model with Gaussian head",
|
|
supports_gs=True,
|
|
enabled=False,
|
|
),
|
|
"NESTED_GIANT_LARGE_1_1": ModelSpec(
|
|
key="NESTED_GIANT_LARGE_1_1",
|
|
label="DA3 Nested Giant Large 1.1",
|
|
directory_name="da3_nested_giant_large_1_1",
|
|
repository="depth-anything/DA3NESTED-GIANT-LARGE-1.1",
|
|
license_name="CC BY-NC 4.0",
|
|
description="Non-commercial nested model with metric depth and Gaussian head",
|
|
supports_gs=True,
|
|
enabled=False,
|
|
),
|
|
}
|
|
|
|
BEN2_MODEL = ModelSpec(
|
|
key="BEN2_BASE",
|
|
label="BEN2 Base",
|
|
directory_name="BEN2-ONNX",
|
|
repository="onnx-community/BEN2-ONNX",
|
|
license_name="Apache 2.0",
|
|
description="Fast high-quality FP16 ONNX background removal model",
|
|
supports_gs=False,
|
|
download_patterns=("onnx/model_fp16.onnx",),
|
|
ready_patterns=("onnx/model_fp16.onnx",),
|
|
r2_directory="BEN2-ONNX",
|
|
r2_files=((
|
|
"onnx/model_fp16.onnx",
|
|
219121675,
|
|
"dfdc25f421f32a0d1268e0f2ff2153d340e8f1d52d3dd16f5dc33c1ce85cedf1",
|
|
),),
|
|
)
|
|
|
|
|
|
MOGE2_MODELS = {
|
|
"MOGE2_VITS_NORMAL": ModelSpec(
|
|
key="MOGE2_VITS_NORMAL",
|
|
label="MoGe-2 ViT-S Normal",
|
|
directory_name="moge-2-vits-normal-onnx",
|
|
repository="Ruicheng/moge-2-vits-normal-onnx",
|
|
license_name="MIT",
|
|
description="Fastest MoGe-2 model using ONNX Runtime",
|
|
supports_gs=False,
|
|
download_patterns=("model.onnx",),
|
|
ready_patterns=("model.onnx",),
|
|
r2_directory="moge-2-vits-normal-onnx",
|
|
r2_files=((
|
|
"model.onnx",
|
|
140852051,
|
|
"24eacb5dc7a2c54c7bc98f7de085ffbed79ad006ea5b664c2c2cdc02ff3a52f0",
|
|
),),
|
|
),
|
|
"MOGE2_VITB_NORMAL": ModelSpec(
|
|
key="MOGE2_VITB_NORMAL",
|
|
label="MoGe-2 ViT-B Normal",
|
|
directory_name="moge-2-vitb-normal-onnx",
|
|
repository="Ruicheng/moge-2-vitb-normal-onnx",
|
|
license_name="MIT",
|
|
description="Balanced MoGe-2 model using ONNX Runtime",
|
|
supports_gs=False,
|
|
download_patterns=("model.onnx",),
|
|
ready_patterns=("model.onnx",),
|
|
r2_directory="moge-2-vitb-normal-onnx",
|
|
r2_files=((
|
|
"model.onnx",
|
|
419411850,
|
|
"bbf14e07a30f11e69d36ab861590123f5598ababcbc8946a063eb4a966f35a21",
|
|
),),
|
|
),
|
|
"MOGE2_VITL_NORMAL": ModelSpec(
|
|
key="MOGE2_VITL_NORMAL",
|
|
label="MoGe-2 ViT-L Normal",
|
|
directory_name="moge-2-vitl-normal-onnx",
|
|
repository="Ruicheng/moge-2-vitl-normal-onnx",
|
|
license_name="MIT",
|
|
description="Highest-quality MoGe-2 model using ONNX Runtime",
|
|
supports_gs=False,
|
|
download_patterns=("model.onnx",),
|
|
ready_patterns=("model.onnx",),
|
|
r2_directory="moge-2-vitl-normal-onnx",
|
|
r2_files=((
|
|
"model.onnx",
|
|
1324265014,
|
|
"afbc4ccc3450298f3afb35b90f015f4c4f552dea21dc6470d5f7b78b77e2d751",
|
|
),),
|
|
),
|
|
}
|
|
MOGE2_MODEL = MOGE2_MODELS["MOGE2_VITS_NORMAL"]
|
|
DOWNLOADABLE_MODELS = {
|
|
**MODELS,
|
|
BEN2_MODEL.key: BEN2_MODEL,
|
|
**MOGE2_MODELS,
|
|
}
|
|
MODEL_NUMBERS = {
|
|
model_key: number for number, model_key in enumerate(MODELS)
|
|
}
|
|
|
|
|
|
def get_model(model_key):
|
|
try:
|
|
return MODELS[model_key]
|
|
except KeyError as error:
|
|
raise ValueError(f"Unknown DA3 model: {model_key}") from error
|
|
|
|
|
|
def get_downloadable_model(model_key):
|
|
try:
|
|
return DOWNLOADABLE_MODELS[model_key]
|
|
except KeyError as error:
|
|
raise ValueError(f"Unknown model: {model_key}") from error
|
|
|
|
|
|
def model_directory_name(model_key):
|
|
"""Return the model's folder name inside the shared models directory."""
|
|
return get_downloadable_model(model_key).directory_name
|
|
|
|
|
|
def model_record(model, ready=False):
|
|
"""Return public model metadata exposed by the Models Resource."""
|
|
return {
|
|
"key": model.key,
|
|
"label": model.label,
|
|
"description": model.description,
|
|
"license": model.license_name,
|
|
"supports_gs": model.supports_gs,
|
|
"enabled": model.enabled,
|
|
"family": "moge2" if model.key.startswith("MOGE2_") else (
|
|
"ben2" if model.key == BEN2_MODEL.key else "da3"
|
|
),
|
|
"ready": bool(ready),
|
|
}
|