File size: 4,243 Bytes
eb71a72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import argparse
import yaml

def FineDance_parse_train_opt():
    parser = argparse.ArgumentParser()
    parser.add_argument("--project", default="experiments/finedance_seq_120_genre/train", help="project/name")
    parser.add_argument("--exp_name", default="finedance_seq_120_genre", help="save to project/name")
    parser.add_argument("--feature_type", type=str, default="baseline")
    parser.add_argument("--datasplit", type=str, default="cross_genre", choices=["cross_genre", "cross_dancer"])
    parser.add_argument(
        "--render_dir", type=str, default="experiments/finedance_seq_120_genre/renders", help="Sample render path"
    )
    parser.add_argument(
        "--full_seq_len", type=int, default=120, help="full_seq_len"
    ) 
    parser.add_argument(
        "--windows", type=int, default=10, help="windows"
    ) 
    parser.add_argument(
        "--mix", action="store_true", help="Saves the motions for evaluation"
    )
    # parser.add_argument("--feature_type", type=str, default="jukebox")
    parser.add_argument(
        "--wandb_pj_name", type=str, default="finedance_seq", help="project name"
    )
    parser.add_argument("--batch_size", type=int, default=400, help="batch size")        # default=64
    parser.add_argument("--epochs", type=int, default=2000)
    parser.add_argument(
        "--save_interval",
        type=int,
        default=10,            # default=100,  
        help='Log model after every "save_period" epoch',
    )
    parser.add_argument("--ema_interval", type=int, default=1, help="ema every x steps")
    parser.add_argument(
        "--checkpoint", type=str, default="", help="trained checkpoint path (optional)"
    )
    parser.add_argument(
        "--do_normalize",
        action="store_true",
        help="normalize",
    )
    parser.add_argument(
        "--nfeats", type=int, default=319, help="nfeats"
    ) 
    opt = parser.parse_args()
    return opt

def FineDance_parse_test_opt(): 
    parser = argparse.ArgumentParser()
    parser.add_argument("--feature_type", type=str, default="baseline")
    parser.add_argument(
        "--full_seq_len", type=int, default=120, help="full_seq_len"
    ) 
    parser.add_argument("--datasplit", type=str, default="cross_genre", choices=["cross_genre", "cross_dancer"])
    parser.add_argument(
        "--windows", type=int, default=10, help="windows"
    ) 
    parser.add_argument("--out_length", type=float, default=30, help="max. length of output, in seconds")
    parser.add_argument(
        "--render_dir", type=str, default="FineDance_test_renders/", help="Sample render path"
    )
    parser.add_argument(
        "--checkpoint", type=str, default="assets/checkpoints/train-2000.pt", help="checkpoint"
    )
    parser.add_argument(
        "--nfeats", type=int, default=319, help="nfeats"
    )
    parser.add_argument(
        "--music_dir",
        type=str,
        default="data/finedance/music_wav",
        help="folder containing input music",
    )
    parser.add_argument(
        "--save_motions", action="store_true", help="Saves the motions for evaluation"
    )
    parser.add_argument(
        "--motion_save_dir",
        type=str,
        default="eval/motions",
        help="Where to save the motions",
    )
    parser.add_argument(
        "--cache_features",
        action="store_true",
        help="Save the jukebox features for later reuse",
    )
    parser.add_argument(
        "--do_normalize",
        action="store_true",
        help="normalize",
    )
    parser.add_argument(
        "--no_render",
        action="store_true",
        help="Don't render the video",
    )
    parser.add_argument(
        "--use_cached_features",
        action="store_true",
        help="Use precomputed features instead of music folder",
    )
    parser.add_argument(
        "--feature_cache_dir",
        type=str,
        default="cached_features/",
        help="Where to save/load the features",
    )
    opt = parser.parse_args()
    return opt


def save_arguments_to_yaml(args, file_path):
    arg_dict = vars(args)  # 将Namespace对象转换为字典
    yaml_str = yaml.dump(arg_dict, default_flow_style=False)

    with open(file_path, 'w') as file:
        file.write(yaml_str)