コード例 #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