当前位置: 首页 > news >正文

Lia 原理

训练阶段

论文流程:
在这里插入图片描述
具体实现:
在这里插入图片描述
通过latent space传递运动信息,实现分两部分。
1)image space->latent space
将源图像映射到隐空间编码。X_s (source image )映射到编码Z_sr,通过W_rd方向上的变化,得到新的编码Z_sd。
X_s映射到编码Z_sr:通过编码器E映射成512维向量

在这里插入图片描述

W_rd: driving image通过编码器E 映射成512维向量,然后通过MLP映射成20维视觉向量A_rd,与字典D中的向量结合得到w_rd,字典D包含了代表不同视觉变换的正交基,字典D是训练中学习得到的,每个向量有特定语意。

input_diag = torch.diag_embed(input)  # alpha, diagonal matrix,20* 20对角矩阵
out = torch.matmul(input_diag, Q.T) #a_i*d_i
out = torch.sum(out, dim=1)

2)latent space->flow field space
通过编码器得到dense optical flow field,对图像进行warp
源图像特征与上一步得到的Z_sd逐级结合,上采样,得到输出图片X_sd。
代码中实现细节如下:
source和target id 相同时:

h_motion = [h_motion_target]
directions = self.direction(h_motion)
latent = wa + directions 

source和target id 不相同时:

h_motion = [h_motion_target, h_motion_source, h_start]
h_start :driving的初始状态,默认需要与source同样的pose。
directions_target = self.direction(h_motion_target)   #
latent = wa + (directions_target - directions_start) + directions_source

实际含义:
1)h_motion_:将图片通过share parameters编码成Z_sr(512维向量)
2)directions_
: 将Zs_r映射成Zs_d(20维向量)
3)latent:source与target的相对/绝对位移信息

loss模块:

#criterion_vgg:vgg19特征层面的距离
#感知损失,计算img_target_recon与img_target原图做一个特征金字塔计算,然后送到vgg中,分别计算图像特征,最后两个特征张量做L1Loss
vgg_loss = self.criterion_vgg(img_target_recon, img_target).mean()
#图片像素层面的距离
l1_loss = F.l1_loss(img_target_recon, img_target)
#img_recon_pred为重演结果走了一遍判别器
#g_nonsaturating_loss=F.softplus(-img_recon_pred).mean()
#这种操作常见于生成对抗网络(GAN)的损失函数计算中,用于衡量假数据的质量,通常与真实数据的预测结果一起使用,以训练网络生成更接近真实数据分布的数据
gan_g_loss = self.g_nonsaturating_loss(img_recon_pred)g_loss = vgg_loss + l1_loss + gan_g_loss

其中vgg_loss与l1_loss,前提均需要source和target id 相同。

推断阶段

若id相同,采用与训练阶段范式一致的absolute transfer。
若id不同,则采用relative transfer,即将第一帧与驱动帧(target)的变化差异施加到源帧(source)上,并且要求源人脸和第一帧的pose要相似。

http://www.lryc.cn/news/346989.html

相关文章:

  • 文本批量操作技巧:内容查找不再繁琐,自动化批量移动至指定文件夹
  • [数据结构]动画详解单链表
  • 图片批量管理迈入智能新时代:一键输入关键词,自动生成并保存惊艳图片,轻松开启创意之旅!
  • 【硬件模块】ESP-01SWiFi模块基于AT指令详解(WiFi,TCP/IP,MQTT)
  • 数据结构之单单单——链表
  • 【Linux笔记】 基础指令(二)
  • 软件全套资料梳理(需求、开发、实施、运维、安全、测试、交付、认证、评审、投标等)
  • javacv实时解析pcm音频流
  • Matlab|考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型
  • 【Python基础】装饰器(3848字)
  • 十、Redis内存回收策略和机制
  • Ansible --- playbook 脚本+inventory 主机清单
  • 【hive】transform脚本
  • 5款可用于LLMs的爬虫工具/方案
  • 投影、选择转SQL语言
  • 系统加固-自用
  • Java面试题:阐述Java中的自动装箱与拆箱机制,以及使用它们时可能遇到的性能问题
  • 初识sql注入--手工注入
  • OceanBase 缺少 dbms_obfuscation_toolkit.md5 包函数的解决方案
  • Java---类和对象第一节
  • Zeller公式的应用:给定日期,确定周几
  • 程序链接和运行 - 笔记
  • pyqt 按钮常用格式Qss设置
  • websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步
  • 【C++】引用传递 常量引用
  • Docker停止不了
  • 【网络】为什么TCP需要四次挥手?
  • 2024自动化测试市场分析
  • 什么是机器视觉应用解决方案?
  • 使用 scrapyd 部署 scrapy