in src/util/config.py [0:0]
def init(cls, path=None, only_known_args=False):
if cls._parser is not None:
return cls._parser
cls._parser = configargparse.ArgParser()
p = cls._parser
p.add_argument('-c', '--config', is_config_file=True)
# Data params
p.add_argument('-data', '--data', required=True, type=str)
p.add_argument('-log', '--logDir', required=True, type=str)
p.add_argument('--trainStatsName', default='logs.csv', type=str)
p.add_argument('--preTrained', default=[], action='append', type=str,
help="load pretrained weights (and encoding)")
p.add_argument('--depthTransform', default="linear", type=str,
help="depth transform [log, linear], default = linear", choices=["log", "linear"])
p.add_argument('-s', '--scale', default=2, type=int,
help="scale factor for image (4 means reduction to fourth of size)")
p.add_argument('--scaleInterpolation', default="median", type=str,
help="how the depth data is interpolated when downsampling with scale",
choices=["area", "leaveOut", "median"])
# Feature params
p.add_argument('-if', '--inFeatures', default=[], action='append', type=str,
choices=["SpherePosDir", "RayMarchFromPoses", "RayMarchFromCoarse"])
p.add_argument('-of', '--outFeatures', default=[], action='append', type=str,
choices=["ClassifiedDepth", "RGBARayMarch"])
p.add_argument('-pe', '--posEnc', default=[], action='append', type=str, choices=["none", "nerf"])
p.add_argument('--posEncArgs', default=[], type=str, action='append',
help="special parameters for positional encoding")
p.add_argument('--raySampleInput', default=[], type=int, action='append',
help="Add additional inputs for sample locations along the ray (supported in SpherePosDir).")
# Network params
p.add_argument('-act', '--activation', default=[], type=str, action='append',
choices=["relu", "nerf"])
p.add_argument('-l', '--layers', default=[], type=int, action='append', help="number of layers")
p.add_argument('-lw', '--layerWidth', default=[], type=int, action='append', help="width of each layer")
p.add_argument('-sk', '--skips', default=[], type=str, action='append', help="skip information")
# Training params
p.add_argument('-d', '--device', default=0, type=int, help="Which cuda device to use")
p.add_argument('-e', '--epochs', default=300001, type=int, help="training epochs")
p.add_argument('--batchImages', default=-1, type=int,
help="Number of images used per batch. Set to -1 to use all.")
p.add_argument('-smpl', '--samples', default=128, type=int, help="random sample per image for each epoch")
p.add_argument('--lrate', default=0.0001, type=float,
help="Learning rate used in optimizer")
p.add_argument('--lrate_decay', default=0.1, type=float,
help="Learning rate decay gamma used in optimizer")
p.add_argument('--lrate_decay_steps', default=300000, type=int,
help="How many steps until the lrate_decay parameter is fully applied")
p.add_argument('--losses', default=[], type=str,
choices=["none", "None", "MSE", "LimitedDepthMSE",
"MultiDepthLimitedMSE", "BCEWithLogitsLoss", "CrossEntropyLoss",
"CrossEntropyLossWeighted", "MSEPlusWeightAccum"],
action='append', help="losses for each output of the network")
p.add_argument('--lossWeights', default=[], type=float, action='append',
help="loss weights for each output of the network")
p.add_argument('--lossAlpha', default=[], type=float, action='append',
help="loss alpha for combined losses")
p.add_argument('--lossBeta', default=[], type=float, action='append',
help="loss beta for combined losses")
p.add_argument('-r', '--randomSeed', default=-1, type=int,
help="Random seed for numpy and pytorch. Set to -1 to use random seed.")
p.add_argument('--sampleGenerator', default="PreGeneratedRSequenceGenerator", type=str,
choices=["PreGeneratedRSequenceGenerator", "PreGeneratedUniformRandomSequenceGenerator"])
p.add_argument('--storeFullData', default=False, action="store_true",
help="Store full feature data (images, etc.) on the GPU, or only batch-per-batch data.")
p.add_argument("--numWorkers", default=8, type=int, help="Number of workers used for runtime data loading")
# PreTraining params
p.add_argument('--epochsPretrain', default=[], type=int, action='append',
help="pretrain each network on GT until epoch x. Set to -1 to skip pretraining")
p.add_argument('--batchImagesPretrain', default=-1, type=int,
help="number of images used per batch for Pretraining. Set to -1 to use batchImages")
p.add_argument('--samplesPretrain', default=-1, type=int,
help="random sample per image for each epoch for pretraining, set to -1 to use samples")
p.add_argument('--epochsLockWeightsBefore', default=[], type=int, action='append',
help="weights will not be updated before epoch X. -1 if never locked")
p.add_argument('--epochsLockWeightsAfter', default=[], type=int, action='append',
help="weights will not be updated after epoch X. -1 if never locked")
# Training Output params
p.add_argument('-Eckpt', '--epochsCheckpoint', default=10000, type=int, help="save checkpoint after epochs")
p.add_argument('-Er', '--epochsRender', default=10000, type=int, help="render image after epochs")
p.add_argument('-Ev', '--epochsValidate', default=50000, type=int, help="validate model after epochs")
p.add_argument('--epochsVideo', default=-1, type=int,
help="render video after epochs -> -1 means no video is rendered during training")
p.add_argument('--videoFrames', default=-1, type=int, help="number of images render per video (-1 means all)")
p.add_argument('--inferenceChunkSize', default=65536, type=int,
help="split number of inference inputs into chunks of this size to save memory")
p.add_argument("-nV", "--nonVerbose", default=False, action="store_true", help="does not print epoch, loss and "
"PSNR to tqdm bar if set")
# NeRF/Raymarching-params
p.add_argument("--zNear", default=[], type=float, action='append',
help="z near for raymarch-based feature sets, such as RayMarchFromPoses. NeRF uses 2 for Lego.")
p.add_argument("--zFar", default=[], type=float, action='append',
help="z far for raymarch-based feature sets, such as RayMarchFromPoses. NeRF uses 6 for Lego")
p.add_argument("--numRaymarchSamples", default=[], type=int, action='append',
help="number of samples for raymarch-based feature sets, such as RayMarchFromPoses")
p.add_argument("--rayMarchSampler", default=[], type=str, action='append',
choices=["none", "LinearlySpacedZNearZFar", "LinearlySpacedFromDepth",
"LinearlySpacedFromMultiDepth", "FromClassifiedDepth"])
p.add_argument("--deterministicSampling", default=False, action="store_true",
help="whether or not to use deterministic ray sampling")
p.add_argument("--rayMarchSamplingStep", default=[], type=float, action='append')
p.add_argument("--rayMarchSamplingNoise", default=[], type=float, action='append')
p.add_argument('--trainWithGTDepth', default=False, action="store_true")
p.add_argument("--rayMarchNormalization", default=[], type=str, action='append',
help="way to normalize coordinates before feature encoding, default is MaxDepth to transform "
"coordinates in a <1 range",
choices=["None", "Centered", "MaxDepth", "MaxDepthCentered", "LogCentered",
"InverseDistCentered", "InverseSqrtDistCentered"])
p.add_argument("--rayMarchNormalizationCenter", default=[], type=float, action='append',
help='Use this center instead of view cell center')
p.add_argument("--perturb", default=False, action="store_true",
help="Whether or not to jitter samples during training. 0 -> no jittering.")
# Video camera params
p.add_argument("--camType", default="PredefinedCamera", type=str,
choices=["CenteredCamera", "RotatingCamera", "TranslatingCamera", "PredefinedCamera",
"ViewCellForwardCamera"])
p.add_argument("--camCenter", default=[], type=float, action='append', help="center of camera")
p.add_argument("--camRadius", default=4, type=float, help="radius around 0,0,0")
p.add_argument("--camUpAngle", default=20, type=float, help="angle around up axis")
p.add_argument("--camRightAngle", default=20, type=float, help="angle around right axis")
p.add_argument("--movementVector", default=[], type=float, action='append',
help="movement vector for translating camera")
p.add_argument('--camPath', default='cam_path_pan', type=str)
# Test params
p.add_argument("--checkPointName", default="opt.weights", type=str, help="checkpoint name to use for test.py")
p.add_argument("--outputNetworkRaw", default=[], type=str, action='append',
help="Store the raw inference_dict outputs of the network for each element in this list")
p.add_argument("--outputVideoName", default="test_video", type=str, help="output video name for test.py")
# Multi Depth params
p.add_argument("--multiDepthFeatures", default=[], action='append', type=int,
help="number of depth features produced for multi depth features")
p.add_argument("--multiDepthWindowSize", default=[], action='append', type=str,
help="window size for multi depth generation")
p.add_argument("--multiDepthIgnoreValue", default=[], action='append', type=float,
help="value to encode empty pixel")
# Evaluation params
p.add_argument("--performEvaluation", default=False, action="store_true",
help="performs evaluation of the trained net after training")
if only_known_args is True:
if path is None:
args, unknown = p.parse_known_args()
return args
else:
args, unknown = p.parse_known_args(['-c', path])
return args
if path is None:
return p.parse_args()
else:
return p.parse_args(['-c', path])