CoDeF视频处理——视频风格转化部署使用与源码解析

一、算法简介与功能

CoDef是作为一种新型的视频表示形式,它包括一个规范内容场,聚合整个视频中的静态内容,以及一个时间变形场,记录了从规范图像(即从规范内容场渲染而成)到每个单独帧的变换过程。针对目标视频,这两个场共同优化以通过一个精心设计的渲染流程对其进行重建。我们特意在优化过程中引入了一些正则化项,促使规范内容场从视频中继承语义(例如,物体的形状)信息。
CoDeF 在视频处理中自然地支持图像算法的升级,这意味着可以将图像算法应用于规范图像,并借助时间变形场轻松地将结果传播到整个视频中。CoDeF 能够将图像到图像的转换提升为视频到视频的转换,将关键点检测提升为关键点跟踪,而无需任何训练。更重要的是,由于CoDef的升级策略仅在一个图像上部署算法,与现有的视频到视频转换方法相比,CoDef在处理的视频中实现了更优越的跨帧一致性,甚至成功地跟踪了水和烟雾等非刚性物体。
在这里插入图片描述

二、环境配置

Segment-and-Track-Anything

光线追踪、目标分割

conda create -n sta python==3.10
git clone https://github.com/z-x-yang/Segment-and-Track-Anything.git
cd Segment-and-Track-Anything
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install m2-base
bash script/install.sh
git clone https://github.com/IDEA-Research/GroundingDINO.git
pip install weditor==0.6.4

在这里插入图片描述
https://huggingface.co/bert-base-uncased/tree/main
在这里插入图片描述

一、数据处理

1.剪切视频

把视频剪切成4秒以下的视频

2.拆分视频

使用ffmpeg拆分视频

ffmpeg -r 25 -i all_sequences/mm/mm.mp4 -start_number 0 -pix_fmt rgb24 all_sequences/mm/mm/%5d.png
在这里插入图片描述

3.分割目标

使用 Segment-and-Track-Anything进行目标分割

activate sta
python app.py

然后打开http://127.0.0.1:7860
在这里插入图片描述
然后加载视频
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
复制到数据目录
在这里插入图片描述

4.生成mask图

执行

python preproc_mask.py

在这里插入图片描述

5.生成光线追踪数据

cd data_preprocessing/RAFT
bash run_raft.sh mm

在这里插入图片描述
在这里插入图片描述

二、模型训练

1. 更改配置文件

在configs目录下创建一个和视频数据一个的目录,在目录下添加一个base.yaml文件
在这里插入图片描述
文件内容如下,注意img_wh和canonical_wh这两个参数:

mask_dir: null
flow_dir: nullimg_wh: [720, 1280] #视频尺寸
canonical_wh: [720, 1280] #输出尺寸lr: 0.001
bg_loss: 0.003ref_idx: null # 0N_xyz_w: [8,8,]
flow_loss: 0
flow_step: -1
self_bg: Truedeform_hash: True
vid_hash: Truenum_steps: 10000
decay_step: [2500, 5000, 7500]
annealed_begin_step: 4000
annealed_step: 4000
save_model_iters: 2000

2. 训练模型

新建一个mm_train_multi.sh文件

GPUS=0NAME="$1"
EXP_NAME="$2"ROOT_DIRECTORY="all_sequences/$NAME/$NAME"
MODEL_SAVE_PATH="ckpts/all_sequences/$NAME"
LOG_SAVE_PATH="logs/all_sequences/$NAME"MASK_DIRECTORY="all_sequences/$NAME/${NAME}_masks_0 all_sequences/$NAME/${NAME}_masks_1"
FLOW_DIRECTORY="all_sequences/$NAME/${NAME}_flow"python train.py --root_dir $ROOT_DIRECTORY \--model_save_path $MODEL_SAVE_PATH \--log_save_path $LOG_SAVE_PATH  \--mask_dir $MASK_DIRECTORY \--flow_dir $FLOW_DIRECTORY \--gpus $GPUS \--encode_w --annealed \--config configs/${NAME}/${EXP_NAME}.yaml \--exp_name ${EXP_NAME}

运行训练脚本,训练时间大概就几分钟,看GPU的大小:

bash scripts/mm_train_multi.sh mm base

在这里插入图片描述

三、测试模型

1.测试数据

在scripts目录下创建一个新的mm_test_multi.sh,文件内容如下:

GPUS=0NAME="$1"
EXP_NAME="$2"ROOT_DIRECTORY="all_sequences/$NAME/$NAME"
LOG_SAVE_PATH="logs/test_all_sequences/$NAME"MASK_DIRECTORY="all_sequences/$NAME/${NAME}_masks_0 all_sequences/$NAME/${NAME}_masks_1"WEIGHT_PATH=ckpts/all_sequences/$NAME/${EXP_NAME}/${NAME}.ckptpython train.py --test --encode_w \--root_dir $ROOT_DIRECTORY \--log_save_path $LOG_SAVE_PATH \--mask_dir $MASK_DIRECTORY \--weight_path $WEIGHT_PATH \--gpus $GPUS \--config configs/${NAME}/${EXP_NAME}.yaml \--exp_name ${EXP_NAME} \--save_deform False

运行脚本文件:

bash scripts/mm_test_multi.sh mm base

四、错误处理

1. windows不支持NCCL backend

Windows RuntimeError: Distributed package doesn‘t have NCCL built in
在这里插入图片描述

2. wsgiref-0.1.2

SyntaxError: Missing parentheses in call to ‘print’. Did you mean print(…)?
pip install ./wsgiref-0.1.2
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中的this指向:如何避免常见的this陷阱

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-this指向 目录 this指向详解 强行改变 this 指向 修改上下文中的this…

17、pytest自动使用fixture

官方实例 # content of test_autouse_fixture.py import pytestpytest.fixture def first_entry():return "a"pytest.fixture def order():return []pytest.fixture(autouseTrue) def append_first(order, first_entry):return order.append(first_entry)def test_s…

数学建模-基于机器学习的家政行业整体素质提升因素分析

基于机器学习的家政行业整体素质提升因素分析 整体求解过程概述(摘要) 家政服务业即为家庭提供多种类服务的专门行业,在第三产业中占有重要地位。但近年来,由于人工智能家居产业的发展与客户对家政从业者的要求水平不断提高,家政行业仍面对较…

graphics.h安装后依旧报错

问题解决一: 我在网上找了很多,都说找到graphics.h这个文件,放到include这个目录下,我照做了,然后 当我进行编译时,自动跳到graphics.h这个文件并出现一堆报错 问题解决二: 看一下这两个文件是…

Linux库之动态库静态库

一、什么是库(Library) 二、库的分类 三、静态库、动态库优缺点 四、静态库的制作和使用 五、动态库的制作和使用 SO-NAME–解决主版本号之间的兼容问题 基于符号的版本机制 共享库系统路径 共享库的查找过程 有用的环境变量 gcc 编译器常用选项 Linux共…

STM32F1外部中断EXTI

目录 1. EXTI简介 2. EXTI基本结构 3. AFIO复用IO口 4. EXTI框图 5. EXTI程序配置 5.1 首先先配置要使用的GPIO口的引脚 5.2 配置AFIO数据选择器,选择想要中断的引脚 5.3 EXTI配置 1. EXTI简介 EXTI(Extern Interrupt)外部中…

思腾云计算中心 | 5千平米超大空间,基础设施完善,提供裸金属GPU算力租赁业务

2021年,思腾合力全资收购包头市易慧信息科技有限公司,正式开启云计算业务。思腾云计算中心占地2400平米,位于包头市稀土高新区,毗邻多家知名企业,地理位置优越,交通便利,是区内重要的信息化产业…

配置集群免密登录

文章目录 前言配置集群免密登录1. 设置主机名与 IP 地址的映射关系2. 生成 SSH 密钥对3. 将公钥复制到集群节点4. 测试免密登录5. 配置节点之间互相免密登录 总结 前言 本文介绍了如何配置集群之间免密登录,以便在搭建集群环境时方便地进行节点之间的通信。通过设置…

【开源】基于Vue.js的公司货物订单管理系统

文末获取源码,项目编号: S 082 。 \color{red}{文末获取源码,项目编号:S082。} 文末获取源码,项目编号:S082。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供…

19、pytest通过mark标记测试函数

官方实例 [pytest] markers slow:marks tests as slow(deselect with -m "not slow")serial# content of test_mark.py import pytestpytest.mark.slow def test_mark_function():print("test_mark_function was invoked")assert 0解读与实操 通过使用p…

FairGuard无缝兼容小米澎湃OS、ColorOS 14 、鸿蒙4!

随着移动互联网时代的发展,各大手机厂商为打造生态系统、构建自身的技术壁垒,纷纷投身自研操作系统。 而对于一款游戏安全产品,在不同操作系统下,是否能够无缝兼容并且提供稳定的、高强度的加密保护,成了行业的一大痛…

7、信息收集(2)

文章目录 一、目录扫描1.1 目录扫描的原因1.2 目录扫描方法 二、指纹识别2.1 系统指纹识别2.2 中间件指纹识别2.3 web程序指纹识别2.4 防火墙指纹识别2.5 其他工具使用 三、Google Hacking3.1 逻辑运算符3.2 基本语法3.3 相关案例 一、目录扫描 1.1 目录扫描的原因 寻找网站后…

翻译: 大语言模型LLMs能做什么和不能做什么 保存笔记What LLMs can and cannot do

生成式 AI 是一项惊人的技术,但它并非万能。在这个视频中,我们将仔细看看大型语言模型(LLM)能做什么,不能做什么。我们将从我发现的一个有用的心理模型开始,了解它能做什么,然后一起看看 LLM 的…

【Azure 架构师学习笔记】- Azure Databricks (2) -集群

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (1) - 环境搭建 前言 在上文中提到了ADB 的其中一个核心就是集群,所以这里专门研究一下ADB 的集群。 ADB 集群 首先了解一下ADB…

《SpringBoot项目实战》第六篇—接口防抖(防重复提交)的一些方式

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 第六篇—接口防抖(防重复提交)的一些方式 本文参考项目源码地址:summo-springboot-i…

SpringBoot基础知识

SpringBoot简介 回顾什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。 Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 Spring是如何简化Java开发的 为了降低Ja…

记录:Unity脚本的编写9.0

目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容,我就说怎么总感觉好像少了什么东西(心虚 那就在这里写一下关于射线的内容吧,将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…

22、pytest多个参数化的组合

官方实例 # content of test_multi_parametrie.py import pytestpytest.mark.parametrize("x",[0,1]) pytest.mark.parametrize("y",[2,3]) def test_foo(x,y):print("{}-{}".format(x,y))pass解读与实操 要获得多个参数化参数的所有组合&…

什么是HTTP/2?它与HTTP/1.x相比有什么改进?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

C++ 函数详解

目录 函数概述 函数的分类 函数的参数 函数的调用 函数的嵌套调用 函数的链式访问 函数声明和定义 函数递归 函数概述 函数——具有某种功能的代码块。 一个程序中我们经常会用到某种功能,如两数相加,如果每次都在需要用到时实现,那…