{"record":{"id":"5205cbee73623f81","repo":"open-mmlab/mmdetection","slug":"invalid-depth-depth-for-darknet","errorCode":null,"errorMessage":"invalid depth {depth} for darknet","messagePattern":"invalid depth (.+?) for darknet","errorType":"validation","errorClass":"KeyError","httpStatus":null,"severity":"error","filePath":"mmdet/models/backbones/darknet.py","lineNumber":113,"sourceCode":"    # Dict(depth: (layers, channels))\n    arch_settings = {\n        53: ((1, 2, 8, 8, 4), ((32, 64), (64, 128), (128, 256), (256, 512),\n                               (512, 1024)))\n    }\n\n    def __init__(self,\n                 depth=53,\n                 out_indices=(3, 4, 5),\n                 frozen_stages=-1,\n                 conv_cfg=None,\n                 norm_cfg=dict(type='BN', requires_grad=True),\n                 act_cfg=dict(type='LeakyReLU', negative_slope=0.1),\n                 norm_eval=True,\n                 pretrained=None,\n                 init_cfg=None):\n        super(Darknet, self).__init__(init_cfg)\n        if depth not in self.arch_settings:\n            raise KeyError(f'invalid depth {depth} for darknet')\n\n        self.depth = depth\n        self.out_indices = out_indices\n        self.frozen_stages = frozen_stages\n        self.layers, self.channels = self.arch_settings[depth]\n\n        cfg = dict(conv_cfg=conv_cfg, norm_cfg=norm_cfg, act_cfg=act_cfg)\n\n        self.conv1 = ConvModule(3, 32, 3, padding=1, **cfg)\n\n        self.cr_blocks = ['conv1']\n        for i, n_layers in enumerate(self.layers):\n            layer_name = f'conv_res_block{i + 1}'\n            in_c, out_c = self.channels[i]\n            self.add_module(\n                layer_name,\n                self.make_conv_res_block(in_c, out_c, n_layers, **cfg))\n            self.cr_blocks.append(layer_name)","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/models/backbones/darknet.py#L95-L131","documentation":"Darknet backbone supports only the depths listed in Darknet.arch_settings (typically 53 and 101 in mmdet); any other depth value raises this KeyError at construction. The depth selects a (layers, channels) architecture template.","triggerScenarios":"Passing depth=18, depth=152, or depth='53' (string) to Darknet; assuming ImageNet-style depth naming (18/34/50) applies.","commonSituations":"Copy-pasting ResNet-style configs and only changing type to Darknet while keeping depth=50; typos; expecting a depth that only exists in other repos/versions.","solutions":["Use depth=53 or depth=101 (the keys of Darknet.arch_settings in your mmdet version)","Check Darknet.arch_settings in mmdet/models/backbones/darknet.py for supported depths","For other depths use arch_ovewrite-style backbones or a different backbone class"],"exampleFix":"# before\nbackbone=dict(type='Darknet', depth=50)\n# after\nbackbone=dict(type='Darknet', depth=53)","handlingStrategy":"validation","validationCode":"from mmdet.models.backbones.darknet import Darknet\nassert depth in Darknet.arch_settings, f'depth must be one of {list(Darknet.arch_settings)}'","typeGuard":"def is_supported_darknet_depth(depth) -> bool:\n    return depth in Darknet.arch_settings  # typically {53, 101}","tryCatchPattern":"try:\n    backbone = Darknet(depth=depth)\nexcept KeyError:\n    backbone = Darknet(depth=53)  # nearest supported template","preventionTips":["Use depth=53 or 101","Note string '53' also fails; pass an int","Check arch_settings of your mmdet version"],"tags":["mmdet","backbone","darknet","invalid-depth","config"],"backgroundTag":null,"analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}