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)
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
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)