Exemplo n.º 1
0
from fcdd.runners.bases import ClassesRunner
from fcdd.runners.argparse_configs import DefaultImagenetConfig


class ImagenetConfig(DefaultImagenetConfig):
    def __call__(self, parser):
        parser = super().__call__(parser)
        parser.add_argument(
            '--it',
            type=int,
            default=5,
            help='Number of runs per class with different random seeds.')
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(ImagenetConfig())
    runner.args.logdir += '_imagenet_'
    runner.run()
    print()
Exemplo n.º 2
0
from fcdd.runners.bases import ClassesRunner
from fcdd.runners.argparse_configs import DefaultMvtecConfig


class MvtecConfig(DefaultMvtecConfig):
    def __call__(self, parser):
        parser = super().__call__(parser)
        parser.add_argument(
            '--it',
            type=int,
            default=5,
            help='Number of runs per class with different random seeds.')
        parser.add_argument(
            '--cls-restrictions',
            type=int,
            nargs='+',
            default=None,
            help=
            'Run only training sessions for some of the classes being nominal.'
        )
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(MvtecConfig())
    runner.args.logdir += '_mvtec_'
    runner.run()
    print()
Exemplo n.º 3
0
            type=int,
            nargs='+',
            default=None,
            help='run only a part of the seeds found in the source experiment')
        parser.add_argument(
            '--cls-restrictions',
            nargs='+',
            default=None,
            type=int,
            help='run only a part of the classes found in the source experiment'
        )
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(ExpConfig())
    assert runner.args.srcexp is not None, 'directory of source experiment is not given!'

    # find all class folders, where each folder contains log data for a different class taken as nominal
    cls_dirs = [
        pt.join(runner.args.srcexp, d) for d in os.listdir(runner.args.srcexp)
        if pt.isdir(pt.join(runner.args.srcexp, d))
    ]
    cls_dirs = [
        c for c in sorted(cls_dirs, key=os.path.getmtime)
        if c.split(os.sep)[-1].startswith('normal_')
    ]
    assert len(
        cls_dirs
    ) > 0, 'source experiment directory has no class folders, i.e. contains no log data!'
Exemplo n.º 4
0
from fcdd.runners.bases import ClassesRunner
from fcdd.runners.argparse_configs import DefaultCifar10Config


class Cifar10Config(DefaultCifar10Config):
    def __call__(self, parser):
        parser = super().__call__(parser)
        parser.add_argument(
            '--it',
            type=int,
            default=5,
            help='Number of runs per class with different random seeds.')
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(Cifar10Config())
    runner.args.logdir += '_cifar10_'
    runner.run()
    print()
Exemplo n.º 5
0
from fcdd.runners.bases import ClassesRunner
from fcdd.runners.argparse_configs import DefaultPascalvocConfig


class PascalvocConfig(DefaultPascalvocConfig):
    def __call__(self, parser):
        parser = super().__call__(parser)
        parser.add_argument(
            '--it',
            type=int,
            default=5,
            help='Number of runs per class with different random seeds.')
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(PascalvocConfig())
    runner.args.logdir += '_pascalvoc_'
    runner.run()
    print()
Exemplo n.º 6
0
import torch
from fcdd.runners.bases import ClassesRunner
from fcdd.runners.argparse_configs import DefaultFmnistConfig


class FmnistConfig(DefaultFmnistConfig):
    def __call__(self, parser):
        parser = super().__call__(parser)
        parser.add_argument(
            '--it',
            type=int,
            default=5,
            help='Number of runs per class with different random seeds.')
        return parser


if __name__ == '__main__':
    torch.set_num_threads(4)
    runner = ClassesRunner(FmnistConfig())
    runner.args.logdir += '_fmnist_'
    runner.run()
    print()
Exemplo n.º 7
0
            'per class. This also holds for the training set (in case of some known anomalies for a '
            'semi-supervised setting; set --supervise-mode to `other` to take them into account). '
            'For more details see :class:`fcdd.datasets.image_folder.ADImageFolderDataset`.'
        )
        parser.add_argument(
            '--ground-truth-maps',
            '-gtms',
            action='store_true',
            help=
            'Activates utilization of binary ground-truth maps for training and/or testing. '
            'This requires additional dataset folders `data/custom/train_maps/classX/...` '
            'and/or `data/custom/test_maps/classX/...` where the corresponding maps are placed. '
            'The ground-truth maps need to be binary; i.e., need to be in {0, 255}^{1 x h x w}, '
            'where 255 marks anomalous regions. '
            'For more details see :class:`fcdd.datasets.image_folder_gtms.ADImageFolderDatasetGTM`.'
        )
        parser.set_defaults(one_vs_rest=False, ground_truth_maps=False)
        return parser


if __name__ == '__main__':
    runner = ClassesRunner(CustomConfig())
    runner.args.logdir += '_custom_'
    fcdd.datasets.CUSTOM_CLASSES = extract_custom_classes(runner.args.datadir)
    fcdd.datasets.image_folder.ADImageFolderDataset.ovr = runner.args.one_vs_rest
    fcdd.datasets.image_folder.ADImageFolderDataset.gtm = runner.args.ground_truth_maps
    del runner.args.one_vs_rest
    del runner.args.ground_truth_maps
    runner.run()
    print()