def parse_cmd()

in empose/helpers/configuration.py [0:0]


    def parse_cmd():
        parser = argparse.ArgumentParser()

        # General.
        parser.add_argument('--experiment_id', default=None, help='Use this experiment ID or create a new one.')
        parser.add_argument('--seed', type=int, default=None, help='Random generator seed.')
        parser.add_argument('--data_workers', type=int, default=4, help='Number of parallel threads for data loading.')
        parser.add_argument('--print_every', type=int, default=25, help='Print stats to console every so many iters.')
        parser.add_argument('--eval_every', type=int, default=700, help='Evaluate validation set every so many iters.')
        parser.add_argument('--tag', default='', help='A custom tag for this experiment.')
        parser.add_argument('--test', action='store_true', help='Will tag this run as a test run.')

        # Model configurations.
        parser.add_argument('--m_type', default='rnn', choices=['rnn', 'resnet', 'ief', 'lgd'], help='The type of model.')
        parser.add_argument('--m_estimate_shape', action='store_true', help='The model estimates the body shape.')
        parser.add_argument('--m_shape_hidden_size', default=256, help='Size of the network estimating the shape.')  # Only used in RNN/ResNet.
        parser.add_argument('--m_fk_loss', type=float, default=0.0, help='Add an FK loss, requires shape estimate.')
        parser.add_argument('--m_dropout', type=float, default=0.0, help='Dropout applied on inputs.')
        parser.add_argument('--m_hidden_size', type=int, default=1024, help='Number of hidden units.')
        parser.add_argument('--m_num_layers', type=int, default=2, help='Number of layers.')
        parser.add_argument('--m_learn_init_state', action='store_true', help='Learn initial hidden state.')
        parser.add_argument('--m_bidirectional', action='store_true', help='Bidirectional RNN.')

        # IEF model specific.
        parser.add_argument('--m_num_iterations', type=int, default=4, help='Number of iterations for IEF.')
        parser.add_argument('--m_dropout_hidden', type=float, default=0.0, help='Dropout applied inside layers.')
        parser.add_argument('--m_step_size', type=float, default=0.1, help='Step size for IEF update.')
        parser.add_argument('--m_reprojection_loss_weight', type=float, default=0.01, help='Reprojection loss weight.')
        parser.add_argument('--m_shape_loss_weight', type=float, default=1.0, help='Loss for the shape weight.')
        parser.add_argument('--m_pose_loss_weight', type=float, default=1.0, help='Loss for the shape weight.')
        parser.add_argument('--m_average_shape', action='store_true', help='Average the shape per sequence.')
        parser.add_argument('--m_use_gradient', action='store_true', help='Feed dL/dtheta to the network.')
        parser.add_argument('--m_skip_connections', action='store_true', help='Skip connections in the MLP.')
        parser.add_argument('--m_no_batch_norm', action='store_true', help="Don't use batch norm.")
        parser.add_argument('--m_rnn_init', action='store_true', help="Initial estimate is provided by an RNN.")
        parser.add_argument('--m_rnn_denoiser', action='store_true', help="Use an RNN to de-noise the markers.")
        parser.add_argument('--m_rnn_bidirectional', action='store_true', help="BiRNN or not.")
        parser.add_argument('--m_rnn_hidden_size', type=int, default=512, help="Hidden size for the init RNN.")
        parser.add_argument('--m_rnn_num_layers', type=int, default=2, help="Number of layers for the init RNN.")

        # Input data.
        parser.add_argument('--use_marker_pos', action='store_true', help='Feed marker positions.')
        parser.add_argument('--use_marker_ori', action='store_true', help='Feed marker orientations.')
        parser.add_argument('--use_marker_nor', action='store_true', help='Feed marker normal instead of orientation.')
        parser.add_argument('--use_real_offsets', action='store_true', help='Sampling is informed by real offset distribution.')
        parser.add_argument('--offset_noise_level', type=int, default=0, help='How much noise to add to real offsets.')
        parser.add_argument('--n_markers', type=int, default=12, help='Subselect a number of markers for the input.')

        # Data augmentation.
        parser.add_argument('--noise_num_markers', type=int, default=1, help='How many markers are affected by the noise.')
        parser.add_argument('--spherical_noise_strength', type=float, default=0.0, help='Magnitude of noise in %.')
        parser.add_argument('--spherical_noise_length', type=float, default=0.0, help='Temporal length of noise in %.')
        parser.add_argument('--suppression_noise_length', type=float, default=0.0, help='Marker suppression length.')
        parser.add_argument('--suppression_noise_value', type=float, default=0.0, help='Marker suppression value.')

        # Learning configurations.
        parser.add_argument('--lr', type=float, default=0.001, help='Learning rate.')
        parser.add_argument('--n_epochs', type=int, default=50, help='Number of epochs.')
        parser.add_argument('--bs_train', type=int, default=16, help='Batch size for the training set.')
        parser.add_argument('--bs_eval', type=int, default=16, help='Batch size for valid/test set.')
        parser.add_argument('--eval_window_size', type=int, default=None, help='Window size for evaluation on test set.')
        parser.add_argument('--window_size', type=int, default=120, help='Number of frames to extract per sequence.')
        parser.add_argument('--load', action='store_true', help='Whether to load the model with the given ID.')

        config = parser.parse_args()
        return Configuration(vars(config))