def main()

in c2/tools/extract_features.py [0:0]


def main():
    parser = argparse.ArgumentParser(
        description="Simple feature extraction"
    )
    parser.add_argument("--db_type", type=str, default='pickle',
                        help="Db type of the testing model")
    parser.add_argument("--model_name", type=str, default='r2plus1d',
                        help="Model name")
    parser.add_argument("--model_depth", type=int, default=18,
                        help="Model depth")
    parser.add_argument("--gpus", type=str, default=None,
                        help="Comma separated list of GPU devices to use")
    parser.add_argument("--num_gpus", type=int, default=1,
                        help="Number of GPU devices (instead of --gpus)")
    parser.add_argument("--scale_h", type=int, default=128,
                        help="Scale image height to")
    parser.add_argument("--scale_w", type=int, default=171,
                        help="Scale image width to")
    parser.add_argument("--crop_size", type=int, default=112,
                        help="Input image size (to crop to)")
    parser.add_argument("--clip_length_rgb", type=int, default=4,
                        help="Length of input clips")
    parser.add_argument("--sampling_rate_rgb", type=int, default=1,
                        help="Frame sampling rate")
    parser.add_argument("--num_labels", type=int, default=101,
                        help="Number of labels")
    parser.add_argument("--num_channels", type=int, default=3,
                        help="Number of channels")
    parser.add_argument("--batch_size", type=int, default=32,
                        help="Batch size, per-GPU")
    parser.add_argument("--load_model_path", type=str, default='',
                        required=True,
                        help="Load saved model for testing")
    parser.add_argument("--test_data", type=str, default="", required=True,
                        help="Dataset on which we will extract features")
    parser.add_argument("--output_path", type=str, default="",
                        help="Path to output pickle; defaults to "
                        + "features.pickle next to <test_data>")
    parser.add_argument("--use_cudnn", type=int, default=1,
                        help="Use CuDNN")
    parser.add_argument("--features", type=str, default="final_avg",
                        help="Comma-separated list of blob names to fetch")
    parser.add_argument("--num_iterations", type=int, default=-1,
                        help="Run only this many iterations")
    parser.add_argument("--num_decode_threads", type=int, default=4,
                        help="")
    parser.add_argument("--clip_length_of", type=int, default=8,
                        help="Frames of optical flow data")
    parser.add_argument("--sampling_rate_of", type=int, default=2,
                        help="Sampling rate for optial flows")
    parser.add_argument("--frame_gap_of", type=int, default=2,
                        help="Frame gap of optical flows")
    parser.add_argument("--input_type", type=int, default=0,
                        help="0=rgb, 1=optical flow")
    parser.add_argument("--flow_data_type", type=int, default=0,
                        help="0=Flow2C, 1=Flow3C, 2=FlowWithGray, 3=FlowWithRGB")
    parser.add_argument("--do_flow_aggregation", type=int, default=0,
                        help="whether to aggregate optical flow across "
                        + "multiple frames")
    parser.add_argument("--clip_per_video", type=int, default=1,
                        help="When clips_per_video > 1, sample this many "
                        + "clips uniformly in time")
    parser.add_argument("--get_video_id", type=int, default=0,
                        help="Output video id")
    parser.add_argument("--multi_label", type=int, default=0,
                        help="Multiple label csv file input")
    parser.add_argument("--sanity_check", type=int, default=0,
                        help="Sanity check on the accuracy/auc")
    parser.add_argument("--decode_type", type=int, default=2,
                        help="0: random, 1: uniform sampling, "
                        + "2: use starting frame")
    parser.add_argument("--channel_multiplier", type=float, default=1.0,
                        help="Channel multiplier")
    parser.add_argument("--use_dropout", type=int, default=0,
                        help="Use dropout at the prediction layer")
    parser.add_argument("--save_h5", type=int, default=0,
                        help="whether save to h5 or pickle, default to pickle")
    parser.add_argument("--bottleneck_multiplier", type=float, default=1.0,
                        help="Bottleneck multiplier")
    parser.add_argument("--get_start_frame", type=int, default=0,
                        help="Output clip start frame")
    parser.add_argument("--use_convolutional_pred", type=int, default=0,
                        help="using convolutional predictions")
    parser.add_argument("--video_res_type", type=int, default=0,
                        help="Video frame scaling option, 0: scaled by "
                        + "height x width; 1: scaled by short edge")
    parser.add_argument("--use_pool1", type=int, default=0,
                        help="use pool1 layer")
    parser.add_argument("--use_local_file", type=int, default=0,
                        help="use local file")
    parser.add_argument("--crop_per_clip", type=int, default=1,
                        help="number of spatial crops per clip")

    args = parser.parse_args()
    log.info(args)

    assert model_builder.model_validation(
        args.model_name,
        args.model_depth,
        args.clip_length_of if args.input_type else args.clip_length_rgb,
        args.crop_size if not args.use_convolutional_pred else 112
    )

    ExtractFeatures(args)