爆火「视频版ControlNet」开源了!靠提示词精准换画风,全华人团队出品
“视频版ControlNet”来了!
让蓝衣战神秒变迪士尼公举:

视频处理前后,除了画风以外,其他都不更改。
女孩说话的口型都保持一致。

正在插剑的姜文,也能“下一秒”变猩球崛起了。

这就是由全华人团队打造的最新视频处理算法CoDeF,发布才几天,迅速在网上爆火。
网友们看了直呼:
这一天天的,虚实分辨越来越难了!

只需要自己拍点东西,然后覆盖上去,就能变成各种各样的动画了。

有人说,只需给它一年时间,就能被用在电影制作上了。
这马上引来其他人的肯定:技术发展真的非常疯狂、非常快。

目前,团队已将这一方法在GitHub上开源。
姿势不变,画风“皮套”随便换
之所以会被称为是“视频版ControlNet”,主要原因在于CoDeF能够对原视频做到精准控制。
(ControlNet实现了根据提示词精准控制图像元素改变,如人物动作、图像结构等)
根据给到的提示词,它仅改变视频的画风,而且是针对完整视频。
比如输入“Chinese ink painting”,风景纪录片能秒变国风水墨大作。

包括水流也能很好跟踪,整个流体动向都没有被改变。

甚至一大片穗子,在原视频里怎么摆动,改变画风后频率和幅度也如出一辙。

在画风改变上,CoDeF也做了很多细节处理,让效果更加逼真合理。
“由春入冬”后,原本有涟漪的河流静止了,天空中的云彩被换成了太阳,更加符合冬日景象。

霉霉变成魔法少女后,耳环被换成了发光宝石,手里的苹果也换成了魔法球。

这样一来,让电影角色一键变老也简单了许多。
皱纹可以“悄无声息”上脸,其他一切都没有变化。

所以,CoDeF是怎么实现的呢?
可跟踪水和烟雾,跨帧一致性更强
CoDeF是英文“the content deformation field”的缩写,即作者在此提出了一种叫做内容形变场的新方法,来用于视频风格迁移任务。
比起静态的图像风格迁移,这种任务的复杂点在于时间序列上的一致性和流畅度。
比如处理水、烟雾这种元素,两帧画面之间的一致性非常重要。
在此,作者“灵机一动”,提出用图片算法来直接解决视频任务。
他们只在一张图像上部署算法,再将图像-图像的转换,提升为视频-视频的转换,将关键点检测提升为关键点跟踪,而且不需要任何训练。
这样一来,相较于传统方法,能够实现更好的跨帧一致性,甚至跟踪非刚性物体。
具体而言,CoDeF将输入视频分解为2D内容规范场(canonical content field)和3D时间形变场(temporal deformation field):
前者用于聚合整个视频中的静态内容;后者则负责记录图像沿时间轴的每个单独帧的转换过程。
利用MLP(多层感知器),每个场都用多分辨率2D或3D哈希表来表示。

在此,作者特意引入了正则化,来保证内容规范场能够继承原视频中的语义信息(比如物体的形状)。
如上图所示,这一系列设计使得CoDeF可以自动支持各种图像算法直接应用于视频处理——
也就是只需利用相应算法提取出来一张规范图像,然后通过时间形变场沿着时间轴传播结果即可。
比如,给CoDeF“套上”本用于图片处理的ControlNet,就可以完成视频风格的“翻译”(也就是我们开头和第一段看的那一堆效果):

“套上”分割一切算法SAM,我们就能轻松做到视频的对象跟踪,完成动态的分割任务:

“套上”Real-ESRGAN,则给视频做超分也是信手拈来……

整个过程非常轻松,不需要对待操作视频进行任何调整或处理。
不仅能处理,还能保证效果,即良好的时间一致性和合成质量。
如下图所示,相比去年诞生的Layered neural atlas算法,CoDeF能够呈现非常忠于原视频的细节,既没有变形也无破坏。

而在根据文本提示修改视频风格的任务对比中,CoDeF全部表现突出,不仅最匹配所给要求,也有着更高的完成度。

跨帧一致性则如下图所示:

一位一作刚本科毕业
这项研究由香港科技大学、蚂蚁团队、浙江大学CAD&CG实验室共同带来。
共同一作有三位,分别是欧阳豪、Yujun Shen和Yuxi Xiao。
其中欧阳豪为港科大博士,师从陈启峰(本文通讯作者之一);本科导师为贾佳亚。曾在MSRA、商汤、腾讯优图实验室实习过,现在正在谷歌实习。

另一位是Qiuyu Wang。Yujun Shen是通讯作者之一。
他是蚂蚁研究所的高级研究科学家,主管交互智能实验室,研究方向为计算机视觉和深度学习,尤其对生成模型和3D视觉效果感兴趣。

第三位一作为Yuxi Xiao才刚刚从武大本科毕业,今年9月开始在浙大CAD&CG实验室读博。
他以一作身份发表的论文Level-S2fM: Structure from Motion on Neural Level Set of Implicit Surfaces,被CVPR2023接收。

论文地址:
https://arxiv.org/abs/2308.07926
项目地址:
https://qiuyu96.github.io/CoDeF/
参考链接:
https://twitter.com/LinusEkenstam/status/1692492872392626284
相关文章:
爆火「视频版ControlNet」开源了!靠提示词精准换画风,全华人团队出品
“视频版ControlNet”来了! 让蓝衣战神秒变迪士尼公举: 视频处理前后,除了画风以外,其他都不更改。 女孩说话的口型都保持一致。 正在插剑的姜文,也能“下一秒”变猩球崛起了。 这就是由全华人团队打造的最新视频处理…...
常用的数据可视化工具有哪些?要操作简单的
随着数据量的剧增,对分析效率和数据信息传递都带来了不小的挑战,于是数据可视化工具应运而生,通过直观形象的图表来展现、传递数据信息,提高数据分析报表的易读性。那么,常用的操作简单数据可视化工具有哪些࿱…...
ssl卸载原理
SSL卸载,也称为SSL解密,是一种将SSL加密数据流卸成非加密的明文数据流的过程。SSL卸载通常在负载均衡器、代理服务器、WAF等设备中实现,可以提高传输效率和安全性。 SSL卸载的原理是将SSL数据流拦截下来,通过设备内置的证书进行解…...
【C语言】动态内存管理,详细!!!
文章目录 前言一、为什么存在动态内存分配二、动态内存开辟函数的介绍1.malloc2.calloc3.realloc4.free 三、动态内存开辟中的常见错误1.误对NULL进行解引用操作2.对于动态开辟的空间进行了越界访问3.对于非动态开辟的内存进行了free操作4.只free掉动态开辟内存的一部分5.多次f…...
2023年国赛 高教社杯数学建模思路 - 案例:退火算法
文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…...
jenkins 日志输出显示时间戳的方式
网上很多方式比较片面,最新版插件直接使用即可无需更多操作。 使用方式如下: 1.安装插件 Timestamper 2.更新全局设置 系统设置-找到 Timestamper 勾选 Enabled for all Pipeline builds 也可修改时间戳格式。 帮助信息中显示 When checked, timesta…...
geacon_pro配合catcs4.5上线Mac、Linux
我的个人博客: xzajyjs.cn 一些链接 Try师傅的catcs4.5项目: https://github.com/TryGOTry/CobaltStrike_Cat_4.5,最新版解压密码见:https://www.nctry.com/2708.html geacon_pro: https://github.com/testxxxzzz/geacon_pro BeaconTool.jar: https:/…...
vue 实现腾讯地图搜索选点功能(附加搜索联想功能)
注意:开发环境、正式环境需在腾讯地图配置ip地址白名单、域名白名单 封装map组件: <template><iframe width"100%" style"border: none;width: 100%;height: 100%;" :src"map_src"></iframe> </t…...
解密长短时记忆网络(LSTM):从理论到PyTorch实战演示
目录 1. LSTM的背景人工神经网络的进化循环神经网络(RNN)的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门(Forget Gate)输入门(Input Gate)记忆单元(Cell State)…...
17.1.2 【Linux】systemd使用的unit分类
systemd 有什么好处? 平行处理所有服务,加速开机流程: 旧的 init 启动脚本是“一项一项任务依序启动”的模式,因此不相依的服务也是得要一个一个的等待。但目前我们的硬件主机系统与操作系统几乎都支持多核心架构了,s…...
vue离线缓存资源文件
本文章主要是解决大文件,实时请求资源浪费网络资源的问题 从而有效的将解决用户体验的问题 话不多说上才艺 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 找到项目中的 index.html 文件,并在 html 标签中加入 manifest"manifest.appcache" 安装 appcache-manifest 包 npm ins…...
2023华为杯研赛数学建模A题B题C题D题E题F题资料 华为杯
本次比赛我们将会全程更新华为杯研赛赛题思路模型及代码,大家查看文末名片获取 之前华为杯相关的资料和助攻可以查看 2022华为杯数学建模研赛选题建议和思路分析_方形件组批优化问题_UST数模社_的博客-CSDN博客 我们华为杯更新的流程如下: A题思路&a…...
星际争霸之小霸王之小蜜蜂(六)--让子弹飞
目录 前言 一、添加子弹设置 二、创建子弹 三、创建绘制和移动子弹函数 四、让子弹飞 五、效果 总结 前言 小蜜蜂的基本操作已经完成了,现在开始编写子弹的代码了。 一、添加子弹设置 在我的预想里,我们的小蜜蜂既然是一只猫,那么放出的子弹…...
opencv简单使用
cv2库安装, conda install opencv-python注意cv2使用时,路径不能有中文。(不然会一直’None’ _ update # 处理中文路径问题 def cv_imread(file_path): #使用之前需要导入numpy、cv2库,file_path为包含中文的路径return cv2.imd…...
SpringBoot 微人事 职称管理模块(十三)
职称管理前端页面设计 在职称管理页面添加输入框 export default {name: "JobLevelMarna",data(){return{Jl:{name:""}}}}效果图 添加一个下拉框 v-model的值为当前被选中的el-option的 value 属性值 <el-select v-model"Jl.titlelevel" …...
动态规划之0-1背包问题
动态规划之0-1背包问题 文章目录 动态规划之0-1背包问题一、先给出代码二、讲解第一步:初始化第二步:动态规划,填表第三步:回溯,找到选择方案总结 三、进阶(用一维数组解决问题) 一、先给出代码…...
为什么需要单元测试?
为什么需要单元测试? 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。 从测试人员角度而言…...
《合成孔径雷达成像算法与实现》Figure3.13——匹配滤波器的三种实现方式
clc clear close all% 参数设置 TBP 80; % 时间带宽积 T 10e-6; % 脉冲持续时间 N_ZD 60; % 零频点位于中点右侧的距离,P58% 参数计算 B TBP/T; …...
Android企业项目开发实训室建设方案
一 、系统概述 Android企业项目开发作为新一代信息技术的重点和促进信息消费的核心产业,已成为我国转变信息服务业的发展新热点:成为信息通信领域发展最快、市场潜力最大的业务领域。互联网尤其是移动互联网,以其巨大的信息交换能力和快速渗透…...
11_Redis经典五大类型源码及底层实现
Redis经典五大类型源码及底层实现 一、Redis数据类型的底层数据结构 SDS动态字符串双向链表压缩列表 zpilist哈希表 hashtable调表 skiplist整数集合 intset快速列表 quicklist紧凑列表 listpack 二、Redis源码地址 Github:https://github.com/redis/redis 三、…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
