File size: 1,906 Bytes
66b7c56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Copyright (c) Meta Platforms, Inc. and affiliates.
All rights reserved.
This source code is licensed under the license found in the
LICENSE file in the root directory of this source tree.
"""

import os

import torch

from data_loaders.get_data import load_local_data

from tqdm import tqdm

from utils.diff_parser_utils import train_args
from utils.misc import fixseed
from utils.model_util import get_person_num
from visualize.render_codes import BodyRenderer


def main():
    args = train_args()
    fixseed(args.seed)
    args.num_repetitions = 1
    config_base = f"./checkpoints/ca_body/data/{get_person_num(args.data_root)}"
    body_renderer = BodyRenderer(
        config_base=config_base,
        render_rgb=True,
    ).to(args.device)
    data_root = args.data_root
    data_dict = load_local_data(data_root, audio_per_frame=1600)
    if not os.path.exists(args.save_dir):
        os.makedirs(args.save_dir, exist_ok=True)

    for i in range(len(data_dict["data"])):
        end_range = len(data_dict["data"][i]) - args.max_seq_length
        for chunk_idx in tqdm(range(0, end_range, args.max_seq_length)):
            chunk_end = chunk_idx + args.max_seq_length
            curr_data_chunk = data_dict["data"][i][chunk_idx:chunk_end, :]
            curr_face_chunk = data_dict["face"][i][chunk_idx:chunk_end, :]
            curr_audio_chunk = data_dict["audio"][i][
                chunk_idx * 1600 : chunk_end * 1600, :
            ].T
            render_data_block = {
                "audio": curr_audio_chunk,  # 2 x T
                "body_motion": curr_data_chunk,  # T x 104
                "face_motion": curr_face_chunk,  # T x 256
            }
            body_renderer.render_full_video(
                render_data_block,
                f"{args.save_dir}/scene{i}_{chunk_idx:04d}.mp4",
                audio_sr=48_000,
            )


if __name__ == "__main__":
    main()