Пример #1
0
def FasterRcnn_eval(dataset_path, ckpt_path, ann_file):
    """FasterRcnn evaluation."""
    ds = create_fasterrcnn_dataset(dataset_path, batch_size=config.test_batch_size, is_training=False)
    net = Faster_Rcnn_Resnet50(config)
    param_dict = load_checkpoint(ckpt_path)
    load_param_into_net(net, param_dict)
    net.set_train(False)

    eval_iter = 0
    total = ds.get_dataset_size()
    outputs = []
    dataset_coco = COCO(ann_file)

    print("\n========================================\n")
    print("total images num: ", total)
    print("Processing, please wait a moment.")
    max_num = 128
    for data in ds.create_dict_iterator(num_epochs=1):
        eval_iter = eval_iter + 1

        img_data = data['image']
        img_metas = data['image_shape']
        gt_bboxes = data['box']
        gt_labels = data['label']
        gt_num = data['valid_num']

        start = time.time()
        # run net
        output = net(img_data, img_metas, gt_bboxes, gt_labels, gt_num)
        end = time.time()
        print("Iter {} cost time {}".format(eval_iter, end - start))

        # output
        all_bbox = output[0]
        all_label = output[1]
        all_mask = output[2]

        for j in range(config.test_batch_size):
            all_bbox_squee = np.squeeze(all_bbox.asnumpy()[j, :, :])
            all_label_squee = np.squeeze(all_label.asnumpy()[j, :, :])
            all_mask_squee = np.squeeze(all_mask.asnumpy()[j, :, :])

            all_bboxes_tmp_mask = all_bbox_squee[all_mask_squee, :]
            all_labels_tmp_mask = all_label_squee[all_mask_squee]

            if all_bboxes_tmp_mask.shape[0] > max_num:
                inds = np.argsort(-all_bboxes_tmp_mask[:, -1])
                inds = inds[:max_num]
                all_bboxes_tmp_mask = all_bboxes_tmp_mask[inds]
                all_labels_tmp_mask = all_labels_tmp_mask[inds]

            outputs_tmp = bbox2result_1image(all_bboxes_tmp_mask, all_labels_tmp_mask, config.num_classes)

            outputs.append(outputs_tmp)

    eval_types = ["bbox"]
    result_files = results2json(dataset_coco, outputs, "./results.pkl")

    coco_eval(result_files, eval_types, dataset_coco, single_result=True)
Пример #2
0
                    type=str,
                    default='',
                    help='fasterrcnn ckpt file.')
parser.add_argument('--output_file',
                    type=str,
                    default='',
                    help='fasterrcnn output air name.')
parser.add_argument('--file_format',
                    type=str,
                    choices=["AIR", "ONNX", "MINDIR"],
                    default='AIR',
                    help='file format')
args = parser.parse_args()

if __name__ == '__main__':
    net = Faster_Rcnn_Resnet50(config=config)

    param_dict = load_checkpoint(args.ckpt_file)
    load_param_into_net(net, param_dict)

    img = Tensor(
        np.zeros(
            [config.test_batch_size, 3, config.img_height, config.img_width]),
        ms.float16)
    img_metas = Tensor(
        np.random.uniform(0.0, 1.0, size=[config.test_batch_size, 4]),
        ms.float16)
    gt_bboxes = Tensor(
        np.random.uniform(0.0,
                          1.0,
                          size=[config.test_batch_size, config.num_gts]),
Пример #3
0
def create_network(name, *args, **kwargs):
    if name == "faster_rcnn":
        return Faster_Rcnn_Resnet50(config=config)
    raise NotImplementedError(f"{name} is not implemented in the repo")