mmdet 2.x 迁移到 3.x
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

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

被折叠的 条评论
为什么被折叠?



