快捷键

自定义数据管道

  1. 在一个文件中编写新的变换,例如,在 my_pipeline.py 中。它接收一个字典作为输入,并返回一个字典。

    import random
    from mmcv.transforms import BaseTransform
    from mmdet.registry import TRANSFORMS
    
    
    @TRANSFORMS.register_module()
    class MyTransform(BaseTransform):
        """Add your transform
    
        Args:
            p (float): Probability of shifts. Default 0.5.
        """
    
        def __init__(self, prob=0.5):
            self.prob = prob
    
        def transform(self, results):
            if random.random() > self.prob:
                results['dummy'] = True
            return results
    
  2. 在您的配置文件中导入并使用该管道。确保导入相对于您的训练脚本所在位置。

    custom_imports = dict(imports=['path.to.my_pipeline'], allow_failed_imports=False)
    
    train_pipeline = [
        dict(type='LoadImageFromFile'),
        dict(type='LoadAnnotations', with_bbox=True),
        dict(type='Resize', scale=(1333, 800), keep_ratio=True),
        dict(type='RandomFlip', prob=0.5),
        dict(type='MyTransform', prob=0.2),
        dict(type='PackDetInputs')
    ]
    
  3. 可视化您的变换管道的输出

    为了可视化您的变换管道的输出,tools/misc/browse_dataset.py 可以帮助用户直观地浏览检测数据集(图像和边界框注释),或将图像保存到指定的目录。更多详细信息可以参考 可视化文档