def main(save_id, gen_p, train_p, eval_p, backbone_id, return_eval=False, use_bottleneck=True, file_id=""):
    print("save_id: {0}, train_p : {1}, eval_p: {2}, backbone_id: {3}, ".format(save_id, train_p, eval_p, backbone_id))

    from model_def import define_model
    model_dict = define_model(backbone_id)

    num_segments = model_dict["num_segments"]
    bottleneck_size = model_dict["bottleneck_size"]
    dense_sample = model_dict["dense_sample"]
    dense_rate = model_dict["dense_rate"]

    dir_name = os.path.join("saved_models", save_id)  # lfd_params
    if not os.path.exists(dir_name):
        os.makedirs(dir_name)
    filename = os.path.join(dir_name, "../model")

    lfd_params = default_model_args(save_id=save_id, log_dir=dir_name,
                                    num_segments=num_segments, bottleneck_size=bottleneck_size,
                                    dense_sample=dense_sample, dense_rate=dense_rate)  # parse_model_args()

    if gen_p:
        print("Generating ITR Files")
        model = Classifier(lfd_params, filename, backbone_id, use_feature_extractor=True, use_spatial_lstm=False,
                           spatial_train=False, use_bottleneck=use_bottleneck)

        generate_iad_files(lfd_params, model, "train", backbone=backbone_id)
        generate_iad_files(lfd_params, model, "evaluation", backbone=backbone_id)

    if train_p:
        model = Classifier(lfd_params, filename, backbone_id, use_feature_extractor=False, use_spatial_lstm=True,
                                spatial_train=True, use_bottleneck=use_bottleneck)

        model = train(lfd_params, model, verbose=True, input_dtype="iad")
        model.save_model()

    if eval_p:
        model = Classifier(lfd_params, filename, backbone_id, use_feature_extractor=False, use_spatial_lstm=True,
                                spatial_train=False, use_bottleneck=use_bottleneck)

        train_df = evaluate(lfd_params, model, mode="train", input_dtype="iad")
        train_df["mode"] = ["train"]*len(train_df)
        eval_df = evaluate(lfd_params, model, mode="evaluation", verbose=True, input_dtype="iad")
        eval_df["mode"] = ["evaluation"] * len(eval_df)
        df = pd.concat([train_df, eval_df])

        if return_eval:
            return df

        df["repeat"] = ["1"]*len(df)

        out_filename = os.path.join(lfd_params.args.output_dir, "output_" + save_id + file_id+".csv")
        df.to_csv(out_filename)
        print("Output placed in: " + out_filename)
def exec_classifier_backbone(args):

    # Train
    if args.eval_only:
        model = Classifier(lfd_params,
                           filename,
                           backbone_id,
                           use_feature_extractor=False,
                           use_spatial=True,
                           spatial_train=True,
                           use_bottleneck=use_bottleneck)

        model = train(lfd_params, model, verbose=True)
        model.save_model()

    # Evaluate
    model = Classifier(lfd_params,
                       filename,
                       backbone_id,
                       use_feature_extractor=False,
                       use_spatial=True,
                       spatial_train=False,
                       use_bottleneck=use_bottleneck)

    train_df = evaluate(lfd_params, model, mode="train")
    train_df["mode"] = ["train"] * len(train_df)
    eval_df = evaluate(lfd_params, model, mode="evaluation", verbose=True)
    eval_df["mode"] = ["evaluation"] * len(eval_df)
    df = pd.concat([train_df, eval_df])
    df["repeat"] = ["1"] * len(df)

    out_filename = os.path.join(lfd_params.args.output_dir,
                                "output_" + save_id + "_spatial.csv")
    df.to_csv(out_filename)
    print("Output placed in: " + out_filename)

    return 0
Пример #3
0
def main(save_id, gen_p, train_p, eval_p, backbone_id, use_bottleneck=True):
    from model_def import define_model
    model_dict = define_model(backbone_id)

    num_segments = model_dict["num_segments"]
    bottleneck_size = model_dict["bottleneck_size"]
    dense_sample = model_dict["dense_sample"]
    dense_rate = model_dict["dense_rate"]

    dir_name = os.path.join("saved_models", save_id)  # lfd_params
    if not os.path.exists(dir_name):
        os.makedirs(dir_name)
    filename = os.path.join(dir_name, "../model")

    lfd_params = default_model_args(save_id=save_id,
                                    log_dir=dir_name,
                                    num_segments=num_segments,
                                    bottleneck_size=bottleneck_size,
                                    dense_sample=dense_sample,
                                    dense_rate=dense_rate)

    if gen_p:
        # Generate IADs
        print("Generating ITR Files")
        model = Classifier(lfd_params,
                           filename,
                           backbone_id,
                           use_feature_extractor=True,
                           use_spatial_lstm=False,
                           spatial_train=False,
                           use_bottleneck=use_bottleneck)

        generate_iad_files(lfd_params, model, "train", backbone=backbone_id)
        generate_iad_files(lfd_params,
                           model,
                           "evaluation",
                           backbone=backbone_id)

    if train_p:
        print("Training Policy")
        model = PolicyLearner(lfd_params,
                              filename,
                              backbone_id,
                              use_feature_extractor=False,
                              use_spatial_lstm=True,
                              spatial_train=True,
                              policy_train=True,
                              use_bottleneck=use_bottleneck)

        # Train policy learner
        model = train(lfd_params,
                      model,
                      verbose=False,
                      input_dtype="iad",
                      ablation=False)
        model.save_model()

    if eval_p:
        model = PolicyLearner(lfd_params,
                              filename,
                              backbone_id,
                              use_feature_extractor=False,
                              use_spatial_lstm=True,
                              policy_train=False,
                              use_bottleneck=use_bottleneck)

        df = evaluate_action_trace(lfd_params,
                                   model,
                                   verbose=True,
                                   input_dtype="iad")
        out_filename = os.path.join(lfd_params.args.output_dir,
                                    "output_" + save_id + "_action_trace.csv")
        df.to_csv(out_filename)
        print("Output placed in: " + out_filename)

        df = evaluate_action_trace(lfd_params,
                                   model,
                                   input_dtype="iad",
                                   ablation=True,
                                   verbose=True,
                                   mode="train")
        out_filename = os.path.join(
            lfd_params.args.output_dir,
            "output_" + save_id + "_action_trace_ablation_train.csv")
        df.to_csv(out_filename)
        print("Output placed in: " + out_filename)

        df = evaluate_action_trace(lfd_params,
                                   model,
                                   input_dtype="iad",
                                   ablation=True,
                                   verbose=True,
                                   mode="evaluation")
        out_filename = os.path.join(
            lfd_params.args.output_dir,
            "output_" + save_id + "_action_trace_ablation_eval.csv")
        df.to_csv(out_filename)
        print("Output placed in: " + out_filename)