Beispiel #1
0
def main():
    args = parse_args()
    if args.amp:
        import os
        os.environ['AMP'] = "1"
    cfg = get_config(args.config, overrides=args.override)

    _, world_size = get_dist_info()
    parallel = world_size != 1
    if parallel:
        paddle.distributed.init_parallel_env()

    if args.test:
        test_model(cfg, weights=args.weights, parallel=parallel)
    elif args.train_dali:
        train_dali(cfg, weights=args.weights, parallel=parallel)
    elif args.multigrid:
        train_model_multigrid(cfg, world_size, validate=args.validate)
    else:
        train_model(cfg,
                    weights=args.weights,
                    parallel=parallel,
                    validate=args.validate,
                    fleet=args.fleet,
                    amp=args.amp)
Beispiel #2
0
def main():
    args = parse_args()
    cfg, model_name = _trim(get_config(args.config, show=False), args)
    print(f"Building model({model_name})...")
    model = build_model(cfg)
    assert osp.isfile(
        args.pretrained_params
    ), f"pretrained params ({args.pretrained_params} is not a file path.)"

    if not os.path.isdir(args.output_path):
        os.makedirs(args.output_path)

    print(f"Loading params from ({args.pretrained_params})...")
    params = paddle.load(args.pretrained_params)
    model.set_dict(params)
    model.eval()

    model = to_static(model,
                      input_spec=[
                          paddle.static.InputSpec(shape=[
                              None, args.num_seg, 3, args.img_size,
                              args.img_size
                          ],
                                                  dtype='float32'),
                      ])
    paddle.jit.save(model, osp.join(args.output_path, model_name))
    print(
        f"model ({model_name}) has been already saved in ({args.output_path}).")
Beispiel #3
0
def main():
    args = parse_args()
    cfg, model_name = _trim(get_config(args.config, show=False))
    print(f"Building model({model_name})...")
    model = build_model(cfg)

    params_info = paddle.summary(model, (1, 8, 3, 224, 224))

    print(params_info)
Beispiel #4
0
def main():
    args = parse_args()
    cfg = get_config(args.config, overrides=args.override)

    dataset = build_dataset((cfg.DATASET.test, cfg.PIPELINE.test))
    _, world_size = get_dist_info()
    parallel = world_size != 1
    if parallel:
        paddle.distributed.init_parallel_env()

    model = build_model(cfg.MODEL)

    test_model(model, dataset, cfg, args.weights, world_size)
Beispiel #5
0
def main():
    args = parse_args()
    cfg, model_name = _trim(get_config(args.config, show=False), args)
    print(f"Building model({model_name})...")
    model = build_model(cfg)

    img_size = args.img_size
    num_seg = args.num_seg
    #NOTE: only support tsm now, will refine soon
    params_info = paddle.summary(model, (1, num_seg, 3, img_size, img_size))
    print(params_info)

    if args.FLOPs:
        flops_info = paddle.flops(model, [1, num_seg, 3, img_size, img_size],
                                  print_detail=True)
        print(flops_info)
Beispiel #6
0
def main():
    args = parse_args()
    cfg = get_config(args.config, overrides=args.override)

    _, world_size = get_dist_info()
    parallel = world_size != 1
    if parallel:
        paddle.distributed.init_parallel_env()

    if args.test:
        test_model(cfg, weights=args.weights, parallel=parallel)
    else:
        train_model(cfg,
                    weights=args.weights,
                    parallel=parallel,
                    validate=args.validate)
Beispiel #7
0
def main():
    args = parse_args()
    cfg, model_name = trim_config(get_config(args.config, show=False))
    print(f"Building model({model_name})...")
    model = build_model(cfg.MODEL)
    assert osp.isfile(
        args.pretrained_params
    ), f"pretrained params ({args.pretrained_params} is not a file path.)"

    if not os.path.isdir(args.output_path):
        os.makedirs(args.output_path)

    print(f"Loading params from ({args.pretrained_params})...")
    params = paddle.load(args.pretrained_params)
    model.set_dict(params)

    model.eval()

    input_spec = get_input_spec(cfg.INFERENCE, model_name)
    model = to_static(model, input_spec=input_spec)
    paddle.jit.save(model, osp.join(args.output_path, model_name))
    print(
        f"model ({model_name}) has been already saved in ({args.output_path}).")
Beispiel #8
0
def main():
    args = parse_args()
    cfg = get_config(args.config, show=False)
    model_name = cfg.model_name
    print(f"Inference model({model_name})...")
    InferenceHelper = build_inference_helper(cfg.INFERENCE)

    if args.enable_benchmark:
        assert args.use_gpu is True

    # HALF precission predict only work when using tensorrt
    if args.use_fp16 is True:
        assert args.use_tensorrt is True

    predictor = create_paddle_predictor(args)

    # get input_tensor and output_tensor
    input_names = predictor.get_input_names()
    output_names = predictor.get_output_names()
    input_tensor_list = []
    output_tensor_list = []
    for item in input_names:
        input_tensor_list.append(predictor.get_input_handle(item))
    for item in output_names:
        output_tensor_list.append(predictor.get_output_handle(item))

    test_num = 500
    test_time = 0.0
    if not args.enable_benchmark:
        # Prepare input
        inputs = InferenceHelper.preprocess(args.input_file)

        # Run inference
        for i in range(len(input_tensor_list)):
            input_tensor_list[i].copy_from_cpu(inputs[i])
        predictor.run()
        output = []
        for j in range(len(output_tensor_list)):
            output.append(output_tensor_list[j].copy_to_cpu())

        # Post process output
        InferenceHelper.postprocess(output)
    else:  # benchmark only for ppTSM
        for i in range(0, test_num + 10):
            inputs = []
            inputs.append(
                np.random.rand(args.batch_size, 8, 3, 224,
                               224).astype(np.float32))
            start_time = time.time()
            for j in range(len(input_tensor_list)):
                input_tensor_list[j].copy_from_cpu(inputs[j])

            predictor.run()

            output = []
            for j in range(len(output_tensor_list)):
                output.append(output_tensor_list[j].copy_to_cpu())

            if i >= 10:
                test_time += time.time() - start_time
            #time.sleep(0.01)  # sleep for T4 GPU

        fp_message = "FP16" if args.use_fp16 else "FP32"
        trt_msg = "using tensorrt" if args.use_tensorrt else "not using tensorrt"
        print("{0}\t{1}\t{2}\tbatch size: {3}\ttime(ms): {4}".format(
            model_name, trt_msg, fp_message, args.batch_size,
            1000 * test_time / test_num))