ショートカット

データパイプラインのカスタマイズ

  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 を使用すると、検出データセット(画像とバウンディングボックスアノテーションの両方)を視覚的に閲覧したり、指定したディレクトリに画像を保存したりできます。詳細については、視覚化に関するドキュメント を参照してください。