votuongquan2004@gmail.com commited on
Commit
8450f43
1 Parent(s): c3b58ce
Files changed (3) hide show
  1. VSL_SAM_SLR_V2_joint_v2.onnx +3 -0
  2. app.py +1 -1
  3. utils/data.py +1 -113
VSL_SAM_SLR_V2_joint_v2.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c2ef526a98c6a94eaf38df2450ed13a276edcf8862b989a9403aa0e9c390b4e9
3
+ size 16700901
app.py CHANGED
@@ -22,7 +22,7 @@ description = '''
22
  examples = []
23
 
24
  # Load the configuration file.
25
- ort_session = ort.InferenceSession('VSL_SAM_SLR_V2_joint_165.onnx')
26
 
27
  # Load id-to-gloss mapping.
28
  id2gloss = pd.read_csv('gloss.csv', names=['id', 'gloss']).to_dict()['gloss']
 
22
  examples = []
23
 
24
  # Load the configuration file.
25
+ ort_session = ort.InferenceSession('VSL_SAM_SLR_V2_joint_v2.onnx')
26
 
27
  # Load id-to-gloss mapping.
28
  id2gloss = pd.read_csv('gloss.csv', names=['id', 'gloss']).to_dict()['gloss']
utils/data.py CHANGED
@@ -161,7 +161,7 @@ def preprocess(
161
  '''
162
  inputs = extract_joints(source=source, keypoints_detector=keypoints_detector)
163
 
164
- # T = inputs.shape[1]
165
  # ori_data = inputs
166
  # for t in range(T - 1):
167
  # inputs[:, t, :, :] = ori_data[:, t + 1, :, :] - ori_data[:, t, :, :]
@@ -225,115 +225,3 @@ def uniform_sample_np(data: np.ndarray, size: int) -> np.ndarray:
225
  interval = T / size
226
  uniform_list = [int(i * interval) for i in range(size)]
227
  return data[:, uniform_list]
228
-
229
-
230
- def calculate_angle(
231
- shoulder: list,
232
- elbow: list,
233
- wrist: list,
234
- ) -> float:
235
- '''
236
- Calculate the angle between the shoulder, elbow, and wrist.
237
-
238
- Parameters
239
- ----------
240
- shoulder : list
241
- Shoulder coordinates.
242
- elbow : list
243
- Elbow coordinates.
244
- wrist : list
245
- Wrist coordinates.
246
-
247
- Returns
248
- -------
249
- float
250
- Angle in degree between the shoulder, elbow, and wrist.
251
- '''
252
- shoulder = np.array(shoulder)
253
- elbow = np.array(elbow)
254
- wrist = np.array(wrist)
255
-
256
- radians = np.arctan2(wrist[1] - elbow[1], wrist[0] - elbow[0]) \
257
- - np.arctan2(shoulder[1] - elbow[1], shoulder[0] - elbow[0])
258
- angle = np.abs(radians * 180.0 / np.pi)
259
-
260
- if angle > 180.0:
261
- angle = 360 - angle
262
- return angle
263
-
264
-
265
- def do_hands_relax(
266
- pose_landmarks: list,
267
- angle_threshold: float = 160.0,
268
- ) -> bool:
269
- '''
270
- Check if the hand is down.
271
-
272
- Parameters
273
- ----------
274
- hand_landmarks : list
275
- Hand landmarks.
276
- angle_threshold : float, optional
277
- Angle threshold, by default 160.0.
278
-
279
- Returns
280
- -------
281
- bool
282
- True if the hand is down, False otherwise.
283
- '''
284
- if pose_landmarks is None:
285
- return True
286
-
287
- landmarks = pose_landmarks.landmark
288
- left_shoulder = [
289
- landmarks[pose.PoseLandmark.LEFT_SHOULDER.value].x,
290
- landmarks[pose.PoseLandmark.LEFT_SHOULDER.value].y,
291
- landmarks[pose.PoseLandmark.LEFT_SHOULDER.value].visibility,
292
- ]
293
- left_elbow = [
294
- landmarks[pose.PoseLandmark.LEFT_ELBOW.value].x,
295
- landmarks[pose.PoseLandmark.LEFT_ELBOW.value].y,
296
- landmarks[pose.PoseLandmark.LEFT_SHOULDER.value].visibility,
297
- ]
298
- left_wrist = [
299
- landmarks[pose.PoseLandmark.LEFT_WRIST.value].x,
300
- landmarks[pose.PoseLandmark.LEFT_WRIST.value].y,
301
- landmarks[pose.PoseLandmark.LEFT_SHOULDER.value].visibility,
302
- ]
303
- left_angle = calculate_angle(left_shoulder, left_elbow, left_wrist)
304
-
305
- right_shoulder = [
306
- landmarks[pose.PoseLandmark.RIGHT_SHOULDER.value].x,
307
- landmarks[pose.PoseLandmark.RIGHT_SHOULDER.value].y,
308
- landmarks[pose.PoseLandmark.RIGHT_SHOULDER.value].visibility,
309
- ]
310
- right_elbow = [
311
- landmarks[pose.PoseLandmark.RIGHT_ELBOW.value].x,
312
- landmarks[pose.PoseLandmark.RIGHT_ELBOW.value].y,
313
- landmarks[pose.PoseLandmark.RIGHT_SHOULDER.value].visibility,
314
- ]
315
- right_wrist = [
316
- landmarks[pose.PoseLandmark.RIGHT_WRIST.value].x,
317
- landmarks[pose.PoseLandmark.RIGHT_WRIST.value].y,
318
- landmarks[pose.PoseLandmark.RIGHT_SHOULDER.value].visibility,
319
- ]
320
- right_angle = calculate_angle(right_shoulder, right_elbow, right_wrist)
321
-
322
- is_visible = all(
323
- [
324
- left_shoulder[2] > 0,
325
- left_elbow[2] > 0,
326
- left_wrist[2] > 0,
327
- right_shoulder[2] > 0,
328
- right_elbow[2] > 0,
329
- right_wrist[2] > 0,
330
- ]
331
- )
332
-
333
- return all(
334
- [
335
- is_visible,
336
- left_angle < angle_threshold,
337
- right_angle < angle_threshold,
338
- ]
339
- )
 
161
  '''
162
  inputs = extract_joints(source=source, keypoints_detector=keypoints_detector)
163
 
164
+ T = inputs.shape[1]
165
  # ori_data = inputs
166
  # for t in range(T - 1):
167
  # inputs[:, t, :, :] = ori_data[:, t + 1, :, :] - ori_data[:, t, :, :]
 
225
  interval = T / size
226
  uniform_list = [int(i * interval) for i in range(size)]
227
  return data[:, uniform_list]