Пример #1
0
def collate_fn_testing(data):
    im_batch, im_scale_batch, anchors, _, _, _ = \
        data_layer_keep_aspect_ratio_batch(data, is_training=False)

    input = torch.stack(everything2tensor(im_batch))
    gt_boxes_list = [d[2]['gt_boxes'] for d in data]
    im_scale_list = [d[1] for d in data]
    image_ids = [d[3] for d in data]

    return input, anchors, im_scale_list, image_ids, gt_boxes_list
Пример #2
0
def collate_fn(data):
    # print ('collate_fn:', len(data))
    im_batch, im_scale_batch, anchors, rpn_targets, inst_masks_batch, mask_batch = \
        data_layer_keep_aspect_ratio_batch(data, is_training=True)

    input = torch.stack(everything2tensor(im_batch))
    # input = np.stack(im_batch)

    gt_boxes_list = [d[2]['gt_boxes'] for d in data]
    image_ids = [d[3] for d in data]
    im_scale_list = [d[1] for d in data]

    labels = torch.stack(
        everything2tensor([d[2]['rpn_targets'][0] for d in data]))
    # label_weights = torch.stack(everything2tensor(rpn_targets['labels_weights_batch']))
    bbox_targets = torch.stack(
        everything2tensor([d[2]['rpn_targets'][1] for d in data]))
    bbox_inside_weights = torch.stack(
        everything2tensor([d[2]['rpn_targets'][2] for d in data]))

    rpn_targets = [labels, bbox_targets, bbox_inside_weights]
    mask = torch.stack(everything2tensor(mask_batch))
    inst_masks = everything2tensor(
        inst_masks_batch)  # a list of (N, H, W). N can be changable

    return input, anchors, im_scale_list, image_ids, gt_boxes_list, rpn_targets, inst_masks, mask
Пример #3
0
    def __getitem__(self, i):

        img_id = self._imgs[i][0]
        img_name = self._imgs[i][1]['file_name']
        split = img_name.split('_')[1]
        img_name = os.path.join(self._data_dir, split, img_name)

        coco = self._cocos[self._imgs[i][2]]
        # if self._split == 'trainval2014' and not self._imgs[i][2]:
        #     coco = self._cocos[1]

        height, width = self._imgs[i][1]['height'], self._imgs[i][1]['width']
        bboxes, classes, inst_masks, mask = self._get_coco_masks(
            coco, img_id, height, width, img_name)
        # img = np.array(Image.open(img_name))

        # do some preprocessings here
        im, TARGETS, inst_masks, mask, ori_im, ANNOTATIONS = \
            self._data_handler(img_name, bboxes, classes, inst_masks, mask, self._is_training, self.ANCHORS)

        im = np.transpose(im, [2, 0, 1])  # c, h, w

        if self._is_training:
            ih, iw = im.shape[1], im.shape[2]
            # masks = np.transpose(masks, [0, 3, 1, 2]) # n,
            # mask = mask[np.newaxis, :, :] # 1xhxw
            downsampled_mask = []
            for _, stride in enumerate(cfg.strides):
                assert ih % stride == iw % stride == 0, '{} {} {}'.format(
                    ih, iw, stride)
                h, w = ih / stride, iw / stride
                downsampled_mask.append(
                    cv2.resize(mask, (h, w),
                               interpolation=cv2.INTER_NEAREST).astype(
                                   np.int64))

            # to tensor
            im = everything2tensor(im.copy())
            TARGETS = everything2tensor(TARGETS)
            inst_masks = everything2tensor(inst_masks.astype(np.int64).copy())
            mask = everything2tensor(mask.astype(np.int64).copy())
            downsampled_mask = everything2tensor(downsampled_mask)
        else:
            """testing"""
            im = everything2tensor(im.copy())
            TARGETS = inst_masks = mask = downsampled_mask = ANNOTATIONS = []

        # return image id
        img_id = self._imgs[i][0]

        return im, TARGETS, inst_masks, mask, downsampled_mask, ori_im, ANNOTATIONS, img_id
Пример #4
0
    def __getitem__(self, i):
        img_name = self._image_list[i]
        im = cv2.imread(img_name)
        height, width, _ = im.shape

        # empty annotations
        bboxes = np.asarray([[0, 0, width - 1, height - 1]], dtype=np.float32)
        classes = np.asarray((-1, ), dtype=np.int32)
        inst_masks = np.zeros([1, height, width], dtype=np.int32)
        mask = np.zeros([height, width], dtype=np.int32)

        im, TARGETS, inst_masks, mask, ori_im, ANNOTATIONS = \
            self._data_handler(img_name, bboxes, classes, inst_masks, mask, self._is_training, self.ANCHORS)

        im = np.transpose(im, [2, 0, 1])  # c, h, w
        im = everything2tensor(im.copy())
        TARGETS = inst_masks = mask = downsampled_mask = []
        img_id = os.path.split(img_name)[1]

        return im, TARGETS, inst_masks, mask, downsampled_mask, ori_im, ANNOTATIONS, img_id