본문 바로가기
PYTHON/딥러닝

[PYTHON] 수어 인식 및 번역 모델 개발

by G허니 2024. 7. 25.
개발 배경

 

청각장애 학생들은 일반 교육 환경에서 여러 어려움에 직면합니다. 국립국어원의 2020년 보고서에 따르면, 전체 청각장애 학생 중 50.4%가 '수어 없는 수업의 내용을 이해하지 못한다'고 응답했습니다. 또한, 2023년 특수교육통계에 따르면 농학생 중 80.3%가 일반학교에 재학 중입니다. 이는 수어 교육의 부재와 함께 수업 참여의 어려움을 야기합니다.

 

이러한 문제를 해결하고자, 우리는 AI 기반 수어 인식 모델을 개발했습니다. 이 프로젝트의 주요 목적은 다음과 같습니다

 

  • 일반학교에서 구어로 진행되는 수업에 대한 이해도 증진
  • 수업 내용 중 놓친 부분의 재학습 지원
  • 수업 중 자유로운 질문과 토론 참여 촉진
  • 조기 수어 교육 환경 조성

 

기술적 접근

 

우리의 수어 인식 시스템은 다음과 같은 기술을 사용합니다

  • TensorFlow와 Keras: 딥러닝 모델 구현
  • MediaPipe: 실시간 손동작 키포인트 검출
  • LSTM (Long Short-Term Memory): 시계열 데이터 처리

 

데이터 수집

 

 

수어 영상 (AI hub) : https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=103

 

AI-Hub

샘플 데이터 ? ※샘플데이터는 데이터의 이해를 돕기 위해 별도로 가공하여 제공하는 정보로써 원본 데이터와 차이가 있을 수 있으며, 데이터에 따라서 민감한 정보는 일부 마스킹(*) 처리가 되

aihub.or.kr

 

 

 

전처리

def process_hand_landmarks(right_hand_lmList):
    joint = np.zeros((42, 2))
    for j, lm in enumerate(right_hand_lmList.landmark):
        joint[j] = [lm.x, lm.y]
    vector, angle_label = Vector_Normalization(joint)
    return np.concatenate([vector.flatten(), angle_label.flatten()])

 

이 함수는 MediaPipe로 검출된 손 랜드마크를 처리하고, 벡터 정규화와 각도 계산을 수행합니다.

 

 

모델학습

model = Sequential([
    LSTM(64, activation='relu', input_shape=x_train.shape[1:3], kernel_regularizer=keras.regularizers.l2(0.01)),
    Dropout(0.3),
    Dense(32, activation='relu', kernel_regularizer=keras.regularizers.l2(0.01)),
    Dropout(0.3),
    Dense(len(actions), activation='softmax', kernel_regularizer=keras.regularizers.l2(0.01))
])

 

LSTM 층을 사용하여 시계열 데이터를 처리하고, Dense 층을 통해 최종 분류를 수행합니다.

 

 

평가 지표 그래프

 

 

Accuracy
train loss : 0.7106
val loss : 0.7648
train Ac : 0.8440
vall Acc : 0.8112

F1 Score
Last Epoch
train : 0.8384
val : 0.7856

 

80% 이상의 정확도를 달성 안정적인 성능, F1-Score도 0.78 이상으로 높은 수준의 정밀도와 재현율 유지

 

시연

 

깃허브 링크

https://github.com/Ghoney99/hearing_impaired_helper_make_model