Comfy-Org/ComfyUI · error · ValueError

multi-view mode requires Small or Base model. The loaded mod

Error message

multi-view mode requires Small or Base model. The loaded model (head_type='{diffusion.head_type}') does not support cross-view attention or camera pose estimation. Switch mode to 'mono', or load Small or Base model for mult-view.

What it means

Depth-Anything-3 node raises this when multi-view mode is selected but the loaded checkpoint's diffusion head cannot do cross-view attention or camera-pose estimation. Capability is inferred from the model: head_type must be 'dualdpt' (Small/Base models) or the model must carry a camera decoder (cam_dec). Mono/Metric checkpoints have neither, so multi-view is impossible for them.

Source

Thrown at comfy_extras/nodes_depth_anything_3.py:273

        )

    @classmethod
    def execute(cls, da3_model, image, resolution, resize_method, mode) -> io.NodeOutput:
        mode_val = mode["mode"]  # "mono" or "multiview"

        if mode_val == "mono":
            return cls._execute_mono(da3_model, image, resolution, resize_method)

        # Capability checks for multi-view mode.
        diffusion = da3_model.model.diffusion_model
        pose_method = mode["pose_method"]
        ref_view_strategy = mode["ref_view_strategy"]

        has_cam_dec = diffusion.cam_dec is not None
        has_dualdpt = diffusion.head_type == "dualdpt"

        if not has_cam_dec and not has_dualdpt:
            raise ValueError(
                "multi-view mode requires Small or Base model. The loaded model "
                f"(head_type='{diffusion.head_type}') does not support cross-view "
                "attention or camera pose estimation. Switch mode to 'mono', or "
                "load Small or Base model for mult-view."
            )

        if pose_method == "cam_dec" and not has_cam_dec:
            raise ValueError(
                "pose_method='cam_dec' requires a camera decoder, but the loaded "
                f"model (head_type='{diffusion.head_type}') does not have one. "
                "Use pose_method='ray_pose' instead."
            )
        if pose_method == "ray_pose" and not has_dualdpt:
            raise ValueError(
                "pose_method='ray_pose' requires a DualDPT head, but the loaded "
                f"model has a '{diffusion.head_type}' head. "
                "Use pose_method='cam_dec' instead."
            )

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Set the node's mode to 'mono' for Mono/Metric checkpoints.
  2. Or load the DA3 Small or Base model, which has a dualdpt head / camera decoder and supports multi-view.
  3. Keep one workflow per model family instead of hot-swapping checkpoints.
Defensive patterns

Strategy: validation

Validate before calling

diffusion = da3_model.model.diffusion_model
supports_multiview = diffusion.cam_dec is not None or diffusion.head_type == 'dualdpt'
if mode_val != 'mono' and not supports_multiview:
    mode_val = 'mono'  # or raise with a clear message before queueing

Type guard

def da3_supports_multiview(da3_model) -> bool:
    d = da3_model.model.diffusion_model
    return d.cam_dec is not None or d.head_type == 'dualdpt'

Prevention

When it happens

Trigger: Loading a DA3 Mono or Metric checkpoint and running the DA3 node with mode='multi' (or any non-'mono' mode value). The check reads da3_model.model.diffusion_model.head_type and .cam_dec directly.

Common situations: Swapping DA3 checkpoints in a shared workflow without switching the mode back to 'mono'; downloading the smaller Mono model first and following a multi-view tutorial written for Base; mixing up model naming (Small/Base vs Mono/Metric variants).

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/d16d83c3054862f1. Report an issue: GitHub.