mmdet 从2.x 模型代码迁移到3.x 记录(以mask rcnn 为例)

本文详细描述了从MMDetection2.x版本迁移到3.x版本的过程,包括修改配置文件、自定义dataset模块和调整模型调用代码,重点提到了遇到的问题和解决方法,如ConfigDict的属性变化和新版本API的使用。

mmdet 2.x 迁移到 3.x


)

step1 根据官方文档修改 配置文件:

https://mmdetection.readthedocs.io/zh-cn/latest/migration/config_migration.html

step2 修改自定义的dataset模块

try:
	# mmdet 2.x
    from mmdet.datasets.builder import DATASETS
    from mmdet.datasets.pipelines import Compose
    from mmdet.datasets.custom import CustomDataset
    from mmcv.utils import print_log
except Exception as e:
    # mmdet 3.x
    from mmdet.registry import DATASETS
    from mmcv.transforms import Compose
    from mmengine.dataset import BaseDataset as CustomDataset
    from mmengine.logging import print_log
@DATASETS.register_module()
class YourCustomDataset(CustomDataset):

# 此处省略 部分代码
# 
# 将 类初始化中的参数 img_prefix 改为 data_prefix='', test_mode=True,增加:*args,**kwargs
# 类初始化的时候 __init__ 增加
self._metainfo = {
   
   }
self._metainfo['classes'] = self.CLASSES

	# 增加一个方法
	@classmethod
    def get_classes(cls, classes=None):
        """Get class names of current dataset.

        Args:
            classes (Sequence[str] | str | None): If classes is None, use
                default CLASSES defined by builtin dataset. If classes is a
                string, take it as a file name. The file contains the name of
                classes where each line contains one class name. If classes is
                a tuple or list, override the CLASSES defined by the dataset.

        Returns:
            tuple[str] or list[str]: Names of categories of the dataset.
        """
        if classes is None:
            return cls.CLASSES

        if isinstance(classes, str):
            # take it as a file path
            class_names = mmcv.list_from_file(classes)
        elif isinstance(classes, (tuple, list)):
            class_names = classes
        else:
            raise ValueError(f'Unsupported type {
     
     type(classes)} of classes.')

        return class_names



step3 在模型调用时修改调用的代码

try:
    # mmdet 2.x
    from mmcv.parallel import collate, scatter
    from mmdet.datasets.pipelines import Compose
except Exception as e:
	# mmdet 3.x
    print(mmcv.__version__,dir(mmcv))
    from mmcv.transforms import Compose
    from mmdet.structures.bbox import bbox2roi
    # fro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值