话剧表演辅助系统

一、系统设计

1.1 系统方案

我们希望能够通过目标检测,表情识别,肢体动作识别,语音识别,对话剧演员当前的表演状态做出一个特征提取,并与示范性的表演做一个特征对比,对当前话剧演员的表演做出一个打分并提出相应的改进建议。
其硬件框图如图1-1-1所示,通过摄像头和麦克风(集成在摄像头上)收集视频流和语音流,通过基于intel AIbox的windows系统的运算处理,将结果展示在显示屏上。


图1-1-1 硬件框图

其软件流程如图1-1-2所示,分别从摄像头和麦克风输入视频和语音信号。把语音信号转为.wav录音文件,供语音识别模块进行识别,分析当前表演者说到哪句台词了;把视频流跳帧处理,输入到人脸检测和人体姿态识别模块,人脸检测之后再进行表情识别,然后把人体姿态识别和表情识别的结果与语音识别的结果综合处理实现对话剧演员当前状态的评估,并给出建议。


图1-1-2 软件流程

二、语音识别

要搭建一个完整的中文语音识别系统,包括声学模型和语言模型,将输入的音频信号转化为汉字。拟采用基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型采用科大讯飞提出的DFCNN(deep fully convolutional neural network),语言模型采用transformer。数据集采用了目前能找到的所有中文免费数据,包括:thchs-30、aishell、primewords、st-cmd四个数据集,训练集总计大约450个小时。

2.1 声学模型

DFCNN利用CNN参数共享机制,可以将参数数量下降几个数量级别,且深层次的卷积和池化层能够充分考虑语音信号的上下文信息,且可以在较短的时间内就可以得到识别结果,具有较好的实时性,很符合本项目的应用场景。其框架示意图如图2-1-1所示。


图2-1-1 基于DFCNN语音识别框架示意

DFCNN使用大量的卷积层直接对整句语音信号进行建模。首先,在输入端DFCNN直接将语谱图作为输入,相比其他以传统语音特征作为输入的语音识别框架相比具有天然的优势。其次,在模型结构上,借鉴了图像识别的网络配置,每个卷积层使用小卷积核,并在多个卷积层之后再加上池化层,通过累积非常多的卷积池化层对,从而可以看到非常长的历史和未来信息。这两点保证了DFCNN可以出色的表达语音的长时相关性,相比RNN网络结构在鲁棒性上更加出色,同时可以实现短延时的准在线解码,从而可用于工业系统中。

2.2 语言模型

谷歌提出的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。由于Transformer具有高速的优势,于是采用它来作为本项目实时语音识别的语言模型。
Transformer的主体结构图,如图2-2-1所示。


图2-2-1 Transformer的主体结构图

2.3 数据集

数据集拟采用目前能找到的所有中文免费数据,包括:thchs-30、aishell、primewords、st-cmd四个数据集,训练集总计大约450个小时,使用thchs-30+aishell+st-cmd数据集对DFCNN声学模型进行训练,以64batch_size训练。

三、人体目标检测与区分

利用SSD算法,检测出摄像头获取到的图像信息中的人体,并将每个人体的对应的图像区域提取出来,利用dHash(差异值哈希算法)计算提取出来的图像区域和预先准备的各个演员的全方位的图片信息进行差异计算,从而对各个演员进行识别和区分。

3.1 SSD算法

本项目拟采用SSD算法(Single Shot MultiBox Detector),该算法相对其它的目标检测算法(R-CNN系算法和Yolo算法等)准确度和速度的优势较大。
SSD算法采用CNN(Convolutional Neural Networks)来直接进行检测,而不是像Yolo
那样在全连接层之后做检测。并且,SSD提取了不同尺度的特征图来做检测,大尺度特征图(较靠前的特征图)可以用来检测小物体,而小尺度特征图(较靠后的特征图)用来检测大物体;SSD采用了不同尺度和长宽比的先验框。

3.2 剪裁图像对应区域

获取到目标的横纵坐标范围后,可利用OpenCV对它进行剪裁。我们先用imread方法读取待裁剪的图片,然后查看它的shape,输出的顺序的是高度、宽度、通道数。之后我们
利用数组切片的方式获取需要裁剪的图片范围。这里需要注意的是切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1, x0:x1],其中原图的左上角是坐标原点。最后我们用cv2.imwrite()方法将裁剪得到的图片保存到本地(第一个参数为图片名,第二参数为需要保存的图片)

3.3 差异计算

通过图像指纹来标识一张图片,即将图像按照一定的哈希算法,经过计算后得出来一组二进制数字。再通过计算两张图片指纹的汉明距离来确定两张图片的相似度。汉明距离是一组二进制数据变成另一组数据所需的步骤数,汉明距离越小代表相似度越高。
考虑到本项目对人体的区分需要实时进行,故采用差异值哈希算法(dHash),因为它相比pHash,dHash的速度要快的多,相比aHash,dHash在效率几乎相同的情况下的效果要更好,它是基于渐变实现的。
而dHash计算hanming距离步骤是:

  • 先将图片压缩成9*8的小图,有72个像素点。
  • 将图片转化为灰度图。
  • 计算差异值:dHash算法工作在相邻像素之间,这样每行9个像素之间产生了8个不同的差异,一共8行,则产生了64个差异值,或者是32位01字符串。
  • 获得指纹:如果左边的像素比右边的更亮,则记录为1,否则为0。
  • 通过hash值来计算汉明距离。

四、表情识别

4.1 表情识别功能说明

表情识别,顾名思义就是让机器去识别人的表情。在本系统中,我们使用卷积神经网络来构建一个表情识别模型,通过摄像头反馈实时人脸信息,然后,根据目标检测框出人体目标的区域。经过处理后输出人脸表情。得到的表情共有7种,分别是:生气(anger)、厌恶(digust)、恐惧(fear)、开心(happy)、伤心(sad)、惊讶(surprised)、中性(neutral)。
在本项目中,运用表情识别的目的在于,通过表情识别,识别出表演者的各类情绪表达,并且根据处理后得到的7种表情占比,根据预先制定的这一段表演的标准,系统对话剧表演者提供相应的表演建议,比如:若表演者愤怒的情绪还不足够,系统可以通过显示屏上的弹窗提示表演者应该表演的更加愤怒。

4.2 算法原理说明

在表情识别中,本系统采用技术比较成熟的卷积神经网络算法。其层级结构主要由以下5层组成:数据输入层Input Layer,卷积计算层Convolutional layer,激励层Rectified Linear Units layer,池化层Pooling layer和全连接层Fully-Connected layer。

  • 数据输入层要做的处理主要是对原始图像数据进行预处理,其中包括:去均值,归一化,PCA/白化。
  • 卷积计算层,在这一层中,有两个关键操作:
    (1)局部关联:每个神经元看做一个滤波器
    (2)窗口滑动:滤波器对局部数据计算。在卷积神经网络中,反向传播也很重要,下面讲解卷积层的反向传播原理。
  • 激励层:把卷积层输出结果做非线性映射CNN采用的激活函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。
  • 池化层:池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减小过拟合。
    简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。接下来再展开叙述池化层的具体作用:
    (1)特征不变性:也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
    (2)特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
    (3)在一定程度上防止过拟合,更方便优化。最常见的池化层是规模为2*2, 步幅为2,对输入的每个深度切片进行下采样。每个MAX操作对四个数进行
  • 全连接层:两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的。
  • 全连接层和卷积层可以相互转换:
    对于任意一个卷积层,要把它变成全连接层只需要把权重变成一个巨大的矩阵,其中大部分都是0 除了一些特定区块(因为局部感知),而且好多区块的权值还相同(由于权重共享)。 相反地,对于任何一个全连接层也可以变为卷积层。

五、 人体姿态识别

5.1 姿态识别的意义

近十年来国际上有关表演姿态的研究越来越多,涉及到从话剧创作层面的姿态分析,到身体动作层面的数据分析,到不同表演风格、不同文化的表演场景,再到人机交互的新形式的现代电子表演等方面。其中很多跨学科的研究方法和研究角度是传统研究很少触及到的,体现了新技术条件下表演艺术学术研究的新潮流。
表演姿态与话剧结构的内在关联,使表演姿态在传递话剧结构的指示意义的过程中起着重要的作用,剧作家的意图、话剧的情感表现、话剧的意义传达都通过姿态作为媒介,而表达出来。已经有许多研究从独剧表演,到合作表演,以及不同表演形式的表演中考察姿态的作用和意义。可见,表演姿态的功能是多样化的,不仅要传达话剧的表现意义,更要实现姿态的交流本质。这种交流本质正是剧作家、表演者和听众三位一体地达成对姿态的一致性理解的过程。
温莎(W.Luke Windsor)认为,表演者的运动主要分为两种类型,一种是直接产生声音的行为,另一种是间接影响声音产生的行为。她通过分析音乐表演中的内隐时间间隔模式指出我们从分析图示中看到的声音的拉长与缩短,均伴随着表演者的加速、减速、停顿和缓急法语气的动作,听众是可以看到这些动作的,但是听众如何理解这些动作与表演者发声的关系则与听众的音乐能力和专业性有关,也与艺术经验有关。对姿态的感知就是对背后的行为的感知。
随着技术的发展,特别是对姿态的测量手段的不断进步,舞台表演中的人工智能也逐渐发展起来,从而对表演姿态的研究从传统的表演形式走向了人机交互的表演环境,人工智能对表演姿态的新理解能力也产生了诸多新的表演倾向。本系统的姿态识别部分就是为了从这一新的视角辅助舞台表演。

5.2 姿态识别的实现

姿态识别的第一步是人体关键点的提取。人体关键点的提取,主要用来表示人体骨骼特征,一般主要检测人体的头部、颈部、双臂、手部、腿部和脚踝等的关节点,通过获取关节点在图像中的绝对坐标,再结合其他关键特征,比如点坐标之间的关系或者转换为 3 维空间用神经网络进行分类,来估计人体的行为动作。人体关键点检测是人体行为识别非常重要的一个步骤,是某些方法人体行为识别的基础,在人体跟踪识别、人体行为检测、人体步态识别等领域都具有重要的作用。但是此项技术在现实应用场景还存在诸多问题,比如现场光照强弱、识别角度差异和物体遮挡等,都会对检测造成影响。所以虽然人体关键点检测具有很重要的应用价值,但同时也有很多问题需要克服。前些年,相关研究者对人体关键点检测提出了许多相关算法,但是这些检测算法几乎都是利用模板匹配算法实现,这些算法的核心都是考虑用什么方式来表示人体的整个物理构造以及人体各部位之间的关系。其中,Pictorial 结构算法具有一定代表性。此算法由模板关系和单元模板两个模块组成,并提出了弹簧形变模型。弹簧形变模型首先建立类似于弹簧性质联结的部件,然后建立整体与部分之间的相对位置模型,使得每个部分都可以通过相对位置确定绝对位置。
弹簧形变模型如图 5-2-1 所示:


图5-2-1 弹簧形变模型

多人骨骼关键点检测粗略分为自顶而下和自底而上两种检测方式。
自顶而下的检测方法主要分为两个步骤:单人的行人识别以及单人的行为姿态估计,即先运用人员检测算法检测出图像中的每一个个体位置,然后再针对每个个体进行关键点检测。目前自顶而下的常用算法有 G-RMI、RMPE、Mask R-CNN和 CFN;
自底而上的检测算法也主要分为两个步骤:图像中所有人的关键点检测和关键点聚类,即先把图像中每个人的关键点检测完成,再利用聚类算法把对应人的关键点进行聚类,从而完成每个人的关键点检测。目前自底而上的常用算法有Mid-Range offsets、PAF、Openpose 和 Associative Embedding。

更详细的项目设计方案请见附件中的设计报告

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cchhhhhhhh?

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

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

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

打赏作者

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

抵扣说明:

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

余额充值