low_frame_rate.py 948 B

123456789101112131415161718192021222324252627282930
  1. import numpy as np
  2. def build_LFR_features(data, m, n):
  3. """
  4. Actually, this implements stacking frames and skipping frames.
  5. if m = 1 and n = 1, just return the origin features.
  6. if m = 1 and n > 1, it works like skipping.
  7. if m > 1 and n = 1, it works like stacking but only support right frames.
  8. if m > 1 and n > 1, it works like LFR.
  9. Args:
  10. inputs_batch: inputs is T x D np.ndarray
  11. m: number of frames to stack
  12. n: number of frames to skip
  13. """
  14. LFR_inputs = []
  15. T = data.shape[0]
  16. T_lfr = int(np.ceil(T / n))
  17. for i in range(T_lfr):
  18. if m <= T - i * n:
  19. LFR_inputs.append(np.hstack(data[i*n:i*n+m]))
  20. else:
  21. num_padding = m - (T - i * n)
  22. frame = np.hstack(data[i*n:])
  23. for _ in range(num_padding):
  24. frame = np.hstack((frame, data[-1]))
  25. LFR_inputs.append(frame)
  26. return np.vstack(LFR_inputs)