论文笔记:Image Anaimation经典论文-运动关键点模型(Monkey-Net)
Monkey-Net(MOviNg KEYpoints)
paper: https://arxiv.org/pdf/1812.08861, CVPR 2019
code: https://github.com/AliaksandrSiarohin/monkey-net/tree/master
相关工作
视频生成演变过程:
- spatio-temporal network: 如基于GAN网络的生成模型,一次生成多帧图像
- recurrent neural networks: 使用LSTM + GAN网络,生成视频,以此来增加时序信息。这类方法还可以在输入增加条件信息,如动作类别标签,以此生成所需动作的高质量视频。
- 两阶段级联结构(hierarcchical video prediction model):第一阶段生成一些列lanmark(如使用lstm);然后使用landmark生成图像帧。
Image Anaimation:*
-
该任务定义为给定一幅静态图像,和一个参考动作视频,让静态图像中物体按照参考图像中物体运动。
-
该任务的核心可以分为解偶-重构两个阶段:
- 将视频中运动信息和内容信息解偶
- 然后再根据运动信息和内容重构视频的过程
在人脸Animation中,经典3D MM模型是经常被使用的模型,但其局限性非常明显:
- 3DMM 模型仅限于人脸,domain-specific非常明显。
- 3DMM模型在一些具有挑战的情况下性能急剧下降,如人脸遮挡。
本文贡献
结合下图,贡献如下:
-
设计了一个无监督关键点检测模块,用于提取物体关键点。
- KeyPoint Detector: 输入为参考图像和驱动视频帧,输出为稀疏关键点。
- 由于训练过程是无监督的,因此不需要标注关键点信息。
- 实际上,两帧之间稀疏关键点差异可以看做一种紧致的运动表征。
-
设计了密集运动估计网络:用于从稀疏关键点中重建运动热图(motion heatmaps),热图用于更好地表征运动信息。
- Dense Motion prediction network:输入为1中的稀疏关键点,输出为运动热图。以此来估计参考图像和驱动图像之间的光流。
- 这样做有两个动机:
- 使得1中关键点检测网络不仅关注物体的结构信息,也关注运动信息。使得自监督的关键点检测网络检测到的关键点必需落在运动大的位置。
- 传统encoder-decoder密集预测模型未考虑到输出输出之间较大的像素不对齐问题。增加光流信息希望促进输入输出之间差异比较大时的对齐。
-
设计了一个运动迁移网络:使用运动热图,和从从参考图像中提取的内容表征生成视频帧图像。
Motion Transfer network: 输入为参考图像和运动热图,输出为重构后的视频帧。经典encoder-decoder结构。
训练过程核心思路:
- 生成器G需要根据参考图像、参考图像关键点、驱动图像关键点三个部分重建出驱动图像( x ′ x' x′);通过这个过程,参考图像( x x x)和驱动图像之间( x ′ x' x′)的关系被隐式建模。
实现细节
无监督关键点检测网络:
- encoder-decoder结构,输出为K个HxW的heatmap,每个heatmap对应一个关键点,使用softmax将输出归一化至[0, 1]。
- 使用heatmap的动机:更好地适配卷积网络。
- 为了学习关键点位置信息,将每个heatmap拟合至一个高斯分布,使得模型间接学习关键点。
- 模型不仅拟合了关键点的位置信息,还拟合了关键点的协方差矩阵。目的是同时学习关键点的位置和方向信息。以人的腿为例,关键点不仅包括腿部关键点的位置信息,还可以学习到腿的运动信息。
运动迁移网络:
- 主干网络还是U-Net like 的encoder-decoder结构,增加了变形模块(Deformation module)融入光流信息。
- 核心内容:使用一个warp function将光流信息和encoder中特征进行融合。本质是一个可微的非线性变换,具体操作看代码吧:
def deform_input(self, inp, deformations_absolute):# 获取 deformations_absolute 的形状bs, d, h_old, w_old, _ = deformations_absolute.shape# 获取 inp 的形状_, _, _, h, w = inp.shape# 调整 deformations_absolute 的维度顺序,从 (bs, d, h_old, w_old, _) 变为 (bs, _, d, h_old, w_old)deformations_absolute = deformations_absolute.permute(0, 4, 1, 2, 3)# 使用插值方法调整 deformations_absolute 的大小,使其与 inp 的大小匹配deformation = F.interpolate(deformations_absolute, size=(d, h, w), mode=self.interpolation_mode)# 再次调整 deformation 的维度顺序,从 (bs, _, d, h, w) 变为 (bs, d, h, w, _)deformation = deformation.permute(0, 2, 3, 4, 1)# 使用 grid_sample 函数对 inp 进行变形deformed_inp = F.grid_sample(inp, deformation)# 返回变形后的输入return deformed_inp
从稀疏关键点到密集光流
- 密集运动估计网络M输入包括两个:1. 参考图像关键点和驱动图像关键点map的差值。2. 参考图像本身。
- 假设在每个物体上的关键点是局部刚性的,那么光流预测问题就变为:根据关键点预测掩模,这些掩模根据关键点信息将物体刚性的分成不同部分。
- 预测的密集光流可根据预测的刚性掩模和光流信息点乘得到。
- 注意:最终预测的光流信息,有一个粗粒度结果和一个残差结果相加得到。
网络训练
- 整个网络训练是一个端到端的过程
- 损失函数包括:对抗损失、特征匹配损失
结果
定量指标就不放了。这里自监督的可学习关键点很有意思,每个物体的关键点都不一样,即使是类内的关键点也会有差异。
相关文章:

论文笔记:Image Anaimation经典论文-运动关键点模型(Monkey-Net)
Monkey-Net(MOviNg KEYpoints) paper: https://arxiv.org/pdf/1812.08861, CVPR 2019 code: https://github.com/AliaksandrSiarohin/monkey-net/tree/master 相关工作 视频生成演变过程: spatio-temporal network: 如基于GAN网络的生成模…...

Kibana创建ElasticSearch 用户角色
文章目录 1, ES 权限参考2, 某应用的管理员权限:可以open/close/delete/cat/read/write 索引3, 某应用的读写权限:可以cat/read/write 索引 (不能删除索引或数据)4, 某应用的只读权限 1, ES 权限参考 https://www.elastic.co/gui…...
Vue基础(2)响应式基础
一. reactive() 在 Vue3 中,可以使用 reactive() 创建一个响应式对象或数组: <script setup> import { reactive } from vueconst state reactive({ count: 0 }) </script><template><button click"state.count">{…...

Mysql基础教程(15):别名
MySQL 别名 在本文中,我们讨论了 MySQL 中的列别名,表别名和派生表别名,以及使用别名来简化 SQL 和提高 SQL 的可读性。 如果在一个 SQL 中涉及到多个表,我们需要使用 table_name.column_name 这样的方式来引用每个表的字段&…...

SpringCloud 微服务中网关如何记录请求响应日志?
在基于SpringCloud开发的微服务中,我们一般会选择在网关层记录请求和响应日志,并将其收集到ELK中用作查询和分析。 今天我们就来看看如何实现此功能。 日志实体类 首先我们在网关中定义一个日志实体,用于组装日志对象 Data public class …...

【运维项目经历|028】Cobbler自动化部署平台构建项目
🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…...
“物联网安全:万物互联背景下的隐私保护与数据安全策略“
在物联网(IoT)时代,随着智能设备的普及和万物互联的加速,隐私保护与数据安全成为了亟待解决的关键问题。以下是一些重要的隐私保护与数据安全策略,以确保在万物互联背景下信息的安全: 1. 加强设备安全&…...

LeetCode216组合总和3
题目描述 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9。每个数字 最多使用一次。返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 解析 递归加剪枝,搜索长度达…...

微软找腾讯接盘,Windows直接安装手机APP体验起飞了
熟悉微软的同学都知道微软有个传统艺能——什么好用砍什么。 比如 Win10 砍掉了还算方便的小娜,推出 Win11 砍掉了 Win10 上面好用的磁贴功能等。 上一秒用户还在夸奖点赞。 下一秒就给你砍掉,顺带还塞一堆 BUG 给你。 但没办法,PC 近乎垄断…...

【Springcloud微服务】MybatisPlus下篇
🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Springcloud微服务 🌠 首发时间:2024年6月4日 🦋 欢迎关注🖱点赞👍收藏🌟留言ὃ…...

i18n-demo
一、demo 1、资源文件准备 如我需要对menu、logMsg内容做国际化。 resources下放各个语言文件,直接放resources下都行。我是新建了一个myi18n文件夹, (1)然后在myi18n上点击New--Resource Bundle (2)在…...
[Leetcode] 0-1背包和完全背包
46. 携带研究材料 纯01背包(非应用):只能选择一次物品 dp[j]:容量为j的背包所能装的最大容量 容量需要倒序 416. 分割等和子集 能否装满 dp[j]:容量为j的背包所能装的最大容量 1049. 最后一块石头的重量 II 尽可…...

自定义类型:联合体和枚举
1. 联合体类型的声明 2. 联合体的特点 3. 联合体大小的计算 4. 枚举类型的声明 5. 枚举类型的优点 6. 枚举类型的使用 欢迎关注 熬夜学编程 创作不易,请多多支持 感谢大家的阅读、点赞、收藏和关注 如有问题,欢迎指正 1. 联合体 1.1 联合体类型的声…...

【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5(下)
【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5(下) 一、导出数据(2022中文版案例)二、安装datasmith插件三、导入数据四、检查导入材质是否正常五、编辑替换材质六、安装模型编辑插件七、编辑替换建筑规则 一、导出数…...

详解51种企业应用架构模式
导读:企业应用包括哪些?它们又分别有哪些架构模式?世界著名软件开发大师Martin Fowler给你答案 01、什么是企业应用 我的职业生涯专注于企业应用,因此,这里所谈及的模式也都是关于企业应用的。(企业应用还…...

【十年java搬砖路】Jumpserver docker版安装及配置Ldap登陆认证
Jumpserver docker 安装启动教程 拉取镜像 docker pull JumpServer启动进行前确保有Redis 和Mysql 创建jumperServer数据库 在MYSQL上执行 创建数据库 登陆MYSQL mysql -u root -p 创建Jumperserveri库 create database jumpserver default charset utf8mb4;可以为jumperSe…...

C\C++内存管理(未完结)
文章目录 一.C\C内存分布二.C语言中动态内存管理方式:malloc/calloc/realloc/free三.C内存管理方式3.1.new/delete操作内置类型3.2.new和delete操作自定义类型 四.operator new与operator delete函数(重要点进行讲解)4.1. operator new与oper…...
一个小时搞定JAVA面向对象(5)——抽象与接口
文章目录 抽象抽象的注意事项static\final\private是否可以修饰抽象方法继承和抽象知识点回顾 接口接口实现总结抽象方法默认方法静态方法成员变量接口的特点接口和抽象类的区别 抽象 关键字: abstract 抽象方法: 修饰符 abstract 返回值类型 方法名(参数); 抽象类: public a…...
图像关键特征描述方法-小目标
图像关键特征描述方法主要包括以下几种: SIFT(尺度不变特征变换): SIFT是一种广泛使用的特征描述方法,它通过尺度空间和梯度方向直方图来描述图像中的关键点。SIFT特征描述具有尺度不变性和旋转不变性,对于光照和视角变化也具有一定的鲁棒性。 SURF(加速稳健特征): SURF…...

【qt15】windeployqt 安装依赖
debug模式vs可以使用qt插件新建qt文件 D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe .\filecopier.exeWindows PowerShell Copyright (C) …...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...