{"record":{"id":"ebd0c7e0a122b9b6","repo":"open-mmlab/mmdetection","slug":"when-not-setting-min-sizes-and-max-sizes-basesize","errorCode":null,"errorMessage":"When not setting min_sizes and max_sizes,basesize_ratio_range[0] should be either 0.1or 0.15 when input_size is 512, got {basesize_ratio_range[0]}.","messagePattern":"When not setting min_sizes and max_sizes,basesize_ratio_range\\[0\\] should be either 0\\.1or 0\\.15 when input_size is 512, got (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mmdet/models/task_modules/prior_generators/anchor_generator.py","lineNumber":571,"sourceCode":"                    min_sizes.insert(0, int(self.input_size * 7 / 100))\n                    max_sizes.insert(0, int(self.input_size * 15 / 100))\n                elif basesize_ratio_range[0] == 0.2:  # SSD300 VOC\n                    min_sizes.insert(0, int(self.input_size * 10 / 100))\n                    max_sizes.insert(0, int(self.input_size * 20 / 100))\n                else:\n                    raise ValueError(\n                        'basesize_ratio_range[0] should be either 0.15'\n                        'or 0.2 when input_size is 300, got '\n                        f'{basesize_ratio_range[0]}.')\n            elif self.input_size == 512:\n                if basesize_ratio_range[0] == 0.1:  # SSD512 COCO\n                    min_sizes.insert(0, int(self.input_size * 4 / 100))\n                    max_sizes.insert(0, int(self.input_size * 10 / 100))\n                elif basesize_ratio_range[0] == 0.15:  # SSD512 VOC\n                    min_sizes.insert(0, int(self.input_size * 7 / 100))\n                    max_sizes.insert(0, int(self.input_size * 15 / 100))\n                else:\n                    raise ValueError(\n                        'When not setting min_sizes and max_sizes,'\n                        'basesize_ratio_range[0] should be either 0.1'\n                        'or 0.15 when input_size is 512, got'\n                        f' {basesize_ratio_range[0]}.')\n            else:\n                raise ValueError(\n                    'Only support 300 or 512 in SSDAnchorGenerator when '\n                    'not setting min_sizes and max_sizes, '\n                    f'got {self.input_size}.')\n\n        assert len(min_sizes) == len(max_sizes) == len(strides)\n\n        anchor_ratios = []\n        anchor_scales = []\n        for k in range(len(self.strides)):\n            scales = [1., np.sqrt(max_sizes[k] / min_sizes[k])]\n            anchor_ratio = [1.]\n            for r in ratios[k]:","sourceCodeStart":553,"sourceCodeEnd":589,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/models/task_modules/prior_generators/anchor_generator.py#L553-L589","documentation":"SSDAnchorGenerator derives anchor sizes for input_size=512 from two presets keyed by basesize_ratio_range[0]: 0.1 (COCO) or 0.15 (VOC). When min_sizes/max_sizes are not set and the leading ratio is neither, the constructor raises ValueError because no preset exists.","triggerScenarios":"SSDAnchorGenerator with input_size=512, min_sizes/max_sizes omitted, and basesize_ratio_range[0] not equal to 0.1 or 0.15 (e.g. 0.2 carried over from an SSD300 VOC config).","commonSituations":"Porting an SSD300 VOC config (ratio 0.2) to SSD512, or customizing the ratio sweep without explicitly defining anchor min/max sizes.","solutions":["Use basesize_ratio_range=(0.1, 0.9) for SSD512 COCO or (0.15, 0.9) for SSD512 VOC","Or pass explicit min_sizes/max_sizes lists to bypass preset derivation"],"exampleFix":"# before\nanchor_generator=dict(\n    type='SSDAnchorGenerator', input_size=512,\n    basesize_ratio_range=(0.2, 0.95))\n# after\nanchor_generator=dict(\n    type='SSDAnchorGenerator', input_size=512,\n    basesize_ratio_range=(0.15, 0.9))  # SSD512 VOC","handlingStrategy":"validation","validationCode":"ag = cfg['anchor_generator']\nassert ag.get('input_size') != 512 or ag.get('min_sizes') or ag['basesize_ratio_range'][0] in (0.1, 0.15)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When changing input_size, re-check basesize_ratio_range presets","Add a config unit test asserting anchor config validity"],"tags":["mmdetection","ssd","anchor-generator","config-validation"],"backgroundTag":"invalid-config-parameter","analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}