def _make_encoder()

in src/controlnet_aux/zoe/zoedepth/models/base_models/midas_repo/midas/blocks.py [0:0]


def _make_encoder(backbone, features, use_pretrained, groups=1, expand=False, exportable=True, hooks=None,
                  use_vit_only=False, use_readout="ignore", in_features=[96, 256, 512, 1024]):
    if backbone == "beitl16_512":
        pretrained = _make_pretrained_beitl16_512(
            use_pretrained, hooks=hooks, use_readout=use_readout
        )
        scratch = _make_scratch(
            [256, 512, 1024, 1024], features, groups=groups, expand=expand
        )  # BEiT_512-L (backbone)
    elif backbone == "beitl16_384":
        pretrained = _make_pretrained_beitl16_384(
            use_pretrained, hooks=hooks, use_readout=use_readout
        )
        scratch = _make_scratch(
            [256, 512, 1024, 1024], features, groups=groups, expand=expand
        )  # BEiT_384-L (backbone)
    elif backbone == "beitb16_384":
        pretrained = _make_pretrained_beitb16_384(
            use_pretrained, hooks=hooks, use_readout=use_readout
        )
        scratch = _make_scratch(
            [96, 192, 384, 768], features, groups=groups, expand=expand
        )  # BEiT_384-B (backbone)
    elif backbone == "swin2l24_384":
        pretrained = _make_pretrained_swin2l24_384(
            use_pretrained, hooks=hooks
        )
        scratch = _make_scratch(
            [192, 384, 768, 1536], features, groups=groups, expand=expand
        )  # Swin2-L/12to24 (backbone)
    elif backbone == "swin2b24_384":
        pretrained = _make_pretrained_swin2b24_384(
            use_pretrained, hooks=hooks
        )
        scratch = _make_scratch(
            [128, 256, 512, 1024], features, groups=groups, expand=expand
        )  # Swin2-B/12to24 (backbone)
    elif backbone == "swin2t16_256":
        pretrained = _make_pretrained_swin2t16_256(
            use_pretrained, hooks=hooks
        )
        scratch = _make_scratch(
            [96, 192, 384, 768], features, groups=groups, expand=expand
        )  # Swin2-T/16 (backbone)
    elif backbone == "swinl12_384":
        pretrained = _make_pretrained_swinl12_384(
            use_pretrained, hooks=hooks
        )
        scratch = _make_scratch(
            [192, 384, 768, 1536], features, groups=groups, expand=expand
        )  # Swin-L/12 (backbone)
    elif backbone == "next_vit_large_6m":
        from .backbones.next_vit import _make_pretrained_next_vit_large_6m
        pretrained = _make_pretrained_next_vit_large_6m(hooks=hooks)
        scratch = _make_scratch(
            in_features, features, groups=groups, expand=expand
        )  # Next-ViT-L on ImageNet-1K-6M (backbone)
    elif backbone == "levit_384":
        pretrained = _make_pretrained_levit_384(
            use_pretrained, hooks=hooks
        )
        scratch = _make_scratch(
            [384, 512, 768], features, groups=groups, expand=expand
        )  # LeViT 384 (backbone)
    elif backbone == "vitl16_384":
        pretrained = _make_pretrained_vitl16_384(
            use_pretrained, hooks=hooks, use_readout=use_readout
        )
        scratch = _make_scratch(
            [256, 512, 1024, 1024], features, groups=groups, expand=expand
        )  # ViT-L/16 - 85.0% Top1 (backbone)
    elif backbone == "vitb_rn50_384":
        pretrained = _make_pretrained_vitb_rn50_384(
            use_pretrained,
            hooks=hooks,
            use_vit_only=use_vit_only,
            use_readout=use_readout,
        )
        scratch = _make_scratch(
            [256, 512, 768, 768], features, groups=groups, expand=expand
        )  # ViT-H/16 - 85.0% Top1 (backbone)
    elif backbone == "vitb16_384":
        pretrained = _make_pretrained_vitb16_384(
            use_pretrained, hooks=hooks, use_readout=use_readout
        )
        scratch = _make_scratch(
            [96, 192, 384, 768], features, groups=groups, expand=expand
        )  # ViT-B/16 - 84.6% Top1 (backbone)
    elif backbone == "resnext101_wsl":
        pretrained = _make_pretrained_resnext101_wsl(use_pretrained)
        scratch = _make_scratch([256, 512, 1024, 2048], features, groups=groups, expand=expand)  # efficientnet_lite3
    elif backbone == "efficientnet_lite3":
        pretrained = _make_pretrained_efficientnet_lite3(use_pretrained, exportable=exportable)
        scratch = _make_scratch([32, 48, 136, 384], features, groups=groups, expand=expand)  # efficientnet_lite3
    else:
        print(f"Backbone '{backbone}' not implemented")
        assert False
        
    return pretrained, scratch