StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成

news2025/1/1 18:48:40

文章目录

  • 一、项目介绍
  • 二、项目部署
    • 模型的权重下载
    • 提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)
    • 提取人脸(这个也可以先不看)
    • 进行图片的生成
  • 三、模型部署报错

一、项目介绍

由复旦、微软、虎牙、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以内,不然会爆内存被杀死

参考的图像
在这里插入图片描述

生成的结果
在这里插入图片描述

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

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

相关文章

最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解LRMOP1-LRMOP6及工程应用---盘式制动器设计,提供完整MATLAB代码

一、麋鹿优化算法 麋鹿优化算法(Elephant Herding Optimization,EHO)是2024年提出的一种启发式优化算法,该算法的灵感来源于麋鹿群的繁殖过程,包括发情期和产犊期。在发情期,麋鹿群根据公麋鹿之间的争斗分…

螺杆支撑座在运用中会出现哪些问题?

螺杆支撑座是一种用于支撑滚珠螺杆的零件,通常用于机床、数控机床、自动化生产线等高精度机械设备中。在运用中可能会出现多种问题,这些问题源于多个方面,以下是对可能出现的问题简单了解下: 1、安装不当:安装过程中没…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统,并不内置像Web前端(例如 Vue.js或React中)那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】

1. 常用资料以及官方网站 无人机飞控PX4用户使用手册(无人机基本设置、地面站使用教程、软硬件搭建等):https://docs.px4.io/main/en/ PX4固件开源地址:https://github.com/PX4/PX4-Autopilot 飞控硬件、数传模块、GPS、分电板等…

Windows上缺少xaudio2_9.dll是什么原因?

一、文件丢失问题:Windows上缺少xaudio2_9.dll是什么原因? xaudio2_9.dll是DirectX音频处理库的一个组件,它支持游戏中的音频处理功能。当你在Windows系统上运行某些游戏或音频软件时,如果系统提示缺少xaudio2_9.dll文件&#xf…

冥想的实践

这是我某一天的正念和冥想实践,我对正念练习、冥想练习进行了分别的统计。 正念练习:1分钟**5次 冥想:15分钟10分钟 正念练习,基本在工作休息时间练习。当然,工作过程中,也有一部分时间会有正念的状态&am…

一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类

机器学习实战通常是将理论与实践结合,通过实际的项目或案例,帮助你理解并应用各种机器学习算法。下面是一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的…

Redis 实战篇 ——《黑马点评》(上)

《引言》 在进行了前面关于 Redis 基础篇及其客户端的学习之后,开始着手进行实战篇的学习。因内容很多,所以将会分为【 上 中 下 】三篇记录学习的内容与在学习的过程中解决问题的方法。Redis 实战篇的内容我写的很详细,为了能写的更好也付出…

Intent--组件通信

组件通信1 获取子活动的返回值 创建Activity时实现自动注册!【Activity必须要注册才能使用】 默认 LinearLayout 布局,注意 xml 中约束布局的使用; 若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可,记得 设置线性布局…

word参考文献第二行缩进对齐

刚添加完参考文献的格式是这样: ”段落“—>缩进修改、取消孤行控制 就可以变成

UE(虚幻)学习(一) UE5.3.2和VS2022的安装以及遇到的问题和一些CS8604、CA2017报错问题.

最近工作很多东西是UE搞的,工作安排上也稍微缓口气,来学学UE,因为同事都用的UE5.3,所以就从UE5.3开始吧,之前学习过UE4,放上两年什么都不记得了。还是需要做一些记录。 本来安装不想写什么,谁知…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能:解析命令行参数,设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能:初始化日志记录器,配置监控系统项目经理使用监控和记录工具,实时跟踪施工进度和质量…

systemverilog语法:assertion summary

topics assertion 介绍 Property在验证中的应用 ended表示sequence执行结束。 property 立即断言不消耗时间,好像if…else…,关键字不含property. 并发断言消耗时间,关键字含property. 立即断言 并发断言

blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质

描述:在blender中合并的模型导出为glb,在threejs中导入仍显示多个mesh,并不是统一的整体,导致需要整体高亮或者使用DragControls等不能统一控制。 原因:模型有多个材质,在blender中合并的时候,…

关于最新MySQL9.0.1版本zip自配(通用)版下载、安装、环境配置

一、下载 从MySQL官网进行下载MySQL最新版本,滑到页面最下面点击社区免费版,(不是企业版) 点击完成后选择自己想要下载的版本,选择下载zip压缩,不用debug和其他的东西。 下载完成后进入解压,注…

4.银河麒麟V10(ARM) 离线安装 MySQL

1. 系统版本 [rootga-sit-cssjgj-db-01u ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.39.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (SP3) /(La…

InfoNCE Loss详解(上)

引言 InfoNCE对比学习损失是学习句嵌入绕不开的知识点,本文就从头开始来探讨一下它是怎么来的。 先验知识 数学期望与大数定律 期望(expectation,expected value,数学期望,mathematical expectation)是随机变量的平均值&#…

机器人C++开源库The Robotics Library (RL)使用手册(一)

强大的、完整的C机器人开源库 1、是否可以免费商用?2、支持什么平台?3、下载地址4、开始! 1、是否可以免费商用? Robotics Library(RL)是一个独立的C库,用于机器人运动学、运动规划和控制。它涵…

超快速的路径优化IKD-SWOpt:SHIFT Planner 中增量 KD 树滑动窗口优化算法详解

IKD-SWOpt:SHIFT Planner 中增量 KD 树滑动窗口优化算法详解 今天本博主王婆卖瓜自卖自夸😄,介绍自己paper中的算法,本算法已经持续开源中(部分关键内容)Github,之前很多读者朋友一直说要详细讲讲路径优化算法&#x…

meshy的文本到3d的使用

Meshy官方网站: 中文官网: Meshy官网中文站 ​编辑 Opens in a new window ​编辑www.meshycn.com Meshy AI 中文官网首页 英文官网: Meshy目前似乎还没有单独的英文官网,但您可以在中文官网上找到英文界面或相关英文资料。 链…