File size: 1,757 Bytes
60212c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import torch
import sys
sys.path.append("/home/pranayr_umass_edu/imu2clip")
from lib.imu_models import MW2StackRNNPooling

if __name__ == "__main__":

    # Generate random IMU-like motions as examples
    # imu_motions: array <n_samples x 6 x 1000>
    imu_motions = torch.rand(1, 6, 1000)
    print(imu_motions.dtype)
    print("Generated random IMU-like motions:", imu_motions)

    # Load the IMU encoder
    """
        The following example .pt model is configured as
        - i2c: IMU2CLIP
        - s_i: source modality = IMU
        - t_v: target modality for alignment = Video
        - t_t: target modality for alignment = Text
        - mw2: MW2StackRNNPooling as the encoder
        - w_5.0: window size of 2.5 x 2 seconds
    """
    #path_imu_encoder = "./i2c_s_i_t_v_ie_mw2_w_5.0_master_imu_encoder.pt"
    # path_imu_encoder = "./i2c_s_i_t_t_ie_mw2_w_2.5_master_imu_encoder.pt"
    path_imu_encoder = "/home/pranayr_umass_edu/imu2clip/shane_models/i2c_s_i_t_v_ie_mw2_w_5.0_master_imu_encoder.pt"
    path_imu_encoder = '/home/pranayr_umass_edu/imu2clip/saved/mw2/i2c/i2c_s_i_t_v_se_mw2_w_5.0_master-epoch=12-val_loss=3.14.ckpt'

    loaded_imu_encoder = MW2StackRNNPooling(size_embeddings=512)
    loaded_imu_encoder.load_state_dict(torch.load(path_imu_encoder))
    print("Loaded IMU Encoder:", loaded_imu_encoder)
    loaded_imu_encoder.eval()
    print("Done loading the IMU Encoder")

    # Inference time
    imu2clip_embeddings = loaded_imu_encoder(imu_motions)
    print('Raw IMU Signals (random)', imu_motions.shape)
    print('Encoded IMU2CLIP embeddings', imu2clip_embeddings.shape)

    # # check if raw and encoded are the same
    # print('Are the raw and encoded the same?', torch.allclose(imu_motions, imu2clip_embeddings))