多模态——使用stable-video-diffusion将图片生成视频

这篇具有很好参考价值的文章主要介绍了多模态——使用stable-video-diffusion将图片生成视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 内容简介

近期,stabilityAI发布了一个新的项目,是将图片作为基础,生成一个相关的小视频,其实也算是其之前研究内容的扩展。早在stable-diffusion的模型开源出来的时候,除了由prompt生成图片之外,也可以生成连续帧的短视频。

本文主要是体验一下stable-video-diffusion的使用,以及对其使用方法进行简单的介绍。具体原理相关内容并不是我的主要研究方法,也就不在此展开介绍了。

下面的这个小火箭就是项目的示例图片,生成视频之后,小火箭可以发射升空。

多模态——使用stable-video-diffusion将图片生成视频,生成模型,计算机视觉,实验记录,生成模型,视频生成,多模态,stable diffusion

项目地址:
HF:https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt
git:https://github.com/Stability-AI/generative-models
论文地址:
https://stability.ai/research/stable-video-diffusion-scaling-latent-video-diffusion-models-to-large-datasets

观前提醒:此项目消耗显存较多,最好是48G以上,请根据实际情况判断是否继续尝试。

1. 运行环境

这里提供一下我的运行环境以供大家参考。

系统:CentOS 7
Python:3.10
驱动:470.63.01
CUDA:11.4
cudnn:8.5.0
torch:2.0.1+cu117
torchvision:0.15.2+cu117

其他模块参考https://github.com/Stability-AI/generative-models/blob/main/requirements/pt2.txt.

2. 模型下载

由于国内目前不能正常访问HF了,所以代码的一键运行可能会遇到网络连接的问题,于是可以考虑将模型先下载到本地,然后直接从本地读取模型。需要下载的模型包括:

  • laion/CLIP-ViT-H-14-laion2B-s32B-b79K
  • ViT-L/14
  • stable-video-diffusion-img2vid-xt

3. 代码梳理

代码主要参考官方git上的样例脚本:https://github.com/Stability-AI/generative-models/blob/main/scripts/sampling/simple_video_sample.py

3.1 修改yaml文件中的svd路径

模型的创建用到了yaml配置文件,所以需要把git中的svd_xt.yaml等yaml文件下载下来,并且将其中的模型地址ckpt_path,修改为第2部分中,从HF下载的stable-video-diffusion-img2vid-xt/svd_xt.safetensors的地址。

svd_xt_image_decoder.yaml同理。

3.2 修改DeepFloyDataFiltering的vit路径

注意运行脚本的import部分:

import math
import os
from glob import glob
from pathlib import Path
from typing import Optional

import cv2
import numpy as np
import torch
from einops import rearrange, repeat
from fire import Fire
from omegaconf import OmegaConf
from PIL import Image
from torchvision.transforms import ToTensor

# from scripts.util.detection.nsfw_and_watermark_dectection import \
#     DeepFloydDataFiltering
# from sgm.inference.helpers import embed_watermark
# from sgm.util import default, instantiate_from_config

找到其中的DeepFloyDataFiltering,将其中的路径修改为2中下载的ViT-L-14.pt的路径。

3.3 修改open_clip的clip路径

在python环境中,找到…lib/python3.10/site-packages/open_clip/factory.py,大约在210行的if model_cfg is None之后,添加:

if model_cfg is None:
    with open('.../CLIP-ViT-H-14-laion2B-s32B-b79K/open_clip_config.json', 'r') as f:
    model_cfg = json.load(f)['model_cfg']

其中的路径是2中下载的clip的路径。

3.4 代码总体结构

代码的运行就是参考https://github.com/Stability-AI/generative-models/blob/main/scripts/sampling/simple_video_sample.py的结构,我是在jupyter中执行的,下面给出我的代码的结构以供参考,所包含的函数和类只给出了名称,其具体内容均可在原项目的git中找到。

import math
import os
from glob import glob
from pathlib import Path
from typing import Optional

import cv2
import numpy as np
import torch
from einops import rearrange, repeat
from fire import Fire
from omegaconf import OmegaConf
from PIL import Image
from torchvision.transforms import ToTensor

# from scripts.util.detection.nsfw_and_watermark_dectection import \
#     DeepFloydDataFiltering
from sgm.inference.helpers import embed_watermark
from sgm.util import default, instantiate_from_config

import clip
import torchvision.transforms as T

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

# 注意这里的路径,是配置文件yaml所在的目录,我直接把yaml放在同级目录了
RESOURCES_ROOT = './'

def load_model_weights(path: str):

def load_img(path: str) -> torch.Tensor:

# 注意将self.clip_model, _ = clip.load中的路径修改为下载的ViT-L-14.pt路径
class DeepFloydDataFiltering(object):

def predict_proba(X, weights, biases):

def get_unique_embedder_keys_from_conditioner(conditioner):

def clip_process_images(images: torch.Tensor) -> torch.Tensor:

def get_batch(keys, value_dict, N, T, device):

def load_model(...

# 在这个方法里修改输入图像的路径
def sample(...

# 执行:可以不用Fire,直接调用即可
sample()

所有的方法均可在项目的git中找到,找不到的话可以直接在git搜索对应的函数名。

4. 资源消耗

官方提供的样例图片,尺寸为(1024, 576),在所有参数均选择默认的情况下,占用显存约为60G。

当我使用的图片为手机原图时,程序很容易就OOM了,所以对于一般手机的相片,可以将尺寸压缩到(960, 720),显存消耗就大概维持在60G。

图片的裁剪主要用到PIL模块,非常方便:
(1) 加载图片:

from PIL import Image
img = Image.open("image.png")

(2) 裁剪图片:

img = img.crop((left, top, right, bot))

(3) 缩放图片:

img = img.resize((960, 720))

需要注意的是,此项目似乎并不能使用cpu进行计算,也不能将device设置成’cuda:0’的方法来指定显卡,但是可以利用os.environ[‘CUDA_VISIBLE_DEVICES’] = '0’的方法来指定显卡。

关于图片的帧数,目前还没有进一步实验,猜测应该是代码中的num_frames参数来控制。

5. 效果预览

下面展示一下我用自己拍的照片的生成效果:
多模态——使用stable-video-diffusion将图片生成视频,生成模型,计算机视觉,实验记录,生成模型,视频生成,多模态,stable diffusion

381b3b2a5906da699b1271fc6695f89f

多模态——使用stable-video-diffusion将图片生成视频,生成模型,计算机视觉,实验记录,生成模型,视频生成,多模态,stable diffusion

c06e3a2fa85fb925e6a23fe9064cacc6

多模态——使用stable-video-diffusion将图片生成视频,生成模型,计算机视觉,实验记录,生成模型,视频生成,多模态,stable diffusion

6a5943a31f38a8b87e54b0394ddf2d16

从效果来看,在前几帧的生成效果通常比较好,随着帧数的推移,视频的部分内容可能会发生形变。尤其是在图三中,随着西郊线小火车由远及近,模型“脑补”出的列车部分开始变得不够真实。

经过我的一些测试,如果输入的图片是街道,以及行人车辆的话,镜头会顺着街道移动,行人和车辆也会移动;如果输入图片是动物,则需要动物主体的分辨率需要高,否则动物主体可能形变失真,如果是人像或静物,则镜头一般只是左右晃动。

总的来说,模型的效果是让人惊喜,但可以预见的。尽管模型在生成所需step上与之前的工作相比,有了很大的改善,但整个生成过程仍然需要较大的显存消耗。

与此同时,图像生成类任务应该是有可以输入prompt的地方以指导生成,但是在该项目中,暂时还没找到文本编码器。希望随着技术的发展,通过文本来指导图片生成视频的,或利用部分关键帧来生成连续视频的技术,可以早日成熟并普及。在今后的学习中,看到有趣的开源项目,我也会试着体验并与大家分享。文章来源地址https://www.toymoban.com/news/detail-753025.html

到了这里,关于多模态——使用stable-video-diffusion将图片生成视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable Diffusion 使用 SadTalker 生成图片数字人

    Heygen和D-ID等照片转视频的工具,都需要在线付费使用。本次介绍一个SadTalker数字人。SadTalker有多种使用方式,包括完整安装程序和stable diffusion插件模式。安装程序操作较繁琐,因此推荐stable diffusion插件模式。 打开SD进入扩展复制链接 https://github.com/OpenTalker/SadTalker.git 到安装

    2024年02月13日
    浏览(77)
  • Python 使用 Stable Diffusion API 生成图片示例

    代码: 输出: 说明: 运行后,图片以及 JSON 将会输出到当前目录下 output 中; TIP: 当然前提是你已经部署好 Stable Diffusion API 服务; 并且安装好跟我一样的模型以及一些相关的 LoRA ;

    2024年02月16日
    浏览(77)
  • 最强文生图跨模态大模型:Stable Diffusion

    Stable diffusion是一种潜在的文本到图像的扩散模型。基于之前的大量工作(如DDPM、LDM的提出),并且在Stability AI的算力支持和LAION的海量数据支持下,Stable diffusion才得以成功。 Stable diffusion能够在来自 LAION- 5B 数据库子集的512x512图像上训练潜在扩散模型。与谷歌的Imagen类似,这

    2024年02月03日
    浏览(46)
  • 使用Dino+SAM+Stable diffusion 自动进行图片的修改

    SAM 是Mata发布的“Segment Anything Model”可以准确识别和提取图像中的对象。 它可以分割任何的图片,但是如果需要分割特定的物体,则需要需要点、框的特定提示才能准确分割图像。 所以本文将介绍一种称为 Grounding Dino 的技术来自动生成 SAM 进行分割所需的框。 除了分割以外

    2024年02月03日
    浏览(39)
  • AI图片生成Stable Diffusion参数及使用方式详细介绍

            Stable Diffusion环境搭建与运行请参考上一篇博文《AI图片生成Stable Diffusion环境搭建与运行》,地址为“https://blog.csdn.net/suiyingy/article/details/128896426”。运行成功后,网页浏览器显示页面主要包括txt2img、img2img、Extras、PNG Info、Checkpoint Merger、Train、Settings和Extensions等八

    2024年02月08日
    浏览(90)
  • AI 视频 | Stable Video Diffusion 来了!(附体验地址)

    11 月 21 日,Stability AI 推出了 Stable Video Diffusion,这是 Stability AI 的第一个基于图像模型 Stable Diffusion 的生成式视频基础模型。 目前 Stability AI 已经在 GitHub 上开源了 Stable Video Diffusion 的代码,在 Hugging Face 上也可以找到模型本地运行所需要的 weights。 「GitHub」 https://github.com/

    2024年02月04日
    浏览(86)
  • 图生图—AI图片生成Stable Diffusion参数及使用方式详细介绍

            本文为博主原创文章,未经博主允许不得转载。         本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。         Stable Diffusion webui的详细安装步骤以及文生图(txt2img)功能详细介绍

    2024年02月08日
    浏览(90)
  • 在Ubuntu上部署Stable Video Diffusion动画制作

    Stable Diffusion团队推出的开源模型Stable Video Diffusion,支持生成约3秒的视频,分辨率为576×1024。通过测试视频展示了其令人瞩目的性能,SVD模型是一个生成图像到视频的扩散模型,通过对静止图像的条件化生成短视频。其特点主要包括: 1、微调优化: 通过在特定条件下进行微调

    2024年03月24日
    浏览(36)
  • Stable Diffusion使用ControlNet:IP-Adapter实现图片风格迁移

    IP-Adapter 全称是 Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models(文本到图像扩散模型的文本兼容图像提示适配器),是腾讯研究院出品的一个新的ControlNet模型,旨在使预训练的文本到图像扩散模型能够生成具有图像提示的图像。 IP-Adapter是一种有效的轻量级适配器,

    2024年04月28日
    浏览(59)
  • Stable Video Diffusion(SVD)视频生成模型发布 1.1版

    前言 近日,随着人工智能技术的飞速发展,图像到视频生成技术也迎来了新的突破。特别是Stable Video Diffusion(SVD)模型的最新版本1.1,它为我们带来了从静态图像生成动态视频的全新能力。本文将深入解析SVD 1.1版本的核心特性、性能提升以及其在视频生成领域的应用前景。

    2024年03月08日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包