データパイプラインのカスタマイズ¶
例えば、
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
設定ファイルでパイプラインをインポートして使用します。インポートは、トレーニングスクリプトの場所を基準とした相対パスであることを確認してください。
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') ]
変換パイプラインの出力を視覚化します。
変換パイプラインの出力を視覚化するには、
tools/misc/browse_dataset.py
を使用すると、検出データセット(画像とバウンディングボックスアノテーションの両方)を視覚的に閲覧したり、指定したディレクトリに画像を保存したりできます。詳細については、視覚化に関するドキュメント を参照してください。