首个文字生成手语模型来了!SignLLM通过文字描述来生成手语视频,目前已经支持八国手语!

SignLLM 是目前第一个通过文字描述生成手语视频的多语言手语模型。

该项目引入了首个多语言手语数据集 Prompt2Sign,它使用工具自动采集和处理网络上的手语视频,能够不断更新,且具有轻量化特点。

该模型当前支持 8 种手语类型。包括美国手语 、德国手语、瑞士德语手语、瑞士法语手语 、瑞士意大利语手语 、阿根廷手语 、韩国手语和土耳其手语。

PS:目前未提供代码(后续提供),也期待更新中文手语~

相关链接

论文:https://arxiv.org/pdf/2405.10718

项目:https://github.com/SignLLM/Prompt2Sign

论文阅读

摘要

在本文中,我们介绍了第一个综合性的多语言手语数据集Prompt2Sign,它建立于包括美国手语(ASL)和其他七种语言在内的公共数据。我们的数据集将大量视频转换成精简的,模型友好的格式,优化与翻译模型的训练比如seq2seq和text2text。

在这个新数据集的基础上,我们提出 SignLLM是第一个多语言手语制作(SLP)模型, 它包括两种新颖的多语言SLP模式,允许从输入文本或提示生成手语手势。两者都是 模式可以使用新的损失和基于强化学习的模块, 通过增强模型自主抽取高质量数据的能力,加快了训练速度。

我们给出的基准结果SignLLM,这表明我们的模型在跨八种手语的SLP任务中的表现达到了最先进的水平。

方法

上图表示Prompt2Sign数据集主要组成部分,Prompt2Sign数据集是重新处理过的姿势数据, 哪些数据更有用,更适合训练。再处理的输入 工具是来自数据集或互联网的公共视频。

上图展示SignLLM旨在生成各种应用场景的手语姿势。

(左)Prompt2Sign数据集的数据类型和抽象表示。(中)Prompt2LangGloss和MLSF的训练过程,计算原理强化学习损失。(右)SignLLM的输出可以进行转换进入大多数姿势表示格式,然后可以渲染成现实的人类外观风格转移/特别微调生成模型。

我们用a增强Text2Gloss标记生成具有语言学意义的Gloss属性。vt()和xu()表示数据类型和抽象表示。

我们使用一些元素:User, Agent,环境,迭代更新过程,PLC的强化学习草图适用于序列预测的过程。

实验

(左)文本或提示作为模型输入。(右)我们用的是调整过的样式迁移模型,将预测的姿态视频转换为最终视频。

结论

我们提出了第一个多语言SLP模型SignLLM,该模型基于我们提出的标准化多语言手语数据集Prompt2Sign。我们的模型有两种模式,MLSF和Prompt2LangGloss,逐步融合了多样化的更多的手语,减轻了共享参数造成的问题。我们的新损耗和新模块解决了训练时间长的问题由于更大的数据集和更多的语言。

为了创建一个基于YOLOv5的手语识别视频转换系统,我们需要分两步走:首先,我们有预训练的YOLOv5模型用于检测手部关键点;其次,需要一个单独的手势识别算法将检测到的关键点转化为文字或语音。这是一个简化的示例,假设我们已经有了关键点检测模块: ```python import torch from PIL import Image from torchvision.io import read_video import cv2 from yolov5.models.experimental import attempt_load from handpose_estimation import HandPoseEstimator # 自定义的手势识别模块 # 加载预训练的YOLOv5模型 model = attempt_load('yolov5s.pt', map_location='cpu') # 初始化手势识别模块(这里只是一个简单的例子,实际可能需要更复杂的机器学习或深度学习模型) hand_pose_model = HandPoseEstimator() def process_video(video_path): cap = cv2.VideoCapture(video_path) frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) for i in range(frame_count): ret, frame = cap.read() if not ret: break # 转换为YUV色彩空间,这有助于YOLOv5性能 yuv = cv2.cvtColor(frame, cv2.COLOR_BGR2YUV) # 进行人脸和手部关键点检测 results = model(yuv, size=640, conf_thres=0.5, device='cpu') bbox, keypoint_scores, keypoints = extract_keypoints(results) # 手势识别并转换 gesture = hand_pose_model.predict(keypoints) # 打印或做进一步处理 print(f"Frame {i}: Gesture detected - {gesture}") cap.release() def extract_keypoints(results): # 提取感兴趣区域并保持关键点得分 bbox = [r.bbox.tolist() for r in results] keypoint_scores, keypoints = [], [] for box in bbox: img_box = yuv[box[1]:box[3], box[0]:box[2]] _, kp, _ = hand_pose_model(img_box) keypoint_scores.append(kp['scores']) keypoints.append(kp['keypoints']) return bbox, keypoint_scores, keypoints process_video('input_video.mp4') ``` 在这个示例中,`HandPoseEstimator`是一个假设存在的手部关键点估计模块,你需要替换为实际的手势识别模型。注意,这个过程非常基础,实际应用可能涉及更多的后期处理和集,例如对手部姿态分析、识别算法优化以及实时流媒体处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGC Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值