예제 #1
0
def _test_preprocess_true_boxes():
    dataset = Dataset('train')
    # anno = '/home/ylqi007/work/DATA/VOC2007/test/JPEGImages/004538.jpg 215,35,308,224,14 41,77,403,367,12'
    anno = '/home/ylqi007/work/DATA/VOC2007/test/JPEGImages/004538.jpg 215,35,308,224,14'
    image, bboxes = dataset.parse_annotation(annotation=anno)
    print("bboxes after dataset.parse_annotation()\n", bboxes)
    dataset.preprocess_true_boxes(bboxes)
예제 #2
0
    def predict(self, image, annotation):
        dataset_obj = Dataset('test')
        dataset_obj.train_input_size = cfg.TEST.INPUT_SIZE
        dataset_obj.strides = np.array(cfg.YOLO.STRIDES)
        dataset_obj.train_output_sizes = dataset_obj.train_input_size // dataset_obj.strides

        org_image = np.copy(image)
        org_h, org_w, _ = org_image.shape

        image_data = utils.image_preporcess(image,
                                            [self.input_size, self.input_size])
        image_data = image_data[np.newaxis, ...]

        _, gt_bboxes = dataset_obj.parse_annotation(annotation)
        label_sbbox, label_mbbox, label_lbbox, sbboxes, mbboxes, lbboxes = dataset_obj.preprocess_true_boxes(
            gt_bboxes)
        label_sbbox = label_sbbox[np.newaxis, ...]
        label_mbbox = label_mbbox[np.newaxis, ...]
        label_lbbox = label_lbbox[np.newaxis, ...]
        sbboxes = sbboxes[np.newaxis, ...]
        mbboxes = mbboxes[np.newaxis, ...]
        lbboxes = lbboxes[np.newaxis, ...]

        pred_sbbox, pred_mbbox, pred_lbbox, loss = self.sess.run(
            [self.pred_sbbox, self.pred_mbbox, self.pred_lbbox, self.loss],
            feed_dict={
                self.input_data: image_data,
                self.label_sbbox: label_sbbox,
                self.label_mbbox: label_mbbox,
                self.label_lbbox: label_lbbox,
                self.true_sbboxes: sbboxes,
                self.true_mbboxes: mbboxes,
                self.true_lbboxes: lbboxes,
                self.trainable: False
            })

        pred_bbox = np.concatenate([
            np.reshape(pred_sbbox, (-1, 5 + self.num_classes)),
            np.reshape(pred_mbbox, (-1, 5 + self.num_classes)),
            np.reshape(pred_lbbox, (-1, 5 + self.num_classes))
        ],
                                   axis=0)
        bboxes = utils.postprocess_boxes(pred_bbox, (org_h, org_w),
                                         self.input_size, self.score_threshold)
        bboxes = utils.nms(bboxes, self.iou_threshold)

        return bboxes, loss
예제 #3
0
def annotation_flip_test():
    dataset = Dataset('train')
    anno = '/home/ylqi007/work/DATA/VOC2007/test/JPEGImages/004538.jpg 215,35,308,224,14 41,77,403,367,12'
    # anno = '/home/ylqi007/work/DATA/VOC2007/test/JPEGImages/007741.jpg 45,254,67,289,2 87,124,119,152,2 66,108,100,121,2 242,66,295,113,2 150,144,192,192,2 221,178,316,227,2 316,198,416,253,2 354,149,390,174,2 253,174,299,199,2 312,75,338,91,2 207,78,235,95,2'
    image, bboxes = dataset.parse_annotation(annotation=anno)
    image = image.copy(
    )  # https://stackoverflow.com/questions/30249053/python-opencv-drawing-errors-after-manipulating-array-with-numpy
    flip_img, flip_bboxes = np.copy(image), np.copy(bboxes)
    _, w, _ = flip_img.shape
    flip_img = flip_img[:, ::-1, :]
    flip_bboxes[:, [0, 2]] = w - flip_bboxes[:, [2, 0]]
    flip_img = flip_img.copy()

    print("========== original box ==========")
    # show_image('original', image)
    show_image('original_with_bbox', image, bboxes)

    print("========== flipped box ==========")
    show_image('flipped_with_bbox', flip_img, flip_bboxes)