- 博客(147)
- 收藏
- 关注
原创 Nerf流程
首先,用户的数据预处理部分提到从所有图像数据中获取相机内参(焦距,1个参数)、相机c2w矩阵(12个参数)、稀疏3D点推断的最近和最远距离(2个参数),以及图像的长宽(2个参数),总计17个参数。另外,c2w矩阵是3x4的,共12个参数,正确。bds的2维度表示【near,far】。数据预处理:根据所有图像数据,得到相机内参(焦距,1个参数)、相机位姿(坐标变换,12个参数)和稀疏3D点(推理物体离相机最近和最远距离,2个参数),给每张图像赋予17个参数(1+12+2+2,其中最后一个2为图像的长宽)
2025-03-03 14:36:37
1007
原创 论文总结:EXPRESSIVE SPEECH-DRIVEN FACIAL ANIMATION WITH CONTROLLABLE EMOTIONS
γt = γu,t + (γa,t − γa)" 表示最终的情感先验(γt)是由用户提供的情感条件(γu,t)和音频数据中的情感信息(γa,t)之间的组合构成。引入了一个情感控制模块,其中包括一个基于双 LSTM 的情感预测器,后跟一个嵌入层来生成情感相关的潜在特征,以及一个基于 CNN 的情感增强网络来增强 FLAME 参数的表达能力基于情感特征。通过与学习的嵌入矩阵相乘,将7维先验向量转换为128个情感特征向量,然后输入到由CNN块构建的情感增强网络中,实现情感引导的面部表情增强。
2023-10-21 17:34:04
331
原创 Identity-Preserving Talking Face Generation with Landmark and Appearance Priors
为了解决这个问题,我们提出了一个两阶段的框架,包括从音频到关键点的生成和从关键点到视频的渲染过程。翻译模块在音频特征的指导下,以及来自被遮挡的目标脸部和已配准的参考图像的先验外观信息的指导下,从关键点合成完整的面部图像。翻译模块在音频特征的指导下,以及来自被遮挡的目标脸部和已配准的参考图像的先前外观信息的指导下,从关键点合成完整的面部图像。给定音频序列和初始输入视频,我们的目标是通过以逐帧方式完善输入视频的下半部分遮挡的脸部,生成一个与音频同步的说话人面部视频。与由关键点生成器生成的关键点结果提供的。
2023-10-19 10:49:46
511
原创 StyleSync: High-Fidelity Generalized and Personalized Lip Sync in Style-based Generator
尽管最近在将嘴唇运动与任何音频波同步方面取得了进展,但目前的方法仍然难以平衡生成质量和模型的泛化能力。以前的研究要么需要长期的数据进行训练,要么在所有受试者身上产生类似的运动模式,但质量较低。在本文中,我们提出了StyleSync,这是一个实现高保真嘴唇同步的有效框架。我们在这篇论文中提出了一种名为StyleSync的框架,它可以实现高保真度的唇部同步。该框架使用基于样式的生成器,可以在一次数据输入和少量数据的情况下实现高质量的唇部同步。具体来说,我们设计了一个掩码空间信息编码模块。
2023-10-17 20:20:59
430
原创 EmoTalk: Speech-Driven Emotional Disentanglement for 3D Face Animation
作者使用wav2vec 2.0来提取音频特征。对于情感分离编码器,引入了两个不同的音频特征提取器,并分别用于为内容和情感提取两个单独的潜在空间,用于解耦情感和内容。在这个解码器中,通过使用 Transformer 模块进行解码,该解码器接收多种不同类型的特征作为输入,然后输出 52 个情感增强的混合形状系数,以表示最终的面部表情。3.由于3D情感说话人脸的数据较少,我们借助面部混合形状的监督,从2D情感数据中重建出可信的3D人脸,并提供了一个大规模的3D情感说话人脸数据集(3D-ETF)来训练网络。
2023-10-13 12:56:26
1753
原创 论文总结:3D Talking Face With Personalized Pose Dynamics
在U-net 之前设计了一个增强型CNN编码器,用于构建生成器G,并将初始头部姿势p嵌入输入层和U-net输出层,以约束生成的头部姿势序列的初始位置和方向。在生成阶段,首先使用深度语音对输入音频进行编码,然后将提取的特征馈送到两个之前提出的模块中:头部姿势生成对抗网络(PoseGAN)模块和姿势引导面部(PGFace)生成模块。论文解决的问题:大多数现有的3D人脸生成方法只能生成静态头部姿势的3D面部,只有少数几篇文章关注头部姿势的生成,但这些文章也忽略了个体属性。人脸形状参数由PGFace生成。
2023-10-07 11:46:42
767
原创 论文总结:Seeing What You Said: Talking Face Generation Guided by a Lip Reading Expert
在训练的时候,会选择一个T时刻的0.2s的音频送入基于CNN的audio ecoder中。与之对应的T时刻的图像mask嘴唇部分,再与随机选择的身体参考图像合拼在一起,作为基于CNN的video encoder的输入。由生成器生成的图像会与真实的图像之间取L1 Loss,将两者放入鉴别器取一个对比损失。将生成的图像插入替换原来的视频帧,送入已经冻结的唇读专家中,这里会将visual context features与经过audio ecoder后的结果,做一个loss。在这篇论文中,作者主要注重嘴唇同步。
2023-10-03 17:56:50
327
原创 论文总结:Emotional Talking Head Generation based on Memory-Sharing and Attention-Augmented Networks
首先使用Dlib从身份参考的图像中,提取特征点,经过由MLP组成的Elm。输入的音频经过MFCC编码,后分为两路。其中一路将编码后的结果送入Ea,另外一路将结果送入MSEF(Memory-Sharing Emotional Feature Extractor)。y^为情感分类器预测的情感分类,y为真实的情感标签。Audio2Lm输出为每一帧的面部标志。这里生成的面部标志会与真实的面部标志之间使用loss函数,使生成的标志更加真实。随后将生成的标志与原始图片在通道的维度上拼接,最后放入AATU生成视频帧。
2023-10-03 16:20:39
175
原创 BERT数据处理,模型,预训练
将结果返回到如下代码中:其中encoded_X .shape=torch.Size([1, 64, 128]),1代表批次大小为1,我们设置的每个批次只有行文本,每行文本由64个词组成,bert提取128维的向量来表示每个词。随后进行两个任务,一个是预测被掩盖的单词,另一个为判断两个句子是否为相邻。首先读取文本,每个文本必须包含两个以上句子(为了第二个预训练任务:判断两个句子,是否连续)。随后就是把处理好的数据,送入bert中。将编码完后的数据,进行多头注意力和残差化。
2023-08-13 19:49:05
1321
原创 transformer从开始到结束
均为全连接层,将输入的X,进行不同的变换。这里的num_heads为4,transpose_qkv函数会将query进行切分。在经过embeddeding之后,变为64 * 10 *32 矩阵,每个词使用32维向量表示。,这里我们将block设为1,就是encoderBlock只有一层。首先输入是64 * 10的矩阵,代表64个句子,每个句子10个词。是一个64 * 1的向量,表示每句话的有用的向量。,先进入多头注意力机制。
2023-07-29 12:12:55
1011
原创 transformer代码注解
函数进行切分,假定原本的输入为2 * 6 * 100,因为大小为两个批次,每个批次需要做五个注意力机制,每个注意力机制的key的数量为6,所以将输入为2 * 6 * 100,转换为10 * 6 * 20。在训练时刻的mask中,首先会将结果转变为二维矩阵40 * 6,其中的每一行代表了query与不同key计算的结果,有时候query只能和部分key进行计算,比如:第二个词的query只能计算第一个词与第二个词的key,而之后key需要进行mask。40大小的矩阵,然后转换为40 * 1的矩阵。
2023-07-29 00:09:57
1317
原创 优化transformer
使用transformer而导致的时间长,可能会由于self-attention计算Query和key的值才导致的时间长,也可能会因为feed forward中的计算导致时间长。其中生成的向量中的每个值,可能是float,我们通过一些变换,将其转变为0或者1。第一种选择的方法,就是将输入的向量放入cnn中,将cnn的结果看作是有代表性的key。第二种,就是乘以一个N*K的矩阵,将结果作为有代表性的key。第一种情况:有些问题,我们可能不需要看整个句子,只看位置上左右的邻居,就可以得到正确的答案。
2023-07-20 11:48:02
161
原创 transforms
每一个block都是输入一段向量,然后输出一段向量。每一个block所做的事情,大概是先输出一段向量,做self-attention,考虑整个seq,然后输出。再将输出输入到全连接层中,最后的输出就是block的输出。在transforms的encoder中,所做的事更为复杂。将相加的结果,也就是residual,再经过规范化。将规范化后的结果作为全连接层的输出,再输出的时候,仍然要加上自身。最后在经过规范化,就是block的输出。在输入的时候,除了词向量之外,还需要加入位置编码,用来确定其相对位置。
2023-07-18 23:28:17
117
原创 机器学习原理
在large|H|中,理想中的L(h_all,D_all)比较小,但是现实的L(h_train,D_all)却比较大,两者相聚较远。如果D_train是坏的,那么至少有一个H,使得损失的差值大于预定的值。所以我们需要找到一个合适的具有代表性得Data,使得在其上面训练得来的h,在全部data上面,也可以得到较好的结果。D_train是我们能找到的样本数据,h_train是在我们能找的样本训练而来的临界值。由于宝可梦的图片比较简洁,而数码宝贝的图片就显得比较复杂,我们计算出他们的轮廓,求出白色数量的多少。
2023-07-12 21:26:05
532
原创 注意力机制[矩阵]
其中q(i,1)与q(i,2)是与两个不同的矩阵,相乘得出的。将 q(i,1)与对应的K(i,1)和K(j,1)相乘,再与V(i,1)和V(j,1)分别相乘,得出b(i,1)和b(i,2),再通过以下转换,输出。将A‘的第一列,也就是取q1和其他的k1,k2,k3,k4相乘的值,再经过softmax转换后,与vlue值相乘,再相加就得出b1。I矩阵有a1,a2,a3,a4组成,Wq为权重矩阵,将I与Wq相乘求得Q(q1,q2,q3,q4)。将求得出来的K,转置为竖向量与Q相乘,就可以得出α11,α12…
2023-07-06 16:31:39
2348
原创 RNN其中的X.reshape
28,2是batchsize可以理解为有几句话,5是timestep可以理解为有几个词,28是vocab_size。如下就是两个句子,每个句子由5个单词组成。28则为每个单词的词向量,在此略去。28,将时间步转变为第一个维度。因为我们只要在时间的维度上,才能观察到以前的信息。我们可以每次竖着观察,就是以时间步为第一维度。在输入的时候,首先需进行。假设RNN中的输入为2。,其中X.T将输入为2。
2023-06-28 18:08:30
692
原创 独热编码和Embedding
神经网络语言模型的第二层,为隐层,包含 h 个隐变量,H 代表权重矩阵,因此隐层的输出为 Hx+d,其中 d 为偏置项。而由于在独热编码中词与词之间余弦相似度均为0,就是词与词之间相似度为0,这是不合适的,所有又引入词向量。上图所示有一个 V×m 的矩阵 Q,这个矩阵 Q 包含 V 行,V代表词典大小,每一行的内容代表对应单词的 Word Embedding 值。例子·:给我任何一个词,判断” --》 独热编码w1 [1,0,0,0,0],w1*Q =c1 (“判断”这个词的词向量)。
2023-06-27 18:46:58
383
原创 序列到序列学习
对于长匹配的Pn,当n越大时,则2的n次方分之一越小,Pn为小于1的预测值,当指数越愈小,则结果越大。在训练的时候,我们是知道目标句子的,在解码器RNN输入的时候,即便是上次预测的结果不正确,但我们也可以用正确的结果作为输入。在推理的时候,没有真正的句子,本时刻的输入,只能用上一时刻的输出。特定的“”表示序列开始词元,表示开始翻译。P3:预测序列中BCD在标签序列中出现过,其余的ABB,BBC均没有出现,所以是1/3。将编码器最后一次的隐藏状态与解码器的第一次的输入,放在一起作为隐藏层的输入。
2023-06-26 11:55:25
210
原创 LSTM
记忆单元:输入门 It控制采用多少来自 ~Ct的新数据,而遗忘门 Ft控制保留多少过去的记忆元 Ct的内容。如果遗忘门始终为 1且输入门始终为 0,则过去的记忆元 Ct-1将随时间被保存并传递到当前时间步,也即是记忆元始终没有改变,引入这种设计是为了缓解梯度消失问题,并更好地捕获序列中的长距离依赖关系。只要输出门接近 1 1 1,就能够有效地将所有记忆信息传递给输出层预测输出的输入以及传递到下一个时间步,而对于输出门接近 0 0 0,只保留记忆元内的所有信息,而不需要更新隐状态,
2023-06-24 09:52:18
361
原创 门控循环单元
相反,当Zt接近时0, 新的隐状态Ht就会接近候选隐状态。在计算真正的隐藏层状态的时候,需要使用当前关于Xt的多少信息。候选隐状态:当重置门中的项接近1时, 我们恢复一个普通的循环神经网络。对于重置门中所有接近的项0, 候选隐状态Xt是以作为输入的多层感知机的结果。在更新新的隐藏状态的时候,需要使用多少上次的隐藏状态。在这里有两种门,一种是就是这个数据比较重要,要用他尽量去更新我们的隐藏状态。另外一个叫做重置门,就是说输入或者隐藏状态的一些东西不重要,我们可以忘记一些东西。Rt为重置门,Zt为更新门。
2023-06-22 08:15:08
145
原创 文本预处理
3. 建立一个词表,将拆分的词元映射到数字索引。4.将文本转换为数字索引序列,方便模型操作。2. 将字符串拆分为词元(如单词和字符)。1.将文本作为字符串加载到内存中。
2023-06-14 22:43:23
123
原创 RNN
火箭就是一个正样本,而负样本假如选取篮球,桌子之类的,这样就非常容易选择出来,我们可以选择一些与火箭类似的词,比如:导弹等,这样才可以让模型真正学习到东西。,剩下的2999都均为负样本,这样负样本太多了,在负样本做一个采样,选取9个,现在就是一个十分类任务。由于RNN记得太多,LSTM加控制单元,一个信息,一个词来之后,哪些该记,哪些不该记。以下条件的情况下,计算输入:首先是batch,每个batch均是句子,句子由长度一百的词组成,每一个词由300维的向量组成,也就是64。CBOW使用上下文词,来预测。
2023-06-13 20:01:49
84
原创 卷积神经网络
假设x为第十九层,然后保存他的参数信息。将x经过20,21层训练后的结果F(X)。若F(x)结果不理想,则这两层的权重置为0。使得H(X)为原来保留的参数信息,继续原来的参数进行训练。边缘填充主要是为了那些在角落或者边缘区域的像素点在输出中采用较少,意味着丢掉了图像边缘位置的许多信息。W0,W1为权重,output为特征图。因为经过太多次卷积,会得到过多的特征,所以进行压缩。3的区域计算而来,而是第一块5*5的区域计算而来。H1为输入特征图大小,FH为卷积核大小,2。最大池化:每个区域选择最大的。
2023-06-07 23:03:16
61
原创 自定义块和顺序块
块(block)可以描述单个层、由多个层组成的组件或整个模型本身。从编程的角度来看,块由类(class)表示。它的任何子类都必须定义一个将其输入转换为输出的前向传播函数, 并且必须存储任何必需的参数。注意,有些块不需要任何参数。最后,为了计算梯度,块必须具有反向传播函数。在编写的时候,块由class定义,首先需要继承Module,然后实现__init__函数和前向传播函数。顺序块为了实现自己的Sequential。
2023-06-01 22:43:34
88
原创 环境和分布偏移
训练集由真实照片组成,而测试集只包含卡通图片。假设在一个与测试集的特征有着本质不同的数据集上进行训练, 如果没有方法来适应新的领域,可能会有麻烦。训练的数据没有测试的数据(x的改变,输入数据)在以前发烧头疼,可能是感冒。而现在发烧头疼,可能是新冠了。随着时间的推移,标签的分布就发生了改变。(y的比例改变,输出改变)在训练集和测试机y的分布不一样。协变量偏移是指在模型的训练和测试数据中,输入特征的分布发生了变化,导致模型的性能下降。输入x,输出不同的y。比如说,在不同地方,一个词的意思不一样。
2023-05-31 17:11:12
171
原创 线性回归的从零开始实现
生成数据集true_w和true_b为真实的权重和偏重。x为1000×2张量的标准正态分布,y=x*w+b再加上噪声。我们首先需要设置一个真实的w和b,用y=x*w+b生成数据集。然后初始化W和B,使用生成的数据集训练求出W和B。w和b为需要求出的参数,squared_loss为损失函数。
2023-05-19 17:13:41
63
原创 矩阵求导计算
L2范数(norm):为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数。dA/dB矩阵求导的本质就是矩阵A中的每一个元素对矩阵B中的每一个元素进行求导。
2023-05-14 17:58:58
567
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人