arguments.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. # Copyright (c) 2018-present, Facebook, Inc.
  2. # All rights reserved.
  3. #
  4. # This source code is licensed under the license found in the
  5. # LICENSE file in the root directory of this source tree.
  6. #
  7. import argparse
  8. import os
  9. def parse_args(video_path, video_analyzed_path):
  10. video_name = os.path.basename(video_path)
  11. reconstructed_video_path = video_path.replace(".mp4", "_reconstructed.mp4")
  12. parser = argparse.ArgumentParser(description='Training script')
  13. # General arguments
  14. parser.add_argument('-d', '--dataset', default='custom', type=str, metavar='NAME',
  15. help='target dataset') # h36m or humaneva
  16. parser.add_argument('-k', '--keypoints', default='cpn_ft_h36m_dbb', type=str, metavar='NAME',
  17. help='2D detections to use')
  18. parser.add_argument('-str', '--subjects-train', default='S1,S5,S6,S7,S8', type=str, metavar='LIST',
  19. help='training subjects separated by comma')
  20. parser.add_argument('-ste', '--subjects-test', default='S9,S11', type=str, metavar='LIST',
  21. help='test subjects separated by comma')
  22. parser.add_argument('-sun', '--subjects-unlabeled', default='', type=str, metavar='LIST',
  23. help='unlabeled subjects separated by comma for self-supervision')
  24. parser.add_argument('-a', '--actions', default='*', type=str, metavar='LIST',
  25. help='actions to train/test on, separated by comma, or * for all')
  26. parser.add_argument('-c', '--checkpoint', default='checkpoint', type=str, metavar='PATH',
  27. help='checkpoint directory')
  28. parser.add_argument('--checkpoint-frequency', default=10, type=int, metavar='N',
  29. help='create a checkpoint every N epochs')
  30. parser.add_argument('-r', '--resume', default='', type=str, metavar='FILENAME',
  31. help='checkpoint to resume (file name)')
  32. parser.add_argument('--evaluate', default='pretrained_h36m_detectron_coco.bin', type=str, metavar='FILENAME',
  33. help='checkpoint to evaluate (file name)')
  34. # parser.add_argument('--render', action='store_true', help='visualize a particular video')
  35. parser.add_argument('--render', default=True)
  36. parser.add_argument('--by-subject', action='store_true', help='break down error by subject (on evaluation)')
  37. parser.add_argument('--export-training-curves', action='store_true', help='save training curves as .png images')
  38. # Model arguments
  39. parser.add_argument('-s', '--stride', default=1, type=int, metavar='N', help='chunk size to use during training')
  40. parser.add_argument('-e', '--epochs', default=60, type=int, metavar='N', help='number of training epochs')
  41. parser.add_argument('-b', '--batch-size', default=1024, type=int, metavar='N',
  42. help='batch size in terms of predicted frames')
  43. parser.add_argument('-drop', '--dropout', default=0.25, type=float, metavar='P', help='dropout probability')
  44. parser.add_argument('-lr', '--learning-rate', default=0.001, type=float, metavar='LR', help='initial learning rate')
  45. parser.add_argument('-lrd', '--lr-decay', default=0.95, type=float, metavar='LR',
  46. help='learning rate decay per epoch')
  47. parser.add_argument('-no-da', '--no-data-augmentation', dest='data_augmentation', action='store_false',
  48. help='disable train-time flipping')
  49. parser.add_argument('-no-tta', '--no-test-time-augmentation', dest='test_time_augmentation', action='store_false',
  50. help='disable test-time flipping')
  51. parser.add_argument('-arc', '--architecture', default='3,3,3,3,3', type=str, metavar='LAYERS',
  52. help='filter widths separated by comma')
  53. parser.add_argument('--causal', action='store_true', help='use causal convolutions for real-time processing')
  54. parser.add_argument('-ch', '--channels', default=1024, type=int, metavar='N',
  55. help='number of channels in convolution layers')
  56. # Experimental
  57. parser.add_argument('--subset', default=1, type=float, metavar='FRACTION', help='reduce dataset size by fraction')
  58. parser.add_argument('--downsample', default=1, type=int, metavar='FACTOR',
  59. help='downsample frame rate by factor (semi-supervised)')
  60. parser.add_argument('--warmup', default=1, type=int, metavar='N', help='warm-up epochs for semi-supervision')
  61. parser.add_argument('--no-eval', action='store_true',
  62. help='disable epoch evaluation while training (small speed-up)')
  63. parser.add_argument('--dense', action='store_true', help='use dense convolutions instead of dilated convolutions')
  64. parser.add_argument('--disable-optimizations', action='store_true',
  65. help='disable optimized model for single-frame predictions')
  66. parser.add_argument('--linear-projection', action='store_true',
  67. help='use only linear coefficients for semi-supervised projection')
  68. parser.add_argument('--no-bone-length', action='store_false', dest='bone_length_term',
  69. help='disable bone length term in semi-supervised settings')
  70. parser.add_argument('--no-proj', action='store_true', help='disable projection for semi-supervised setting')
  71. # Visualization
  72. parser.add_argument('--viz-subject', type=str, default=video_name,metavar='STR', help='subject to render')
  73. parser.add_argument('--viz-action', type=str, default='custom', metavar='STR', help='action to render')
  74. parser.add_argument('--viz-camera', type=int, default=0, metavar='N', help='camera to render')
  75. parser.add_argument('--viz-video', type=str, default=video_path, metavar='PATH', help='path to input video')
  76. parser.add_argument('--viz-skip', type=int, default=0, metavar='N', help='skip first N frames of input video')
  77. parser.add_argument('--viz-output', type=str, default=reconstructed_video_path, metavar='PATH', help='output file name (.gif or .mp4)')
  78. parser.add_argument('--viz-export', type=str, metavar='PATH', help='output file name for coordinates')
  79. parser.add_argument('--viz-bitrate', type=int, default=3000, metavar='N', help='bitrate for mp4 videos')
  80. parser.add_argument('--viz-no-ground-truth', action='store_true', help='do not show ground-truth poses')
  81. parser.add_argument('--viz-limit', type=int, default=-1, metavar='N', help='only render first N frames')
  82. parser.add_argument('--viz-downsample', type=int, default=1, metavar='N', help='downsample FPS by a factor N')
  83. parser.add_argument('--viz-size', type=int, default=5, metavar='N', help='image size')
  84. parser.set_defaults(bone_length_term=True)
  85. parser.set_defaults(data_augmentation=True)
  86. parser.set_defaults(test_time_augmentation=True)
  87. args = parser.parse_args()
  88. # Check invalid configuration
  89. if args.resume and args.evaluate:
  90. print('Invalid flags: --resume and --evaluate cannot be set at the same time')
  91. exit()
  92. if args.export_training_curves and args.no_eval:
  93. print('Invalid flags: --export-training-curves and --no-eval cannot be set at the same time')
  94. exit()
  95. return args