AI作画升级,OpenVINO™ 和英特尔独立显卡助你快速生成视频

本文介绍了如何利用OpenVINO工具包在英特尔独立显卡上优化StableDiffusionv2模型,生成带有无限缩放效果的视频。通过OpenVINO的加速,用户可以在GPU上快速创建动态的AI艺术作品,该过程涉及到模型转换、Inpainting技术以及代码示例。

以下文章来自英特尔物联网,作者武卓

作者:

武卓 博士

20f0cd343a8b0ce135b4b7521a8d0bb3.gif

《AI 作画,OpenVINO™ 助你在英特尔 GPU 上随心创作》中,我们介绍了OpenVINO™ Notebook 运行环境搭建,并利用OpenVINO™ 优化和加速Stable Diffusion 模型的推理,在英特尔® 独立显卡上能够根据我们输入的指令(prompt),快速生成我们喜爱的 AI 画作。

d717776e0f6b8cff883da950eb03e511.gif

今天,我们对这一应用场景再次升级,除了能够作画,利用 OpenVINO™ 对Stable Diffusion v2 (复制到浏览器打开:https://github.com/Stability-AI/stablediffusion)模型的支持及优化,我们还能够在在英特尔® 独立显卡上快速生成带有无限缩放效果的视频,使得 AI 作画的效果更具动感,其效果也更加震撼。话不多说,接下来还是让我们来划划重点,看看具体是怎么实现的吧。

outside_default.png

英特尔锐炫™ 显卡基于 Xe-HPG 微架构,Xe HPG GPU 中的每个 Xe 内核都配置了一组 256 位矢量引擎,旨在加速传统图形和计算工作负载,以及新的 1024 位矩阵引擎或 Xe 矩阵扩展,旨在加速人工智能工作负载

174565ba8819fda246ee805e43f179d0.png

本次无限缩放Stable Diffusion v2 视频生成的全部代码请戳这里:

https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/236-stable-diffusion-v2/236-stable-diffusion-v2-infinite-zoom.ipynb 。

OpenVINO™ Notebooks运行环境的安装请您参考我们的上一篇《AI作画竟如此简单!蝰蛇峡谷OpenVINO™开发者实战》

此次我们应用的深度学习模型是Stable Diffusion v2模型,相比它的上一代v1模型,它具有一系列新特性,包括配备了一个新的鲁棒编码器OpenCLIP ,由LAION 创建,并得到了Stability AI(复制到浏览器打开:https://stability.ai/) 的帮助,与v1版本相比,此版本显著增强了生成的照片。另外,v2模型在之前的模型基础上增加了一个更新的修复模块(inpainting)。这种文本引导的修复使切换图像中的部分比以前更容易。也正是基于这一新特性,我们可以利用stabilityai/stable-diffusion-2-inpainting 模型,生成带有无限缩放效果的视频。

在图像编辑中,Inpainting 是一个恢复图片缺失部分的过程。最常用于重建旧的退化图像,从照片中去除裂纹、划痕、灰尘斑点或红眼。但凭借AI和Stable Diffusion 模型的力量,Inpainting 可以实现更多的功能。例如,它可以用来在现有图片的任何部分渲染全新的东西,而不仅仅是恢复图像中缺失的部分。只要发挥你的想象力,你可以做出更多炫酷效果的作品来。

下面的工作流程图解释了用于Inpainting的Stable Diffusion inpainting 流水线是如何工作的:

159167f8c3642f0264d35ef1c114550a.png

在此次的代码示例中,我们将完成以下几个步骤:

1.   将PyTorch 模型转换为ONNX 格式。

2.   利用Model Optimizer 工具,将ONNX 模型转换为OpenVINO IR 格式。

3.   运行Stable Diffusion v2 inpainting 流水线,生成无限缩放效果视频。

71f5f170cb7fc565dfbb6ac2c4763e0c.gif

334da6e5ed87c616583337a231418f3d.png

现在,让我们来重点来看看如何配置推理流水线的代码。

这里主要分以下三个步骤:

1.在推理的硬件设备上加载模型Load models on device

2.配置分词器和调度器Configure tokenizer and scheduler

3.创建OvStableDiffusionInpainting

Pipeline 类的示例

我们在配备英特尔锐炫™ 独立显卡A770m的蝰蛇峡谷上加载模型并运行推理,因此推理设备我们选择“GPU” 。默认情况下,它使用“ AUTO” ,并会自动切换至检测到的 GPU 。代码如下:

from openvino.runtime import Core


  core = Core()


  tokenizer = CLIPTokenizer.from_pretrained('openai/clip-vit-large-patch14')


  text_enc_inpaint = core.compile_model(TEXT_ENCODER_OV_PATH_INPAINT, "GPU")
  unet_model_inpaint = core.compile_model(UNET_OV_PATH_INPAINT, " GPU ")
  vae_decoder_inpaint = core.compile_model(VAE_DECODER_OV_PATH_INPAINT, "GPU")
  vae_encoder_inpaint = core.compile_model(VAE_ENCODER_OV_PATH_INPAINT, "GPU")


  ov_pipe_inpaint = OVStableDiffusionInpaintingPipeline(
      tokenizer=tokenizer,
      text_encoder=text_enc_inpaint,
      unet=unet_model_inpaint,
      vae_encoder=vae_encoder_inpaint,
      vae_decoder=vae_decoder_inpaint,
      scheduler=scheduler_inpaint,
  )

向右滑动查看完整代码

6271c5c8dc4860ef6f3b39c1095749d5.png

接下来,我们输入文本提示,运行视频生成的代码吧。

import ipywidgets as widgets


  zoom_prompt = widgets.Textarea(value="valley in the Alps at sunset, epic vista, beautiful landscape, 4k, 8k", description='positive prompt', layout=widgets.Layout(width="auto"))
  zoom_negative_prompt = widgets.Textarea(value="lurry, bad art, blurred, text, watermark", description='negative prompt', layout=widgets.Layout(width="auto"))
  zoom_num_steps = widgets.IntSlider(min=1, max=50, value=20, description='steps:')
  zoom_num_frames = widgets.IntSlider(min=1, max=50, value=3, description='frames:')
  mask_width = widgets.IntSlider(min=32, max=256, value=128, description='edge size:')
  zoom_seed = widgets.IntSlider(min=0, max=10000000, description='seed: ', value=9999)
  zoom_in = widgets.Checkbox(
      value=False,
      description='zoom in',
      disabled=False
  )


  widgets.VBox([zoom_prompt, zoom_negative_prompt, zoom_seed, zoom_num_steps, zoom_num_frames, mask_width, zoom_in])

向右滑动查看完整代码

791961900ac698b33e083db18c055351.png

在这一步中,我把步骤设置为20。理想情况下,我将使用50,以提供最好看的结果。另外,这里还可以自行设置生成的图画数量,所有生成的图画将组合起来构成最后的无限缩放效果视频。

当然,我们同样还生成了 GIF 文件,以便大家多种形式可视化展示生成结果。

最终结果。

d7f21d878e06517f843a02ac9aafef11.gif

9a6da024cdbccb6674662749e5935c38.gif

7dd6f7698761ca155b969b75846f3881.png

当下,如果您想了解“Stable Diffusion” 的工作原理,以及英特尔硬件的加速方式,OpenVINO™  Notebooks 无疑是首选。如果您有任何疑问或想要展示您的一些最佳成果,请在这里或通过我们的 GitHub 讨论板发表评论! 祝您编码快乐。

https://github.com/openvinotoolkit/openvino_notebooks/discussions#iamintel

a16ab63b74bbf198795a82d1c9b2a9f0.png


--END--

你也许想了解(点击蓝字查看)⬇️➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC

➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 如何给开源项目做贡献? | 开发者节日福利➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理➡️ 图片提取文字很神奇?试试三步实现OCR!➡️【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务➡️使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2022.3

点击 阅读原文 立即体验OpenVINO 2022.3

dd6cae7a3f0d161c167b8fa4ce7655ab.png

文章这么精彩,你有没有“在看”?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值