From b9df1433d019cd74f3dcafc36fe153ca8e46c51d Mon Sep 17 00:00:00 2001 From: Dhruvil Darji Date: Mon, 23 Feb 2026 18:06:40 -0800 Subject: [PATCH] Replace deprecated 'pretrained' with 'init_cfg' in NuImages and base model configs In mmdet v3.x, the model-level 'pretrained' argument was removed in favor of 'init_cfg' inside the backbone dict. This caused a TypeError when running inference on NuImages models (e.g., MaskRCNN, CascadeRCNN, HybridTaskCascade). Fixes #3136 Co-Authored-By: Claude Opus 4.6 --- configs/_base_/models/cascade-mask-rcnn_r50_fpn.py | 4 ++-- configs/_base_/models/mask-rcnn_r50_fpn.py | 4 ++-- configs/nuimages/cascade-mask-rcnn_r101_fpn_1x_nuim.py | 5 ++++- .../nuimages/cascade-mask-rcnn_x101_32x4d_fpn_1x_nuim.py | 5 +++-- .../nuimages/htc_r50_fpn_head-without-semantic_1x_nuim.py | 4 ++-- .../htc_x101_64x4d_fpn_dconv_c3-c5_coco-20e-1xb16_nuim.py | 6 ++++-- configs/nuimages/mask-rcnn_r101_fpn_1x_nuim.py | 5 ++++- configs/nuimages/mask-rcnn_r50_caffe_fpn_1x_nuim.py | 8 ++++++-- .../nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_1x_nuim.py | 8 ++++++-- .../nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_20e_nuim.py | 8 ++++++-- configs/nuimages/mask-rcnn_x101_32x4d_fpn_1x_nuim.py | 5 +++-- 11 files changed, 42 insertions(+), 20 deletions(-) diff --git a/configs/_base_/models/cascade-mask-rcnn_r50_fpn.py b/configs/_base_/models/cascade-mask-rcnn_r50_fpn.py index 147b5f0335..1181ec39f1 100644 --- a/configs/_base_/models/cascade-mask-rcnn_r50_fpn.py +++ b/configs/_base_/models/cascade-mask-rcnn_r50_fpn.py @@ -1,7 +1,6 @@ # model settings model = dict( type='CascadeRCNN', - pretrained='torchvision://resnet50', _scope_='mmdet', backbone=dict( type='ResNet', @@ -11,7 +10,8 @@ frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), norm_eval=True, - style='pytorch'), + style='pytorch', + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')), neck=dict( type='FPN', in_channels=[256, 512, 1024, 2048], diff --git a/configs/_base_/models/mask-rcnn_r50_fpn.py b/configs/_base_/models/mask-rcnn_r50_fpn.py index 881d4df662..40f35ea7b6 100644 --- a/configs/_base_/models/mask-rcnn_r50_fpn.py +++ b/configs/_base_/models/mask-rcnn_r50_fpn.py @@ -1,7 +1,6 @@ # model settings model = dict( type='MaskRCNN', - pretrained='torchvision://resnet50', _scope_='mmdet', backbone=dict( type='ResNet', @@ -11,7 +10,8 @@ frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), norm_eval=True, - style='pytorch'), + style='pytorch', + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')), neck=dict( type='FPN', in_channels=[256, 512, 1024, 2048], diff --git a/configs/nuimages/cascade-mask-rcnn_r101_fpn_1x_nuim.py b/configs/nuimages/cascade-mask-rcnn_r101_fpn_1x_nuim.py index 488359f738..8756a3299a 100644 --- a/configs/nuimages/cascade-mask-rcnn_r101_fpn_1x_nuim.py +++ b/configs/nuimages/cascade-mask-rcnn_r101_fpn_1x_nuim.py @@ -1,2 +1,5 @@ _base_ = './cascade-mask-rcnn_r50_fpn_1x_nuim.py' -model = dict(pretrained='torchvision://resnet101', backbone=dict(depth=101)) +model = dict( + backbone=dict( + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'))) diff --git a/configs/nuimages/cascade-mask-rcnn_x101_32x4d_fpn_1x_nuim.py b/configs/nuimages/cascade-mask-rcnn_x101_32x4d_fpn_1x_nuim.py index ae0bd486d9..16e0a5c483 100644 --- a/configs/nuimages/cascade-mask-rcnn_x101_32x4d_fpn_1x_nuim.py +++ b/configs/nuimages/cascade-mask-rcnn_x101_32x4d_fpn_1x_nuim.py @@ -1,6 +1,5 @@ _base_ = './cascade-mask-rcnn_r50_fpn_1x_nuim.py' model = dict( - pretrained='open-mmlab://resnext101_32x4d', backbone=dict( type='ResNeXt', depth=101, @@ -10,4 +9,6 @@ out_indices=(0, 1, 2, 3), frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), - style='pytorch')) + style='pytorch', + init_cfg=dict( + type='Pretrained', checkpoint='open-mmlab://resnext101_32x4d'))) diff --git a/configs/nuimages/htc_r50_fpn_head-without-semantic_1x_nuim.py b/configs/nuimages/htc_r50_fpn_head-without-semantic_1x_nuim.py index 7a9ba88ebb..b995c71a58 100644 --- a/configs/nuimages/htc_r50_fpn_head-without-semantic_1x_nuim.py +++ b/configs/nuimages/htc_r50_fpn_head-without-semantic_1x_nuim.py @@ -5,7 +5,6 @@ # model settings model = dict( type='HybridTaskCascade', - pretrained='torchvision://resnet50', _scope_='mmdet', backbone=dict( type='ResNet', @@ -15,7 +14,8 @@ frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), norm_eval=True, - style='pytorch'), + style='pytorch', + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')), neck=dict( type='FPN', in_channels=[256, 512, 1024, 2048], diff --git a/configs/nuimages/htc_x101_64x4d_fpn_dconv_c3-c5_coco-20e-1xb16_nuim.py b/configs/nuimages/htc_x101_64x4d_fpn_dconv_c3-c5_coco-20e-1xb16_nuim.py index 4ab095a881..a8ee1fd899 100644 --- a/configs/nuimages/htc_x101_64x4d_fpn_dconv_c3-c5_coco-20e-1xb16_nuim.py +++ b/configs/nuimages/htc_x101_64x4d_fpn_dconv_c3-c5_coco-20e-1xb16_nuim.py @@ -1,6 +1,5 @@ _base_ = './htc_r50_fpn_1x_nuim.py' model = dict( - pretrained='open-mmlab://resnext101_64x4d', backbone=dict( type='ResNeXt', depth=101, @@ -13,7 +12,10 @@ norm_eval=True, style='pytorch', dcn=dict(type='DCN', deform_groups=1, fallback_on_stride=False), - stage_with_dcn=(False, True, True, True))) + stage_with_dcn=(False, True, True, True), + init_cfg=dict( + type='Pretrained', + checkpoint='open-mmlab://resnext101_64x4d'))) data = dict(samples_per_gpu=1, workers_per_gpu=1) # learning policy diff --git a/configs/nuimages/mask-rcnn_r101_fpn_1x_nuim.py b/configs/nuimages/mask-rcnn_r101_fpn_1x_nuim.py index 1ce6f32974..44739d9d21 100644 --- a/configs/nuimages/mask-rcnn_r101_fpn_1x_nuim.py +++ b/configs/nuimages/mask-rcnn_r101_fpn_1x_nuim.py @@ -1,2 +1,5 @@ _base_ = './mask-rcnn_r50_fpn_1x_nuim.py' -model = dict(pretrained='torchvision://resnet101', backbone=dict(depth=101)) +model = dict( + backbone=dict( + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'))) diff --git a/configs/nuimages/mask-rcnn_r50_caffe_fpn_1x_nuim.py b/configs/nuimages/mask-rcnn_r50_caffe_fpn_1x_nuim.py index 9d67f14346..bf2fc9c54e 100644 --- a/configs/nuimages/mask-rcnn_r50_caffe_fpn_1x_nuim.py +++ b/configs/nuimages/mask-rcnn_r50_caffe_fpn_1x_nuim.py @@ -4,8 +4,12 @@ '../_base_/schedules/mmdet-schedule-1x.py', '../_base_/default_runtime.py' ] model = dict( - pretrained='open-mmlab://detectron2/resnet50_caffe', - backbone=dict(norm_cfg=dict(requires_grad=False), style='caffe'), + backbone=dict( + norm_cfg=dict(requires_grad=False), + style='caffe', + init_cfg=dict( + type='Pretrained', + checkpoint='open-mmlab://detectron2/resnet50_caffe')), roi_head=dict( bbox_head=dict(num_classes=10), mask_head=dict(num_classes=10))) backend_args = None diff --git a/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_1x_nuim.py b/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_1x_nuim.py index 1be657cf64..ec784ceff4 100644 --- a/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_1x_nuim.py +++ b/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_1x_nuim.py @@ -4,8 +4,12 @@ '../_base_/schedules/mmdet-schedule-1x.py', '../_base_/default_runtime.py' ] model = dict( - pretrained='open-mmlab://detectron2/resnet50_caffe', - backbone=dict(norm_cfg=dict(requires_grad=False), style='caffe'), + backbone=dict( + norm_cfg=dict(requires_grad=False), + style='caffe', + init_cfg=dict( + type='Pretrained', + checkpoint='open-mmlab://detectron2/resnet50_caffe')), roi_head=dict( bbox_head=dict(num_classes=10), mask_head=dict(num_classes=10))) backend_args = None diff --git a/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_20e_nuim.py b/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_20e_nuim.py index c41d6980a7..86cc176977 100644 --- a/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_20e_nuim.py +++ b/configs/nuimages/mask-rcnn_r50_caffe_fpn_coco-3x_20e_nuim.py @@ -4,8 +4,12 @@ '../_base_/schedules/mmdet-schedule-1x.py', '../_base_/default_runtime.py' ] model = dict( - pretrained='open-mmlab://detectron2/resnet50_caffe', - backbone=dict(norm_cfg=dict(requires_grad=False), style='caffe'), + backbone=dict( + norm_cfg=dict(requires_grad=False), + style='caffe', + init_cfg=dict( + type='Pretrained', + checkpoint='open-mmlab://detectron2/resnet50_caffe')), roi_head=dict( bbox_head=dict(num_classes=10), mask_head=dict(num_classes=10))) backend_args = None diff --git a/configs/nuimages/mask-rcnn_x101_32x4d_fpn_1x_nuim.py b/configs/nuimages/mask-rcnn_x101_32x4d_fpn_1x_nuim.py index 0fd833de9a..b220d290c8 100644 --- a/configs/nuimages/mask-rcnn_x101_32x4d_fpn_1x_nuim.py +++ b/configs/nuimages/mask-rcnn_x101_32x4d_fpn_1x_nuim.py @@ -1,6 +1,5 @@ _base_ = './mask-rcnn_r50_fpn_1x_nuim.py' model = dict( - pretrained='open-mmlab://resnext101_32x4d', backbone=dict( type='ResNeXt', depth=101, @@ -10,4 +9,6 @@ out_indices=(0, 1, 2, 3), frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=True), - style='pytorch')) + style='pytorch', + init_cfg=dict( + type='Pretrained', checkpoint='open-mmlab://resnext101_32x4d')))