使用Diffutoon把视频转换成动漫风格,无需部署,开箱即用

devtools/2024/10/21 4:44:47/

无论是图片动漫转换以及视频动漫转换,我们前期也介绍过相关的模型,但是其模型输出的动漫视频不是有瑕疵,就是动漫效果不唯美,今天介绍一个modelscope社区开源的动漫风格转换模型Diffutoon。

Diffutoon模型接受视频作为输入,然后根据输入的视频提取人物的线条以及相关的视频颜色,并根据人物线条与视频颜色合成动漫的视频,当然模型支持相关的编辑功能,可以在输出的视频时添加想要的效果。

动图封面

Diffutoon利用个性化的 stable diffusion 模型进行图片动漫风格化操作,为了增强时间一致性,模型采用了多个运动模块。这些模块基于AnimateDiff,然后结合UNet模型以保持输出视频内容的一致性。而模型中的人物线条的提取便是使用ControlNet模型,此模型可以保留人物的姿态,然后通过人物轮廓作为模型的结构输入。Diffutoon后期的动漫视频渲染过程便是使用此轮廓渲染出动漫风格的视频。

动图封面

Diffutoon最重要的是着色,需要根据源视频的颜色色彩,与渲染的轮廓进行合成,以便输出合适的颜色,此部分使用了另外一个ControlNet模型进行上色。该模型针对超分辨率任务进行训练,因此,即使输入视频分辨率较低。该模型也能直接处理,并输出高分辨率的动漫视频。

动图封面

与其他模型对比,Diffutoon模型的效果显著,特别是针对视频生成图片的连贯性,以及唯美性进行了调整,而模型也针对人物脸部进行了重点训练,让生成的模型效果 可以更加生动形象。

而针对模型轮廓,人物人脸虚化以及其他人物姿态部分虚化现象,Diffutoon模型通过FastBlend与AnimateDiff方法来控制模型的输出效果,并添加ControlNet与编辑词进行模型的微调,让生成的视频更加高清连贯。

此模型开源在 GitHub 上,也可以直接在 Google cloab 空间上直接运行,真正的开箱即用,无需部署生产环境,只需要导入自己的视频,运行即可。

在本地,也可以直接使用代码运行,在运行代码前,首先需要安装对应的第三方库以及部署整个环境,并下载对应的模型。

!git clone https://github.com/Artiprocher/DiffSynth-Studio.git
!pip install -q transformers controlnet-aux==0.0.7 streamlit streamlit-drawable-canvas imageio imageio[ffmpeg] safetensors einops cupy-cuda12x
%cd /content/DiffSynth-Studio
import requests
def download_model(url, file_path):model_file = requests.get(url, allow_redirects=True)with open(file_path, "wb") as f:f.write(model_file.content)
download_model("https://civitai.com/api/download/models/229575", "models/stable_diffusion/aingdiffusion_v12.safetensors")
download_model("https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt", "models/AnimateDiff/mm_sd_v15_v2.ckpt")
download_model("https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth", "models/ControlNet/control_v11p_sd15_lineart.pth")
download_model("https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth", "models/ControlNet/control_v11f1e_sd15_tile.pth")
download_model("https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth", "models/ControlNet/control_v11f1p_sd15_depth.pth")
download_model("https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth", "models/ControlNet/control_v11p_sd15_softedge.pth")
download_model("https://huggingface.co/lllyasviel/Annotators/resolve/main/dpt_hybrid-midas-501f0c75.pt", "models/Annotators/dpt_hybrid-midas-501f0c75.pt")
download_model("https://huggingface.co/lllyasviel/Annotators/resolve/main/ControlNetHED.pth", "models/Annotators/ControlNetHED.pth")
download_model("https://huggingface.co/lllyasviel/Annotators/resolve/main/sk_model.pth", "models/Annotators/sk_model.pth")
download_model("https://huggingface.co/lllyasviel/Annotators/resolve/main/sk_model2.pth", "models/Annotators/sk_model2.pth")
download_model("https://civitai.com/api/download/models/25820?type=Model&format=PickleTensor&size=full&fp=fp16", "models/textual_inversion/verybadimagenegative_v1.3.pt")

然后就可以使用自己的视频进行动漫视频的转换操作了,其代码实现如下:
from diffsynth import SDVideoPipelineRunner
config = config_stage_2_template.copy()
config["data"]["input_frames"] = {"video_file": "/content/input_video.mp4","image_folder": None,"height": 1024,"width": 1024,"start_frame_id": 0,"end_frame_id": 30
}
config["data"]["controlnet_frames"] = [config["data"]["input_frames"], config["data"]["input_frames"]]
config["data"]["output_folder"] = "/content/toon_video"
config["data"]["fps"] = 25
runner = SDVideoPipelineRunner()
runner.run(config)

当然模型支持输入关键词,对输出的视频进行微调,可以在配置文件中写自己的 prompt
from diffsynth import SDVideoPipelineRunner
config_stage_1 = config_stage_1_template.copy()
config_stage_1["data"]["input_frames"] = {"video_file": "/content/input_video.mp4","image_folder": None,"height": 512,"width": 512,"start_frame_id": 0,"end_frame_id": 30
}
config_stage_1["data"]["controlnet_frames"] = [config_stage_1["data"]["input_frames"], config_stage_1["data"]["input_frames"]]
config_stage_1["data"]["output_folder"] = "/content/color_video"
config_stage_1["data"]["fps"] = 25
config_stage_1["pipeline"]["pipeline_inputs"]["prompt"] = "best quality, perfect anime illustration, orange clothes, night, a girl is dancing, smile, solo, black silk stockings"
runner = SDVideoPipelineRunner()
runner.run(config_stage_1)https://colab.research.google.com/github/Artiprocher/DiffSynth-Studio/blob/main/examples/Diffutoon.ipynb
https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/Diffutoon/Diffutoon.ipynb
https://github.com/modelscope/DiffSynth-Studio?tab=readme-ov-file更多transformer,VIT,swin tranformer
参考头条号:人工智能研究所
v号:启示AI科技

 动画详解transformer  在线教程

 


http://www.ppmy.cn/devtools/127478.html

相关文章

如何在Android中进行日志打印和调试?

在Android开发中,日志打印和调试是开发者定位问题、优化性能和提升应用质量的重要手段。以下将详细阐述如何在Android中进行日志打印和调试,包括日志工具的使用、调试技巧以及实践中的最佳实践。 一、日志工具的使用 1. Log类 Android中的日志工具类是…

Kafka异常重试方案小记

背景 在最近进行的项目架构升级中,我们对原有的核心项目结构进行了细致的拆分。 现在,核心项目与非核心项目之间的通信和数据交换主要通过Kafka这一中间件来实现。 这种设计主要体现在核心项目向非核心项目发送通知,这些通知大致可以分为三个…

分布式混沌工程工具(ChaosBlade)

ChaosBlade是一个分布式混沌工程工具,主要用于压力测试和故障注入,支持多种云原生应用程序。 一、下载与安装 获取软件: 前往ChaosBlade的官方GitHub发布页面(https://github.com/chaosblade-io/chaosblade/releases&#xff09…

【PhpSpreadsheet】ThinkPHP5+PhpSpreadsheet实现批量导出数据

目录 前言 一、安装 二、API使用 三、完整实例 四、效果图 前言 为什么使用PhpSpreadsheet? 由于PHPExcel不再维护,所以建议使用PhpSpreadsheet来导出exlcel,但是PhpSpreadsheet由于是个新的类库,所以只支持PHP7.1及以上的版…

阿里巴巴 | 推出升级版AI翻译工具:Marco MT 性能超越Google和ChatGPT

阿里巴巴国际业务部门推出了一款升级版的AI翻译工具,名为Marco MT。据称,这款工具在翻译性能上超过了Google、DeepL和ChatGPT的同类产品,旨在帮助商户提升国际市场的竞争力,特别是在跨境电商领域。 Marco MT 主要特性 基于大语言模…

论文翻译 | OpenICL: An Open-Source Framework for In-context Learning

摘要 近年来,上下文学习(In-context Learning,ICL)越来越受到关注,并已成为大型语言模型(Large Language Model,LLM)评估的新范式。与传统微调方法不同,ICL无需更新任何参…

CTF(五)

导言: 本文主要讲述在CTF竞赛中,web类题目easyphp。 靶场链接:攻防世界 (xctf.org.cn) 参考文章原文链接:Web安全攻防世界05 easyphp(江苏工匠杯)_攻防世界 easyphp-CSDN博客 一,观察页面。…

python实战(一)——iris鸢尾花数据集分类

一、任务背景 本文是python实战系列专栏的第一篇文章,我们将从分类开始由浅入深逐步学习如何使用python完成常规的机器学习/深度学习任务。iris数据集是经典的机器学习入门数据集,许多分类任务教程都会以这个数据集作为示例,它的数据量是150条…