Mmdetection: Missing/unexpected keys with Retinanet

Created on 4 Jun 2019  路  2Comments  路  Source: open-mmlab/mmdetection

Training on a custom dataset using retinanet_r50_fpn_1x.py with ImageNet pre-trained weights works fine for me. But when I try to either (i) resume training from a previous checkpoint of the same dataset and model or (ii) when I use the detection model from model zoo website I get loads of missing/unexpected key messages. It seems that effectively no pre-training is happening.

Did anyone observe this problem too? I pulled to make sure my compute is using the newest version of mmdetection, and also downloaded the newest model from the model zoo site.

Sample error message:

2019-06-04 20:34:44,776 - WARNING - unexpected key in source state_dict: backbone.conv1.weight, backbone.bn1.weight, backbone.bn1.bias, backbone.bn1.running_mean, backbone.bn1.running_var, backbone.bn1.num_batches_tracked, backbone.layer1.0.conv1.weight, backbone.layer1.0.bn1.weight, backbone.layer1.0.bn1.bias, backbone.layer1.0.bn1.running_mean, backbone.layer1.0.bn1.running_var, backbone.layer1.0.bn1.num_batches_tracked, backbone.layer1.0.conv2.weight, backbone.layer1.0.bn2.weight, backbone.layer1.0.bn2.bias, backbone.layer1.0.bn2.running_mean, backbone.layer1.0.bn2.running_var, backbone.layer1.0.bn2.num_batches_tracked, backbone.layer1.0.conv3.weight, backbone.layer1.0.bn3.weight, backbone.layer1.0.bn3.bias, backbone.layer1.0.bn3.running_mean, backbone.layer1.0.bn3.running_var, backbone.layer1.0.bn3.num_batches_tracked, backbone.layer1.0.downsample.0.weight, backbone.layer1.0.downsample.1.weight, backbone.layer1.0.downsample.1.bias, backbone.layer1.0.downsample.1.running_mean, backbone.layer1.0.downsample.1.running_var, backbone.layer1.0.downsample.1.num_batches_tracked, backbone.layer1.1.conv1.weight, backbone.layer1.1.bn1.weight, backbone.layer1.1.bn1.bias, backbone.layer1.1.bn1.running_mean, backbone.layer1.1.bn1.running_var, backbone.layer1.1.bn1.num_batches_tracked, backbone.layer1.1.conv2.weight, b
...many more...

missing keys in source state_dict: layer2.0.bn1.bias, layer2.1.bn2.weight, bn1.weight, layer3.3.bn3.num_batches_tracked, layer2.3.bn3.running_var, layer3.4.conv2.weight, layer3.1.bn3.running_var, layer1.0.bn3.running_mean, layer3.4.conv3.weight, layer4.1.bn2.num_batches_tracked, layer2.2.bn3.weight, layer3.0.bn3.running_var, layer2.0.conv3.weight, layer3.1.conv1.weight, layer4.0.bn2.bias, layer4.2.bn3.running_mean, layer1.2.conv3.weight, layer2.1.bn3.bias, layer1.2.bn1.bias, layer4.2.bn3.bias, layer2.3.conv2.weight, layer2.2.bn1.bias, layer2.0.bn1.running_var, layer3.5.bn3.bias, layer3.5.conv2.weight, layer2.2.bn3.running_var, layer3.1.bn1.running_var, layer4.1.bn3.running_var, layer3.0.downsample.1.running_mean, layer4.1.bn2.bias, layer1.1.bn2.running_var, layer3.4.bn2.running_mean, layer2.0.conv2.weight, layer1.0.downsample.1.bias, layer1.2.bn3.num_batches_tracked, layer1.0.bn2.running_mean, layer1.2.bn1.num_batches_tracked, layer2.0.bn1.num_batches_tracked, layer3.1.bn1.running_mean, layer4.0.bn2.num_batches_tracked, layer3.2.bn2.running_mean, layer3.1.bn2.bias, layer2.0.bn3.bias, layer2.1.conv3.weight, layer3.5.conv3.weig
...many more...

Most helpful comment

The argument pretrain in backbones is only for the backbone itself. If you want to load a trained checkpoint as the initialization, you need to specify load_from='<checkpoint_path>'.

All 2 comments

The argument pretrain in backbones is only for the backbone itself. If you want to load a trained checkpoint as the initialization, you need to specify load_from='<checkpoint_path>'.

Great, thanks a lot. Adding/editing the "load_from" line in e.g. the retinanet_r50_fpn_1x.py config file worked.

Was this page helpful?
0 / 5 - 0 ratings