Frequently Asked Questions¶
We list some common troubles faced by many users and their corresponding solutions here. Feel free to enrich the list if you find any frequent issues and have ways to help others to solve them. If the contents here do not cover your issue, please create an issue using the provided templates and make sure you fill in all required information in the template.
Compatibility issue between MMEngine, MMCV and MMPretrain
Compatible MMPretrain and MMEngine, MMCV versions are shown as below. Please choose the correct version of MMEngine and MMCV to avoid installation issues.
mmengine >= 0.8.3
mmcv >= 2.0.0
mmengine >= 0.8.0
mmcv >= 2.0.0
mmengine >= 0.7.1
mmcv >= 2.0.0rc4
mmengine >= 0.5.0
mmcv >= 2.0.0rc4
devbranch is under frequent development, the MMEngine and MMCV version dependency may be inaccurate. If you encounter problems when using the
devbranch, please try to update MMEngine and MMCV to the latest version.
If you would like to use
albumentations, we suggest using
pip install -r requirements/albu.txtor
pip install -U albumentations --no-binary qudida,albumentations.
If you simply use
pip install albumentations>=0.3.2, it will install
opencv-python-headlesssimultaneously (even though you have already installed
opencv-python). Please refer to the official documentation for details.
Do I need to reinstall mmpretrain after some code modifications?¶
If you follow the best practice and install mmpretrain from source, any local modifications made to the code will take effect without reinstallation.
How to develop with multiple MMPretrain versions?¶
Generally speaking, we recommend to use different virtual environments to
manage MMPretrain in different working directories. However, you
can also use the same environment to develop MMPretrain in different
folders, like mmpretrain-0.21, mmpretrain-0.23. When you run the train or test shell script,
it will adopt the mmpretrain package in the current folder. And when you run other Python
script, you can also add
PYTHONPATH=`pwd` at the beginning of your command
to use the package in the current folder.
Conversely, to use the default MMPretrain installed in the environment rather than the one you are working with, you can remove the following line in those shell scripts:
What’s the relationship between the
load_from and the
resume=False, only imports model weights, which is mainly used to load trained models; If
resume=True, load all of the model weights, optimizer state, and other training information, which is mainly used to resume interrupted training.
init_cfg: You can also specify
init=dict(type="Pretrained", checkpoint=xxx)to load checkpoint, it means load the weights during model weights initialization. That is, it will be only done at the beginning of the training. It’s mainly used to fine-tune a pre-trained model, and you can set it in the backbone config and use
prefixfield to only load backbone weights, for example:
model = dict( backbone=dict( type='ResNet', depth=50, init_cfg=dict(type='Pretrained', checkpoints=xxx, prefix='backbone'), ) ... )
See the Fine-tune Models for more details about fine-tuning.
What’s the difference between
Almost no difference. Usually, the
default_hooks field is used to specify the hooks that will be used in almost
all experiments, and the
custom_hooks field is used in only some experiments.
Another difference is the
default_hooks is a dict while the
custom_hooks is a list, please don’t be
During training, I got no training log, what’s the reason?¶
If your training dataset is small while the batch size is large, our default log interval may be too large to record your training log.
You can shrink the log interval and try again, like:
default_hooks = dict( ... logger=dict(type='LoggerHook', interval=10), ... )
How to train with other datasets, like my own dataset or COCO?¶
We provide specific examples to show how to train with other datasets.