刘彤彤

来自CGTWiki
跳转至:导航搜索

个人简介


照片

生于1998年1月21日,籍贯山西省阳泉市。

2016级         南京邮电大学         通信与信息工程学院          广播电视工程          本科
2020级         北京邮电大学         信息光子学与光通信院        电子信息              研究生

主要研究方向是三维显示和计算机图形学

Tel: 18811503120
Email: liutongtong@bupt.edu.cn
四级:432

电脑配置

	
电脑型号      X64兼容台式电脑

操作系统      Windows 10 64位

处理器        Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz   2.00 GHz

内存容量      16GB

显卡          NVIDIA Quadro P5000

硬盘          Samsung SSD 860 PRO 512GB
              ST1000DM010-2EP102

主板          MS-7A54

网卡          Intel(R) Ethernet Connection (2) I218-LM

声卡          Realtek High Definition Audio
	      NVIDIA High Definition Audio

显示器        S24E390 1920×1080

早会

9.23
阅读Multimodal Input Driven Talking Face Generation With Spatial-Temporal Dependency和基于BLSTM-RNN的语音驱动逼真面部动画合成两篇论文,
对于语音驱动有了基本的逻辑,下一步继续查资料,基于两篇论文先复现,增加自己的创新点。
语音驱动人脸动画比较
9.22
解决svg导入blender颜色丢失的问题。
9.16
增加矢量一键切换功能。
9.15
查找20个三维矢量模型,修复刷新bug。
9.14
重新查找矢量模型。
9.13
调整矢量添加UI界面,修复矢量二次加载右键失效的功能。
9.8
完善矢量列表,添加手势控制按钮,目前存在委托调委托导致列表出错的问题。
9.6
完善场景中设施删除功能,完成屏幕锁定功能,协助刘昊完善矢量保存功能(未完成)。
9.3
完善场景中设施的保存和加载功能。
9.1
完善语音控制,加入雷达探测操作。
8.30
在新建UI中,完成模型场景树功能的迁移。
8.23
在新建UI中,完成标注场景树功能的迁移。
8.20
在新建UI中,完成“任务列表”和“模型图层”场景树功能的迁移。

周报

7.2
完成语音识别引擎更换,实现平台语音控制功能。
6.25
在WPF中实现3个软件的基本UI界面,实现界面消隐和软件转换功能。
6.11
近期工作:
为了满足语音识别精度和效率要求,更换语音识别引擎,实现语音控制功能;正在查阅科大讯飞语音识别官方文档,尝试更换识别引擎,实现基于Windows系统的命令词识别任务。
配合师姐完成软件界面切换功能。
4.23
为平台提供语音控制功能;
本周实现:
可采集操作员典型语音指令;
增加语音控制功能,与人机交互界面实现关联;
遇到的问题:
只能读取到飞行任务中已存在的任务项,对于新增的任务项,不能实时刷新语音指令,只有在下次启动程序时,才能重新初始化语音指令关键字,获取到任务项。
解决方法:
尝试修改语音指令关键字添加方式,实现实时刷新。
4.9
(1)导出两版基于MTCNN的人眼检测模型,尝试将其转化为适用于NPU平台运行的nbg格式文件,并导出的case代码;
(2)完成基于Ubuntu16.04的虚拟机安装;
4.2
(1)为播放器增加本地播放列表
实现功能:
·启动程序自动初始化过往列表
·从本地文件中读取文件到播放列表
·列表播放功能
·曲目删除功能
(2)学习吴恩达机器学习相关知识(前9章)
unity中使用SQLite
Unity3D研究院之使用C#语言建立本地数据库
Mono.Data.Sqlite.dll和System.Data.dll使用该路径下的C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0
3.26
(1)更新播放器的文件读取功能
(2)阅读一篇关于人眼跟踪的综述类文章
1.14
unity中可用语音库
基于基本库的语音播放和识别
Speechlib
UnityEngine.Windows.Speech
System.Speech
基于SDK的语音播放和识别
百度语音识别SDK
科大讯飞识别SDK

开源人物动作表情库

学习笔记

文件:机器学习笔记1.pdf

训练一个神经网络

1.随机初始化权重
2.前向传播 对每个输入 [math]{{x}^{(i)}}[/math] 得出其 [math]{{h}_{\theta }}({{x}^{(i)}})[/math]
3.计算代价函数 [math]J(\theta )[/math]
4.反向传播,计算 [math]\frac{\partial }{\partial \theta _{jk}^{(l)}}J(\theta )[/math]
5.梯度检测,比较使用反向传播得到的偏导数项和通过数值计算得到的 [math]J(\theta )[/math] 的导数是否相等
·检测完后要停止梯度检测
6.对反向传播得到的偏导数使用一种优化算法,得到使代价函数最小的参数集 [math]\theta [/math]

评估假设

1.对于线性回归,计算测试集的代价函数值 [math]{{J}_{test}}(\theta )[/math]
2.对于逻辑回归,计算misclassification error(0/1misclassification error):

[math]{{J}_{test}}(\theta )=-\frac{1}{{{m}_{test}}}\sum\limits_{i=1}^{{{m}_{test}}}{y_{test}^{(i)}\log {{h}_{\theta }}(x_{test}^{(i)})+(1-y_{test}^{(i)}\log {{h}_{\theta }}(x_{test}^{(i)}))}[/math]
(0/1)err
Test error[math]=\frac{1}{{{m}_{test}}}\sum\limits_{i=1}^{{{m}_{test}}}{err({{h}_{\theta }}(x_{test}^{(i)},y_{test}^{(i)}))}[/math]


·资料链接
吴恩达机器学习:神经网络 | 反向传播算法
前向传播和反向传播

论文笔记

人眼跟踪

传统方法

Supervised Descent Method(人脸对齐之SDM)

SDM推导过程
目标函数 均方差误差
学习一系列下降方向和该方向的尺度,去最小化目标函数

回避求解Jacobian矩阵和Hessian矩阵问题???
Jacobian矩阵: 是函数的一阶偏导数以一定方式排列成的矩阵 假设F: [math]{{\mathbb{R}}_{\text{n}}}\to {{\mathbb{R}}_{\text{m}}}[/math] 是一个从n维欧式空间映射到m维欧式空间的函数,m个实函数为 [math]{{\text{y}}_{1}}({{x}_{1}},...,{{x}_{n}}),...{{y}_{m}}({{x}_{1}},...{{x}_{n}})[/math] 这些函数的偏导数可以组成一个m行n列的矩阵
雅各比矩阵 可表示为 [math]{{J}_{F}}({{x}_{1}},...,{{x}_{m}})[/math][math]\frac{\partial ({{y}_{1}},...,{{y}_{m}})}{\partial ({{x}_{1}},...,{{x}_{n}})}[/math]

黑塞矩阵(Hessian Matrix)是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。
为对称矩阵

解决非线性优化问题的数值优化方法:
·梯度下降法
·牛顿步
·LM算法

人脸对齐的方法主要分为两大类:基于优化的方法,基于回归的方法

SDM的方法是基于回归的: 原理:给定初始形状(所有训练样本的真实形状的平均形状),通过不断迭代回归到真实形状的位置
采用改进的数值优化方法,最终目的是最小化目标函数(均方差)
提取的特征是SIFT特征,对每张图片处理初始形状是一致的,但是提取的SIFT特征是不同的

-SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

改进数值优化方法的原因:牛顿步方法要求函数二次可导(强要求),数值逼近的方法估计Jacobian和Hessian矩阵计算量大
SDM推导:
牛顿步求解公式:
[math]{{x}_{k+1}}={{x}_{k}}-{{H}^{-1}}({{x}_{k}}){{J}_{f}}({{x}_{k}})[/math]
1.计算量大 2.目标函数不一定可导

当不可导时,推导SDM
对牛顿步进行进一步推导
...(详细推导过程见参考文献)
[math]{{J}_{f}}({{x}_{0}})=J_{h}^{T}({{x}_{0}})({{\Phi }_{0}}-{{\Phi }_{*}})[/math]

[math]\Delta {{x}_{1}}=-2{{H}^{-1}}({{x}_{0}})J_{h}^{T}({{x}_{0}})({{\Phi }_{0}}-{{\Phi }_{*}})=-2{{H}^{-1}}({{x}_{0}})J_{h}^{T}({{x}_{0}}){{\Phi }_{0}}+2{{H}^{-1}}({{x}_{0}})J_{h}^{T}({{x}_{0}}){{\Phi }_{*}}[/math]
继续化简
[math]\Delta {{x}_{1}}={{R}_{0}}{{\Phi }_{0}}+{{b}_{0}}[/math]
想获得 [math]\Delta {{x}_{1}}[/math] 只需要求解出 [math]{{R}_{0}}[/math][math]{{b}_{0}}[/math] 即可,使用最小二乘法,最小化 [math]loss=||\Delta {{x}_{1}}-{{R}_{0}}{{\Phi }_{0}}-{{b}_{0}}||_{2}^{2}[/math] 。得到[math]{{R}_{0}}[/math][math]{{b}_{0}}[/math]
同样地,可以得到[math]{{R}_{1}}[/math][math]{{b}_{1}}[/math]、...、[math]{{R}_{k}}[/math] [math]{{b}_{k}}[/math],进而更新对应的 [math]\Delta {{x}_{2}}[/math]、... [math]\Delta {{x}_{k+1}}[/math] ,找到每次对应变换方向和尺度,最终找到是目标函数最小的x。
推导得出第k+1次[math]\Delta {{x_{k+1}}}[/math]与第k次的[math]\Phi_{k}[/math]成线性关系

训练过程
·1.对所有训练样本初始化标记点;
·2.计算[math]\Phi_{0}[/math](为初始标记点对应的SIFT特征值);
·3.计算[math]\Delta {{x_{1}}}[/math](初始标记点和目标点的差值);
·4.使用最小二乘法拟合出[math]{{R}_{0}}[/math][math]{{b}_{0}}[/math]
·5.依次计算出[math]{{R}_{1}}[/math][math]{{b}_{1}}[/math]、...、[math]{{R}_{k}}[/math] [math]{{b}_{k}}[/math],直到回归到目标点;

总结
该方法解决的关键问题是,快速回归的问题,提高了效率。本质依赖的是牛顿步的数值优化方法,不过牛顿步是通过计算得到每一步优化的方向和尺度,而该方法是通过训练数据,学习到每一步的优化方向和尺度。该方法针对的是目标函数不可导,计算量太大的问题提出的。提取的时SIFT特征。
缺点;特征提取速度慢,人工标定特征点

·参考资料
SIFT特征详解
Supervised Descent Method(人脸对齐之SDM论文解析)
机器学习--详解人脸对齐算法SDM-LBF
文件:Supervised Descent Method and its Applications to Face Alignment.pdf

人脸对齐之GBDT(ERT)算法

该方法类似于随机森林的方法
同样也是回归类算法
固定初始形状,每个图像提取出的特征不同,该方法提取的是像素差作为特征
建立流程
一个GBDT的建立:
一个GBDT有多棵树组成,且多棵树不是并行的,而是串行的。对于第一个棵树,把所有图片输入到第一棵树,每个节点根据像素差分裂规则,最终图片会落到各个叶子节点中,计算每个图片当前形状和真实形状的差值,计算每个叶节点中所有图片残差的平均值,记录该叶节点的残差,如此就构建好了第一棵树;而第二棵树的输入为原始形状被第一棵树矫正后的形状,再按上诉方法计算各个叶节点的残差,构建完成第二棵树;剩余树也如此计算,树足够多时,当前形状可以表示真实形状,一个GBDT搭建完成。 像素差特征提取的方法和树的分裂方法确定:
对于一个GBDT,建立一个特征池,对于其中的一棵树,从特征池中随机挑选一些点的坐标,在这些点中随机挑两个点,计算这两个坐标的像素差,随机生成分裂阈值,像素差小于阈值分裂到左边,大于分裂到右侧,对所有图片进行上诉操作,如此将所有图片分裂成了两部分;重复操作若干次,对分裂到左边的样本计算方差,方差最小的,保留两点的坐标值和分裂阈值,完成一个子节点的分裂,每个子节点的都重复这个过程,直到分裂到叶子节点。
作者搭建了10个GBDT,(即有10个特征池,每个特征池400个点,每次分裂随机挑选20对点,20个阈值),每个GBDT包含500棵树
总结
以像素差作为特征;回归速度快,对静态图片处理效果好;
·参考资料
人脸对齐之GBDT(ERT)算法解读
ERT/GBDT实现代码链接(C++版)
文件:One Millisecond Face Alignment with an Ensemble of Regression Trees.pdf

人脸对齐之LBF算法

基本过程
[math]\Delta {{S}^{\text{t}}}={{W}^{t}}{{\Phi }^{t}}(I,{{S}^{t-1}})[/math] (1)
在等式中线性回归矩阵 [math]{{W}^{t}}[/math] 和特征提取函数 [math]{{\Phi }^{t}}[/math] 均是未知的,在该方法中,提出了通过两个步骤去学习它们
首先,对于每个标记点学习局部特征提取函数去获得局部的二值特征将所有的二值特征关联得到全局的特征函数;
然后,通过线性回归获得全局线性回归矩阵
局部二值特征的获得
全局特征是由一组局部特征组成的,且局部特征学习相互独立;
根据等式1,获得局部体征提取函数的目的其实是获得真实的偏移量,其代价函数为

[math]\underset{{{w}^{t}},\phi _{l}^{t}}{\mathop{\min }}\,\sum\limits_{i=1}{\left\| {{\pi }_{l}}\circ \Delta \hat{S}_{i}^{t}-w_{l}^{t}\phi _{l}^{t}({{I}_{i}},S_{i}^{t-1}\left. ) \right\| \right._{2}^{2}}[/math] (2)

通过样本迭代使真实偏移量接近,等式给出的偏移量(?未知回归矩阵,可以得到特征提取函数)
使用标准随机回归森林学习每个标记点的特征提取函数,使用像素差特征分裂节点;

采用500个随机取样特征,挑选出使最大均方差减少的特征点,最终每个叶子节点存储所有样本的残差量的均值 [math]W_{l}^{t}[/math] (局部残差)。
该方法只采样预测标记点周围的局部区域,如何获得最优区域
对于每个标记点的特征提取方式的获得采用随机回归森林的方法,将局部区域输入到森林中,它将遍历每一棵树直到到达每棵树的叶子节点,对应于每棵树的二值特征为{0,1,...,0},该区域的总体二值特征为整个森林的总和,为一个标记点的局部特征。将所有标记点的局部特征组合,即为总体的二值特征。
总结
对于如何回归到正确的标志位置,是由特征提取函数和回归矩阵决定的。该方法在局部区域获取二值特征,在全局区域获得回归矩阵,其在回归准确度表现上性能并不突出,最大的优势是特征提取速度快,由于其提取的是稀疏的二值特征所决定的。
·参考资料
文件:Face Alignment at 3000FPS via Regressing Local Binary Features.pdf

人脸对齐之CFSS(基于粗到细的形状搜索)

解决问题:可以防止最终解因初始形状不佳而陷入局部最优的状况;对于应对大姿态变化的图片有良好的鲁棒性。

深度学习

cascade CNN

创新点
提出了采用级联CNN的方式解决人脸对齐问题,是由粗到细,其解决的问题,
·采用CNN的方式进行特征提取,完成初始化形状,以CNN的方式初始化形状与传统的初始形状取平均值的方式相比,其选取的初始化形状更精确,可以有效避免结果局部最优;
·提出了局部共享权值
结构
采用三层网络结构
cascadeCNN
第一层分为3个CNN,输出分别为全脸标志点输出,双眼和鼻子标志点输出,以及鼻子和嘴角标志点输出,第一层的最终输出为5个点的平均值;在第一层采用了局部权重共享(提取的是深层的特征);
第二层和第三层均由10个CNN构成(每个标志点使用2个网络的平均值去回归),其输入为对第一层图片的局部裁剪;另外,第二层和第三层结构虽然相同,但是在裁剪第三层的输入图像时,关键点将尽可能在裁剪图片的中间(相对于第一层提取的是浅层特征)。

基于改进Coarse-to-fineCNN 网络人脸特征点定位

创新点
·其相较于Coarse-to-fine,最大的创新点是在网络输入方面,采用CNN预测人脸的bounding box(最小包围盒),不使用人脸检测到的人脸区域图片作为网络的输入,可以提高特征点粗定位的精度;
·定位了68个标记点,将其分成了两部分,inner和contour,两部分分别预测;
·训练时不是对每个特征点分别训练,而是对不同五官区域内的特征点进行预测,可以减少计算量;
结构

  • 对inner点(51个)的预测

整个网络分为了4层
第一层的目的是为了获得包含所有inner点的最小包围盒(bounding box),其输入为原始的完整图片,输出为最小包围盒的左上角坐标,右下角坐标(4维向量);
第二层的目的是对51个点进行粗定位,输入为第一层包围盒所包含的范围,输出为51个特征点预测,和DCNN相对每个特征点对应两个CNN,输出为102个神经元;
第三层的目的是对特征点位置进一步细化处理,输入为裁剪后的五官局部位置图片,各个器官分开训练,精细化各点位置;
第四层的目的和第三层相同,但其输入为对五官进行矫正后的图片,但其精度提高程度较低。

  • 对contour点(17个)的预测

只有两层
第一层获得bounding box;
第二层使用CNN对17个特征点进行预测。
·参考资料
基于改进Coarse-to-fine CNN网络的人脸特征点定位 算法汇总

DAN 基于深度对齐网络的人脸关键点检测

创新点
·基于多级神经网络,通过神经网络学习获得每一迭代的变换方向和尺度,对前一阶段估计的标记点进行优化;
·神经网络的输入为三部分,分别为经过规范化后的图像,标记点热点图,前一阶段获得的特征图,输出是每阶段的变换;
·提出了标记热点图,可以在人脸对齐中充分利用整个人脸图像,以往的人脸对齐方法中提取的特征都是标记点周围的一块特征,容易导致局部最优;
总体结构
DAN整体结构
各阶段结构
DAN各阶段结构
该部分为整体结构的Connection层实现的内容,每个Connection阶段,通过变换估计获得 [math]{{T}_{\text{t+1}}}[/math], 对图像和热点图进行变换,输出变换后的人脸图像和热点图,从上一阶段神经网络的全连接层中获得特征图,三个内容作为下一阶段神经网络的输入。

DCFE

结构
DCFE
DCFE由三部分构成,初始化图像通过卷积神经网络初步定位关键点位置,通过POSIT计算人脸3D姿态,再重投影到人脸图像,作为标记点初始化位置,再使用ERT回归标记点位置

LAB

结构
LAB结构
主要由三部分,分别为边界热图预测网络,融合了边界热图特征的标记点回归网络,边界有效判别器

创新点
·边界热图的获得采用层叠的沙漏型网络;
·标记点回归网络采用多级边界热图信息融合机制;
·增加对抗思想和消息通信机制,提高边界可靠性;

语音驱动虚拟人

隐马尔可夫模型(HMM)详解
游戏中口型动画合成系统

音频特征

梅尔频率倒谱系数MFCC[1]

语音的产生与声道形状相关,声道的形状在语音短时功率谱的包络中显示出来。MFCCs是一种准确描述这个包络的特征。
产生过程
MFCC
最终获得的是符合人类听觉特性的短时音频频谱包络。

2020工作总结

工作总结

1.协助师姐完成615项目中为平台添加“航线规划”属性框,将“航线规划”信息显示在场景树中,并实现读写xml,删除重命名功能(10月);
2.协助师姐搭建Web端裸眼3D播放系统(11月);
3.实现基于UDP中控的裸眼3D播放器控制版本(12月);

占用资源

1.学位名额,感谢老师们的信任与栽培。
2.研一时分复用实验室工位。

自我评价

1.半年的时间里,功劳与苦劳略小于占用资源。
2.前期适应缓慢未能跟上大家的进度,之后一定努力补足基础,尽全力完成实验室任务。

参考资源