예제 #1
0
 def __init__(self):
     self.model = torchreid.models.build_model(
             name='resnet50',
             num_classes=1,#unusable
             loss='softmax',
             pretrained=True,
             use_gpu = True
         )
     torchreid.utils.load_pretrained_weights(self.model, 'model_data/model.pth.tar-60')
     self.model = self.model.cuda()
     self.optimizer = torchreid.optim.build_optimizer(
             self.model,
             optim='adam',
             lr=0.0003
         )
     self.scheduler = torchreid.optim.build_lr_scheduler(
             self.optimizer,
             lr_scheduler='single_step',
             stepsize=20
         )
     _, self.transform_te = build_transforms(
         height=256, width=128,
         random_erase=False,
         color_jitter=False,
         color_aug=False
     )
     self.dist_metric = 'euclidean'
     self.model.eval()
예제 #2
0
    def __init__(self,
                 sources=None,
                 targets=None,
                 height=256,
                 width=128,
                 transforms='random_flip',
                 norm_mean=None,
                 norm_std=None,
                 use_gpu=False):
        self.sources = sources
        self.targets = targets
        self.height = height
        self.width = width

        if self.sources is None:
            raise ValueError('sources must not be None')

        if isinstance(self.sources, str):
            self.sources = [self.sources]

        if self.targets is None:
            self.targets = self.sources

        if isinstance(self.targets, str):
            self.targets = [self.targets]

        self.transform_tr, self.transform_te = build_transforms(
            self.height,
            self.width,
            transforms=transforms,
            norm_mean=norm_mean,
            norm_std=norm_std)

        self.use_gpu = (torch.cuda.is_available() and use_gpu)
예제 #3
0
    def __init__(self, sources=None, targets=None, height=256, width=128, random_erase=False,
                 color_jitter=False, color_aug=False, use_cpu=False):
        self.sources = sources
        self.targets = targets

        if self.sources is None:
            raise ValueError('sources must not be None')

        if isinstance(self.sources, str):
            self.sources = [self.sources]

        if self.targets is None:
            self.targets = self.sources

        if isinstance(self.targets, str):
            self.targets = [self.targets]

        self.transform_tr, self.transform_te = build_transforms(
            height, width,
            random_erase=random_erase,
            color_jitter=color_jitter,
            color_aug=color_aug
        )

        self.use_gpu = (torch.cuda.is_available() and not use_cpu)
예제 #4
0
    def __init__(self,
                 sources=None,
                 targets=None,
                 height=256,
                 width=128,
                 transforms='random_flip',
                 use_cpu=False,
                 load_pose=False):
        self.sources = sources
        self.targets = targets

        if self.sources is None:
            raise ValueError('sources must not be None')

        if isinstance(self.sources, str):
            self.sources = [self.sources]

        if self.targets is None:
            self.targets = self.sources

        if isinstance(self.targets, str):
            self.targets = [self.targets]

        if load_pose:
            self.transform_tr, self.transform_te = build_unified_transforms(
                height, width, transforms)
        else:
            self.transform_tr, self.transform_te = build_transforms(
                height, width, transforms)

        self.use_gpu = (torch.cuda.is_available() and not use_cpu)
예제 #5
0
    def __init__(
        self,
        root='',
        mode='train',
        test_in_train_format=False,
        meta_file='',
        step=30,
        h_len=3,
        height=256,
        width=128,
        loc_std=1,
        **kwargs
    ):
        self.root = osp.abspath(osp.expanduser(root))
        self.dataset_dir = osp.join(self.root, self.dataset_dir)
        self.train_im_dir = osp.join(self.dataset_dir, 'imgs/train')
        self.val_im_dir = osp.join(self.dataset_dir, 'imgs/train')
        self.test_im_dir = osp.join(self.dataset_dir, 'imgs/test')
        self.train_dt_dir = osp.join(self.dataset_dir, 'dts/train')
        self.val_dt_dir = osp.join(self.dataset_dir, 'dts/train')
        self.test_dt_dir = osp.join(self.dataset_dir, 'dts/test')
        self.train_gt_dir = osp.join(self.dataset_dir, 'gts/train')
        self.val_gt_dir = osp.join(self.dataset_dir, 'gts/train')

        # required_files = [
        #     self.dataset_dir, self.train_dir, self.query_dir, self.gallery_dir
        # ]
        # self.check_before_run(required_files)

        self.test_mode = mode
        self.meta_file = meta_file
        self.test_in_train_format = test_in_train_format

        self.step = step
        self.h_len = h_len
        self.height = height
        self.width = width
        self.loc_std = loc_std
        self.transform_tr, self.transform_te = build_transforms(
            self.height,
            self.width,
        )

        assert self.test_mode in [
            'train', 'val', 'test'
        ], 'mode must be one of [train, val or test]'
        self.sequences = []
        self.data = self._process()

        self._cache_flag = False
예제 #6
0
def main():

    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('--config-file',
                        type=str,
                        default='',
                        help='path to config file')
    parser.add_argument('--output_name', type=str, default='model')
    parser.add_argument('opts',
                        default=None,
                        nargs=argparse.REMAINDER,
                        help='Modify config options using the command-line')
    args = parser.parse_args()

    cfg = get_default_config()
    cfg.use_gpu = torch.cuda.is_available()
    if args.config_file:
        cfg.merge_from_file(args.config_file)
    cfg.merge_from_list(args.opts)

    model = torchreid.models.build_model(name=cfg.model.name,
                                         num_classes=2,
                                         loss=cfg.loss.name,
                                         pretrained=cfg.model.pretrained,
                                         use_gpu=cfg.use_gpu,
                                         dropout_prob=cfg.model.dropout_prob,
                                         feature_dim=cfg.model.feature_dim,
                                         activation=cfg.model.activation,
                                         in_first=cfg.model.in_first)
    load_pretrained_weights(model, cfg.model.load_weights)
    model.eval()

    _, transform = build_transforms(cfg.data.height, cfg.data.width)

    input_size = (cfg.data.height, cfg.data.width, 3)
    img = np.random.rand(*input_size).astype(np.float32)
    img = np.uint8(img * 255)
    im = Image.fromarray(img)
    blob = transform(im).unsqueeze(0)

    torch.onnx.export(model,
                      blob,
                      args.output_name + '.onnx',
                      verbose=True,
                      export_params=True)
    def __init__(
        self,
        sources=None,
        targets=None,
        height=256,
        width=128,
        transforms='random_flip',
        norm_mean=None,
        norm_std=None,
        use_gpu=False,
        apply_masks_to_test=False
    ):
        self.source_groups = sources
        if self.source_groups is None:
            raise ValueError('sources must not be None')
        if isinstance(self.source_groups, str):
            self.source_groups = [[self.source_groups]]
        elif isinstance(self.source_groups, (list, tuple)):
            self.source_groups = [[v] if isinstance(v, str) else v for v in self.source_groups]
        self.sources = [s for group in self.source_groups for s in group]

        self.targets = targets
        if self.targets is None:
            self.targets = self.sources
        if isinstance(self.targets, str):
            self.targets = [self.targets]

        self.height = height
        self.width = width
        self.transform_tr, self.transform_te = build_transforms(
            self.height,
            self.width,
            transforms=transforms,
            norm_mean=norm_mean,
            norm_std=norm_std,
            apply_masks_to_test=apply_masks_to_test,
        )

        self.use_gpu = (torch.cuda.is_available() and use_gpu)
예제 #8
0
def build_dataset(mode='gallery',
                  targets=None,
                  height=192,
                  width=256,
                  transforms=None,
                  norm_mean=None,
                  norm_std=None,
                  **kwargs):
    _, transform_test = build_transforms(height,
                                         width,
                                         transforms=transforms,
                                         norm_mean=norm_mean,
                                         norm_std=norm_std)

    main_target_name = targets[0]
    dataset = init_image_dataset(main_target_name,
                                 transform=transform_test,
                                 mode=mode,
                                 verbose=False,
                                 **kwargs)

    return dataset