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)