MediaPipe]MediaPipeを使用して手話動作のビデオ角度値を保存(2/2)
前回のリリースに続いて、データを生成してみたいと思います.
ジェスチャー認識深さ学習人工知能:進行時に参考にした映像.
誘電体チューブ取り付け cmd上pip install中管
テンソルflow-gpu取付:参考になるブログ GPU : NVIDIA GeForce GTX 1660 SUPER Python取付(3.8) Python環境変数設定 CUDA取付(11.5) cuDNN取付(8.3.2) Tensorflow取付(2.4.0)
コードソース(ハブ) 手作業映像で座標値を生成する予定でしたが、そうするともっと時間がかかるかもしれませんが、Webカメラで成功したら動画に変えたいと思います. こうして角・角・角のデータが生成される.
無視できる警告か…?
コードを作成して実行し、端末はこれらのみを表示し、何も実行しない. cmdで運転しても同じINFOで灸ができる .pyをダブルクリックして同じINFOを実行 INFOコンテンツ検索時に唯一登場する韓国語ブログ:ここでも特別な情報は得られていない ハブハブホットスポット
INFOはエラーだけでなく、情報ログです.上のINFOは「CPUにTensorFlow Lite XNPACKエージェントを作成した」だけです.という情報です.ではなぜこれから何も実行されないのでしょうか カメラの問題かも、cv 2.VideoCapture(0)のカメラ番号も変わっていますが、差はありません. vsccodeでのmediapipe運転、mediapipeでの運転、fishen mediapipeでの運転、mediapipeでのWebカメラでの運転など、Googleは試したことがあるが、解決策が見つからない. その後、突然、Webカメラが正常に動作しているかどうかを疑問に思った.
まさか.こうして自分でzoomを開けてカメラを確認したが、私のカメラは起動しなかった...Webカメラのエラーを解決し、再稼働後、絶望と幸福が同時に実行コードに降りかかる......
ジェスチャー認識深さ学習人工知能
ジェスチャー認識深さ学習人工知能:進行時に参考にした映像.
開発環境の構成
データの作成(create dataset.py)
import cv2
import mediapipe as mp
import numpy as np
import time, os
actions = ['a', 'b', 'c']
seq_length = 30
secs_for_action = 30
# MediaPipe hands model
mp_hands = mp.solutions.hands
mp_drawing = mp.solutions.drawing_utils
hands = mp_hands.Hands(
max_num_hands=1,
min_detection_confidence=0.5,
min_tracking_confidence=0.5)
cap = cv2.VideoCapture(0)
created_time = int(time.time())
os.makedirs('dataset', exist_ok=True)
while cap.isOpened():
for idx, action in enumerate(actions):
data = []
ret, img = cap.read()
img = cv2.flip(img, 1)
cv2.putText(img, f'Waiting for collecting {action.upper()} action...', org=(10, 30), fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=1, color=(255, 255, 255), thickness=2)
cv2.imshow('img', img)
cv2.waitKey(3000)
start_time = time.time()
while time.time() - start_time < secs_for_action:
ret, img = cap.read()
img = cv2.flip(img, 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
result = hands.process(img)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
if result.multi_hand_landmarks is not None:
for res in result.multi_hand_landmarks:
joint = np.zeros((21, 4))
for j, lm in enumerate(res.landmark):
joint[j] = [lm.x, lm.y, lm.z, lm.visibility]
# Compute angles between joints
v1 = joint[[0,1,2,3,0,5,6,7,0,9,10,11,0,13,14,15,0,17,18,19], :3] # Parent joint
v2 = joint[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], :3] # Child joint
v = v2 - v1 # [20, 3]
# Normalize v
v = v / np.linalg.norm(v, axis=1)[:, np.newaxis]
# Get angle using arcos of dot product
angle = np.arccos(np.einsum('nt,nt->n',
v[[0,1,2,4,5,6,8,9,10,12,13,14,16,17,18],:],
v[[1,2,3,5,6,7,9,10,11,13,14,15,17,18,19],:])) # [15,]
angle = np.degrees(angle) # Convert radian to degree
angle_label = np.array([angle], dtype=np.float32)
angle_label = np.append(angle_label, idx)
d = np.concatenate([joint.flatten(), angle_label])
data.append(d)
mp_drawing.draw_landmarks(img, res, mp_hands.HAND_CONNECTIONS)
cv2.imshow('img', img)
if cv2.waitKey(1) == ord('q'):
break
data = np.array(data)
print(action, data.shape)
np.save(os.path.join('dataset', f'raw_{action}_{created_time}'), data)
# Create sequence data
full_seq_data = []
for seq in range(len(data) - seq_length):
full_seq_data.append(data[seq:seq + seq_length])
full_seq_data = np.array(full_seq_data)
print(action, full_seq_data.shape)
np.save(os.path.join('dataset', f'seq_{action}_{created_time}'), full_seq_data)
break
Trouble Shooting
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
INFOはエラーだけでなく、情報ログです.上のINFOは「CPUにTensorFlow Lite XNPACKエージェントを作成した」だけです.という情報です.ではなぜこれから何も実行されないのでしょうか
まさか.こうして自分でzoomを開けてカメラを確認したが、私のカメラは起動しなかった...Webカメラのエラーを解決し、再稼働後、絶望と幸福が同時に実行コードに降りかかる......
ソース
Reference
この問題について(MediaPipe]MediaPipeを使用して手話動作のビデオ角度値を保存(2/2)), 我々は、より多くの情報をここで見つけました https://velog.io/@jihyeon9975/MediaPipe-MediaPipe를-이용해서-수어-동작-동영상-각도값-저장하기2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol