예제 #1
0
    def set_input(self, input):
        # move to GPU and change data types
        random.shuffle(self.keys)

        if len(self.gpu_ids) > 0:
            self.input_fullP1 = input['P1'].cuda(self.gpu_ids[0], async=True)
            self.input_fullP2 = input['P2'].cuda(self.gpu_ids[0], async=True)
            input_P1mask = input['P1masks'].cuda(self.gpu_ids[0], async=True)
            input_P2mask = input['P2masks'].cuda(self.gpu_ids[0], async=True)

        input_P1mask, _ = pose_utils.obtain_mask(input_P1mask, self.mask_id,
                                                 self.keys)
        input_P2mask, input_P2back = pose_utils.obtain_mask(
            input_P2mask, self.mask_id, self.keys)
        self.input_P1 = self.input_fullP1.repeat(3, 1, 1, 1) * input_P1mask
        self.input_P2 = self.input_fullP2.repeat(3, 1, 1, 1) * input_P2mask
        self.input_BP1 = pose_utils.cords_to_map(input['BP1'],
                                                 input['P1masks'],
                                                 self.mask_id, self.keys,
                                                 self.GPU, self.opt)
        self.input_BP2 = pose_utils.cords_to_map(input['BP2'],
                                                 input['P2masks'],
                                                 self.mask_id, self.keys,
                                                 self.GPU, self.opt)

        self.image_paths = []
        for i in range(self.opt.batchSize):
            self.image_paths.append(
                os.path.splitext(input['P1_path'][i])[0] + '_2_' +
                input['P2_path'][i])
예제 #2
0
    def set_input_test(self, input):
        self.input_fullP1 = input['P2'].cuda()
        input_P1mask = input['P2masks'].cuda()
        self.input_fullP2 = input['P2'].cuda()
        input_P2mask = input['P2masks'].cuda()

        input_P1mask, input_P1backmask = pose_utils.obtain_mask(
            input_P1mask, self.mask_id, self.keys)
        input_P2mask, input_P2backmask = pose_utils.obtain_mask(
            input_P2mask, self.mask_id, self.keys)
        self.input_P1 = self.input_fullP1.repeat(3, 1, 1, 1) * input_P1mask
        self.input_P1_back = self.input_fullP1 * input_P1backmask
        self.input_P2 = self.input_fullP2.repeat(3, 1, 1, 1) * input_P2mask
        self.input_P2mask = input_P2mask.float()
        self.input_P1backmask = input_P1backmask
        self.input_P2backmask = input_P2backmask
        self.input_BP1 = pose_utils.cords_to_map(input['BP1'],
                                                 input['P1masks'],
                                                 self.mask_id, self.keys,
                                                 self.GPU, self.opt,
                                                 input['affine'])
        self.input_BP2 = pose_utils.cords_to_map(input['BP2'],
                                                 input['P2masks'],
                                                 self.mask_id, self.keys,
                                                 self.GPU, self.opt)

        self.image_paths = []
        for i in range(self.opt.batchSize):
            self.image_paths.append(
                os.path.splitext(input['P1_path'][i])[0] + '_2_' +
                input['P2_path'][i])
예제 #3
0
    def set_input(self, input):
        # move to GPU and change data types
        random.shuffle(self.keys)

        if len(self.gpu_ids) > 0:
            self.input_fullP1 = input['P1'].cuda()
            self.input_fullP2 = input['P2'].cuda()
            input_P1mask = input['P1masks'].cuda()
            input_P2mask = input['P2masks'].cuda()

        res_mask = []
        for key in self.target_mask_id.keys():
            tmpmask = []
            for k in self.target_mask_id[key]:
                tmpmask.append(
                    torch.where(input_P2mask == k,
                                torch.ones_like(input_P2mask),
                                torch.zeros_like(input_P2mask)))
            tmpmask = torch.stack(tmpmask)
            res_mask.append(torch.sum(tmpmask, axis=0))
        self.target_layout = torch.stack(res_mask, 1)
        self.target_layout = self.target_layout.float()

        input_P1mask, _ = pose_utils.obtain_mask(input_P1mask, self.mask_id,
                                                 self.keys)
        input_P2mask, _ = pose_utils.obtain_mask(input_P2mask, self.mask_id,
                                                 self.keys)
        self.input_P1 = self.input_fullP1.repeat(3, 1, 1, 1) * input_P1mask
        self.input_P2 = self.input_fullP2.repeat(3, 1, 1, 1) * input_P2mask
        self.input_BP1 = pose_utils.cords_to_map(input['BP1'],
                                                 input['P1masks'],
                                                 self.channel_id, self.keys,
                                                 self.GPU, self.opt,
                                                 input['affine'])
        self.input_BP2 = pose_utils.cords_to_map(input['BP2'],
                                                 input['P2masks'],
                                                 self.channel_id, self.keys,
                                                 self.GPU, self.opt)

        self.image_paths = []
        for i in range(self.opt.batchSize):
            self.image_paths.append(
                os.path.splitext(input['P1_path'][i])[0] + '_2_' +
                input['P2_path'][i])