code: def smooth_process(self, current_keypoints):
      if self.x_prev_hat is None:
          self.x_prev_hat = current_keypoints[:, :2]
          self.dx_prev_hat = np.zeros(current_keypoints[:, :2].shape)
          return current_keypoints
      else:
          result = current_keypoints
          num_keypoints = len(current_keypoints)
          for i in range(num_keypoints):
              result[i, :2] = self.smooth(
                  current_keypoints[i, :2], self.threshold[i], i
              )
          return result
  
imports: import os
  import json
  import cv2
  import math
  import numpy
  import paddle
  import yaml
  from det_keypoint_unite_utils import argsparser
  from preprocess import decode_image
  from infer import Detector, DetectorPicoDet, PredictConfig, print_arguments, get_test_images, bench_log
  from keypoint_infer import KeyPointDetector, PredictConfig_KeyPoint
  from visualize import visualize_pose
  from benchmark_utils import PaddleInferBenchmark
  from utils import get_current_memory_mb
  from keypoint_postprocess import translate_to_ori_images
label_desc: Use image node_id 2 for calling the KeypointSmoothing obj's underlying member method code with example usage: obj.smooth_process(current_keypoints) and returns: current_keypoints, result