본 포스팅은 캡스톤 프로젝트의 [제스처 인식부] 리뷰입니다.
미디어파이프에는 객체 탐지를 위한 다양한 라이브러리를 제공하는데 우리 프로젝트는 제스처 인식
이 목표다.
따라서, 손을 탐지할 도구가 필요했고 미디어파이프의 여러가지 카테고리중 손을 인식해주는 도구가 바로 hands solution
이다.
손을 21개의 2차원 텐서(x,y)로 나타낸다.
각각의 제스처마다 이 21개의 좌표값들이 달라질테니 우리는 이 값들을 통해 어떠한 제스처인지 판단할 수 있다.
(정확히 말하면 이것을 컴퓨터에게 알려줘 제스처 학습을 시킨다 😊)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
Dense(64, activation='relu', input_shape = x_train.shape[1:2]),
Dense(len(actions), activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
model.summary()
다중 분류 문제이기 때문에 소프트맥스와 categorical 손실 함수를 사용했다.
from tensorflow.keras.callbacks import ModelCheckpoint, ReduceLROnPlateau
import time
created_time = int(time.time())
history = model.fit(
x_train,
y_train,
validation_data=(x_val, y_val),
epochs=1000,
callbacks=[
ModelCheckpoint('models/model_{created_time}.h5', monitor='val_loss', verbose=1, save_best_only=True, mode='auto'),
ReduceLROnPlateau(monitor='val_acc', factor=0.5, patience=50, verbose=1, mode='auto')
]
)
에포크 1000번으로 학습 진행