StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成
文章目录
- 一、项目介绍
- 二、项目部署
- 模型的权重下载
- 提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)
- 提取人脸(这个也可以先不看)
- 进行图片的生成
- 三、模型部署报错
一、项目介绍
由复旦、微软、虎牙、CMU的研究团队提出的StableAnimator框架,实现了高质量和高保真的ID一致性人类视频生成。
当前的人类图像动画扩散模型很难确保身份 (ID) 的一致性。本文介绍了 StableAnimator,这是第一个端到端保留 ID 的视频扩散框架,它无需任何后处理即可合成高质量视频,以参考图像和一系列姿势为条件。 StableAnimator 以视频扩散模型为基础,包含精心设计的模块,用于训练和推理,力求身份一致性。特别是,StableAnimator 首先分别使用现成的提取器计算图像和面部嵌入,并通过使用全局内容感知面部编码器与图像嵌入交互来进一步细化面部嵌入。然后,StableAnimator 引入了一种新颖的分布感知 ID 适配器,可防止时间层造成的干扰,同时通过对齐保留 ID。在推理过程中,我们提出了一种新颖的基于 Hamilton-Jacobi-Bellman (HJB) 方程的优化,以进一步提高人脸质量。我们证明,求解 HJB 方程可以集成到扩散去噪过程中,所得解约束去噪路径,从而有利于 ID 保留。多个基准测试的实验在定性和定量上都证明了 StableAnimator 的有效性。
github项目地址
二、项目部署
浏览器下载pytorch、torchvision、torchaudio
下载pytorch相关的网页
下载后用命令安装
pip install torchaudio-2.5.1+cu124-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
模型的权重下载
将huggingface下的模型权重下的权重文件按照如下的文件目录进行下载
StableAnimator/
├── DWPose
├── animation
├── checkpoints
│ ├── DWPose
│ │ ├── dw-ll_ucoco_384.onnx
│ │ └── yolox_l.onnx
│ ├── Animation
│ │ ├── pose_net.pth
│ │ ├── face_encoder.pth
│ │ └── unet.pth
│ ├── SVD
│ │ ├── feature_extractor
│ │ ├── image_encoder
│ │ ├── scheduler
│ │ ├── unet
│ │ ├── vae
│ │ ├── model_index.json
│ │ ├── svd_xt.safetensors
│ │ └── svd_xt_image_decoder.safetensors
│ └── inference.zip
├── models
│ │ └── antelopev2
│ │ ├── 1k3d68.onnx
│ │ ├── 2d106det.onnx
│ │ ├── genderage.onnx
│ │ ├── glintr100.onnx
│ │ └── scrfd_10g_bnkps.onnx
├── app.py
├── command_basic_infer.sh
├── inference_basic.py
├── requirement.txt
提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)
将参考图像,需要提取关节点的图像放在target_images里,命名为frame_i
运行如代码从target_images中提取关节点的信息
python DWPose/skeleton_extraction.py --target_image_folder_path="/media/dell/DATA/RK/StableAnimator-main/inference/test/target_images" --ref_image_path="/media/dell/DATA/RK/StableAnimator-main/inference/case-1/reference.png" --poses_folder_path="/media/dell/DATA/RK/StableAnimator-main/inference/test/pose"
提取结果报错在pose文件夹里
提取人脸(这个也可以先不看)
需要将以下模型权重下载到指定文件夹里
Downloading: “https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth” to /home/dell/anaconda3/envs/stableanimator/lib/python3.10/site-packages/facexlib/weights/detection_Resnet50_Final.pth
Downloading: “https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth” to /home/dell/anaconda3/envs/stableanimator/lib/python3.10/site-packages/facexlib/weights/parsing_parsenet.pth
Downloading: “https://github.com/xinntao/facexlib/releases/download/v0.2.0/parsing_bisenet.pth” to /home/dell/anaconda3/envs/stableanimator/lib/python3.10/site-packages/facexlib/weights/parsing_bisenet.pth
运行一下带代码,从一个包含图片的文件夹中提取每张图片的人脸掩码,存储到当前同级文件夹的face文件夹里
python face_mask_extraction.py --image_folder="/media/dell/DATA/RK/StableAnimator-main/inference/case-1"
进行图片的生成
bash command_basic_infer.sh
将以下文件夹的一些参数修改为你自己的参数
CUDA_VISIBLE_DEVICES=0 python inference_basic.py \--pretrained_model_name_or_path="path/checkpoints/SVD/stable-video-diffusion-img2vid-xt" \--output_dir="/media/dell/DATA/RK/StableAnimator-main/inference/output" \--validation_control_folder="/media/dell/DATA/RK/StableAnimator-main/inference/test/pose" \--validation_image="path/inference/case-1/reference.png" \--width=576 \--height=1024 \--guidance_scale=3.0 \--num_inference_steps=25 \--posenet_model_name_or_path="path/checkpoints/Animation/pose_net.pth" \--face_encoder_model_name_or_path="path/checkpoints/Animation/face_encoder.pth" \--unet_model_name_or_path="path/checkpoints/Animation/unet.pth" \--tile_size=16 \--overlap=4 \--noise_aug_strength=0.02 \--frames_overlap=4 \--decode_chunk_size=4 \--gradient_checkpointing
三、模型部署报错
①OSError: Can’t load image processor for ‘/media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD/stable-video-diffusion-img2vid-xt’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘/media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD/stable-video-diffusion-img2vid-xt’ is the correct path to a directory containing a preprocessor_config.json file
模型的路径写错了,/media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD 应该写这个,刚刚的路径最后一个文件夹根本不存在
② Error no file named model.fpl6.safetensors found in directory /media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD.
读取不了图像编码器的权重
OSError: Error no file named pytorch_model.bin, tf_model.h5, model.ckpt.index or flax_model.msgpack found in directory /media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD/image_encoder.
将inference_basic.py文件中的第226行左右的模型加载代码进行修改
这里是原来的
image_encoder = CLIPVisionModelWithProjection.from_pretrained(args.pretrained_model_name_or_path, subfolder="image_encoder", revision=args.revision)
将其修改为以下
image_encoder = CLIPVisionModelWithProjection.from_pretrained("/media/dell/DATA/RK/StableAnimator-main/checkpoints/SVD/image_encoder", revision="fp16",variant="fp16")
注意这两个要一起加才能识别模型的权重
revision="fp16",variant="fp16"
revision=“fp16” 会告诉系统加载 FP16 精度的模型,而 variant=“fp16” 则指定推理或训练过程中的精度
两者协同作用,确保你在运行时使用的是 FP16 精度的模型,避免错误或不一致的精度设置
其他的vae和unet 的加载也要改成类似的
③模型运行后直接被杀死了
可能是内容爆掉了
我把unet的加载放到了 cuda里,就正常运行了,但是爆别的错误④
④IndexError: list index out of range
我选择将输入的数据换成官方的数据试试
官方下载权重的文件夹里面的有一个inference的zip的压缩包
可以跑起来了,显存占用15个G
⑤RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 30 but got size 29 for tensor number 1 in the list.
注意这个问题是由于我自己输出的图像的长宽不是32的整数(宽为904)倍导致的。
四、模型的生成结果
生成的流程
用官方提供的姿势文件夹(pose)
用自己的参考图像一张(png)
然后进行生成
用官方提供的第一个case的pose(包含15张图片)(如果pose的帧数太多很容易被杀死)
这是官方的512 * 512 的像素的
推理需要一分钟的时间,生成图片的大小改为768*1024
(官方的代码里给的是576 * 1024)
生成的结果①
②参考图像用的自己的
生成图片的大小改为512 * 512的
(官方的代码里给的是576 * 1024,感觉生成的图像有些扭曲)
注意,参考图像需要和pose的比例一致(比如pose是全身的,参考图像是半身的话,生成的内容会不一致。)
参考图像用的这张
生成的结果
可以看到角色的一致性还是有些问题,需要调整一些参数
③我用动漫的角色作为参考图像的话生成的效果并不保真
④将输入图像裁剪为和实力图像一样的大小:512 * 512 或者 512 * 904
pose 的帧数选择20以内,不然会爆内存被杀死
参考的图像
生成的结果
相关文章:

StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成
文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…...
3.阿里云flinkselectdb-py作业
1.概述 Python API中文文档 本文介绍在阿里云实时计算flink中使用python作业,把oss中的数据同步数据到阿里云selectdb的过程。python简单的语法特性更适合flink作业的开发; 先说结论: 在实际开发中遇到了很多问题,导致python作业基本基本无法…...
MATLAB语言的网络编程
标题:MATLAB中的网络编程:深入探索与实践 一、引言 在现代科学和工程领域中,网络编程已经成为了数据处理、信号分析、模型构建等众多任务中不可或缺的一环。MATLAB作为一款强大的数学计算软件,不仅提供了丰富的数值计算功能&…...

深入浅出 Linux 操作系统
深入浅出 Linux 操作系统 引言 在当今数字化的时代,Linux 操作系统无处不在。从支撑互联网巨头庞大的数据中心,到嵌入智能家居设备的微型芯片,Linux 都发挥着关键作用。然而,对于许多人来说,Linux 仍笼罩着一层神秘的…...
golang实现生产者消费者模式
在Go语言中,生产者消费者模式可以通过使用Goroutines和Channels来实现。Goroutines允许并发执行,而Channels则用于在生产者和消费者之间安全地传递数据。 生产者消费者模式的基本思路 生产者:负责生成数据并将其放入一个共享的缓冲区…...

自动化测试-Pytest测试
目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest是一个非常流行的Python测试框架,它支持简单的单元测试和复杂的功能测试,具有易于上手、功…...
Ingress-Nginx Annotations 指南:配置要点全方面解读(下)
文章目录 1.HTTP2 Push Preload2.Server Alias3.Server snippet4.Client Body Buffer Size5.External Authentication6.Global External Authentication7.Rate Limiting8.Global Rate Limiting9.Permanent Redirect10.Permanent Redirect Code11.Temporal Redirect12.SSL Passt…...
【QED】等式构造
文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接🔗 题目描述 有关 「上述等式为何正确」 的问题解决了,然而 「如何构造出上述那种让人啼笑皆非的正确等式」 成为了一个新的问题。 我们认…...

Kafka数据迁移全解析:同集群和跨集群
文章目录 一、同集群迁移二、跨集群迁移 Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。 一、同集群迁移 应用场景: broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。 实践: 将需要新添加…...

Debian安装配置RocketMQ
安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…...

vue之axios基本使用
文章目录 1. axios 网络请求库2. axiosvue 1. axios 网络请求库 <body> <input type"button" value"get请求" class"get"> <input type"button" value"post请求" class"post"> <!-- 官网提供…...

三只脚的电感是什么东西?
最近在做加湿器,把水雾化的陶瓷片需要有专门的驱动电路。 我参考了某宝卖家的驱动板以及网上的开源项目,发现了驱动电路的核心就是一个三脚电感。 在此之前我都没注意过这玩意,三脚电感不也还是电感嘛? 今天我们就来看看三脚电…...
【数据库学习笔记】SQL触发器(例题+代码)
数据库SQL 1、触发器概念 (1)触发器(trigger)是用户定义在关系表上的一类由事件驱动的存储过程,由服务器自动激活。 (2)触发器可进行更为复杂的检查和操作,具有更精细和更强大的数…...

Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…...

BAPI_BATCH_CHANGE在更新后不自动更新批次特征
1、问题介绍 在CL03中看到分类特性配置了制造日期字段,并绑定了生产日期字段MCH1~HSDAT MSC2N修改批次的生产日期字段时,自动修改了对应的批次特性 但是通过BAPI:BAPI_BATCH_CHANGE修改生产日期时,并没有更新到批次特性中 2、BAPI…...

顶会评测集解读-AlignBench: 大语言模型中文对齐基准
评测集社区 CompssHub 作为司南 OpenCompass大模型评测体系的重要组成部分,致力于简化并加快研究人员和行业人士搜索和使用评测集的过程。评测集社区 CompssHub 目前已收录了学科、推理、知识、代码等12个方向的评测集,欢迎大家探索。 为了将评测集社区…...

MySQL外键类型与应用场景总结:优缺点一目了然
前言: MySQL的外键简介:在 MySQL 中,外键 (Foreign Key) 用于建立和强制表之间的关联,确保数据的一致性和完整性。外键的作用主要是限制和维护引用完整性 (Referential Integrity)。 主要体现在引用操作发生变化时的处理方式&…...

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的网上书店管理系统的设计与实现
开题报告 本研究论文主要介绍了基于Spring Boot框架开发的全面网上书店管理系统的构建与实现。该系统以用户为核心,提供了丰富的个性化服务功能。首先,系统支持用户进行便捷的登录注册操作,并具备安全可靠的密码修改机制,同时允许…...

力扣面试题 - 40 迷路的机器人 C语言解法
题目: 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。 网格中的障碍物和空…...

ElementPlus 自定义封装 el-date-picker 的快捷功能
文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下,但是不太满足我们用户想要的快捷功能,因为不太多,因此需要我们自己封装一些,方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...