在《AI作畫,OpenVINO助你在英特爾GPU上隨心創作》中,我們介紹了OpenVINO Notebook運行環境搭建,并利用OpenVINO優化和加速Stable Diffusion模型的推理,在英特爾獨立顯卡上能夠根據我們輸入的指令(prompt),快速生成我們喜愛的AI畫作。
今天,我們對這一應用場景再次升級,除了能夠作畫,利用OpenVINO對Stable Diffusion v2模型的支持及優化,我們還能夠在在英特爾獨立顯卡上快速生成帶有無限縮放效果的視頻,使得AI作畫的效果更具動感,其效果也更加震撼。話不多說,接下來還是讓我們來劃劃重點,看看具體是怎么實現的吧。
英特爾銳炫 顯卡基于Xe-HPG 微架構,Xe HPG GPU 中的每個 Xe 內核都配置了一組 256 位矢量引擎,旨在加速傳統圖形和計算工作負載,以及新的 1024 位矩陣引擎或 Xe 矩陣擴展,旨在加速人工智能工作負載。
本次無限縮放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的幫助,與V1版本相比,此版本顯著增強了生成的照片。另外,v2模型在之前的模型基礎上增加了一個更新的修復模塊(inpainting)。這種文本引導的修復使切換圖像中的部分比以前更容易。也正是基于這一新特性,我們可以利用stabilityai/stable-diffusion-2-inpainting模型,生成帶有無限縮放效果的視頻。
在圖像編輯中,Inpainting是一個恢復圖片缺失部分的過程。最常用于重建舊的退化圖像,從照片中去除裂紋、劃痕、灰塵斑點或紅眼。但憑借AI和Stable Diffusion模型的力量,Inpainting可以實現更多的功能。例如,它可以用來在現有圖片的任何部分渲染全新的東西,而不僅僅是恢復圖像中缺失的部分。只要發揮你的想象力,你可以做出更多炫酷效果的作品來。
下面的工作流程圖解釋了用于Inpainting的Stable Diffusion inpainting流水線是如何工作的:
在此次的代碼示例中,我們將完成以下幾個步驟:
將PyTorch 模型轉換為ONNX格式。
利用Model Optimizer 工具,將ONNX 模型轉換為OpenVINO IR 格式。
運行Stable Diffusion v2 inpainting 流水線,生成無限縮放效果視頻。
現在,讓我們來重點來看看如何配置推理流水線的代碼。
這里主要分以下三個步驟:
在推理的硬件設備上加載模型Load models on device
配置分詞器和調度器Configure tokenizer and scheduler
創建OvStableDiffusionInpaintingPipeline 類的示例
我們在配備英特爾銳炫獨立顯卡A770m的蝰蛇峽谷上加載模型并運行推理,因此推理設備我們選擇“GPU”。默認情況下,它使用“ AUTO”,并會自動切換至檢測到的 GPU。代碼如下:
1.fromopenvino.runtimeimportCore
2.
3.core=Core()
4.
5.tokenizer=CLIPTokenizer.from_pretrained('openai/clip-vit-large-patch14')
6.
7.text_enc_inpaint=core.compile_model(TEXT_ENCODER_OV_PATH_INPAINT,"GPU")
8.unet_model_inpaint=core.compile_model(UNET_OV_PATH_INPAINT," GPU ")
9.vae_decoder_inpaint=core.compile_model(VAE_DECODER_OV_PATH_INPAINT,"GPU")
10.vae_encoder_inpaint=core.compile_model(VAE_ENCODER_OV_PATH_INPAINT,"GPU")
11.
12.ov_pipe_inpaint=OVStableDiffusionInpaintingPipeline(
13.tokenizer=tokenizer,
14.text_encoder=text_enc_inpaint,
15.unet=unet_model_inpaint,
16.vae_encoder=vae_encoder_inpaint,
17.vae_decoder=vae_decoder_inpaint,
18.scheduler=scheduler_inpaint,
19.)
接下來,我們輸入文本提示,運行視頻生成的代碼吧。
1.importipywidgetsaswidgets
2.
3.zoom_prompt=widgets.Textarea(value="valleyintheAlpsatsunset,epicvista,beautifullandscape,4k,8k",description='positiveprompt',layout=widgets.Layout(width="auto"))
4.zoom_negative_prompt=widgets.Textarea(value="lurry,badart,blurred,text,watermark",description='negativeprompt',layout=widgets.Layout(width="auto"))
5.zoom_num_steps=widgets.IntSlider(min=1,max=50,value=20,description='steps:')
6.zoom_num_frames=widgets.IntSlider(min=1,max=50,value=3,description='frames:')
7.mask_width=widgets.IntSlider(min=32,max=256,value=128,description='edgesize:')
8.zoom_seed=widgets.IntSlider(min=0,max=10000000,description='seed:',value=9999)
9.zoom_in=widgets.Checkbox(
10.value=False,
11.description='zoomin',
12.disabled=False
13.)
14.
15.widgets.VBox([zoom_prompt,zoom_negative_prompt,zoom_seed,zoom_num_steps,zoom_num_frames,mask_width,zoom_in])
在這一步中,我把步驟設置為 20。理想情況下,我將使用 50,以提供最好看的結果。另外,這里還可以自行設置生成的圖畫數量,所有生成的圖畫將組合起來構成最后的無限縮放效果視頻。當然,我們同樣還生成了 GIF 文件,以便大家多種形式可視化展示生成結果。
最終結果。
結 論
當下,如果您想了解“Stable Diffusion”的工作原理,以及英特爾硬件的加速方式,OpenVINO Notebooks 無疑是首選。如果您有任何疑問或想要展示您的一些最佳成果,請在這里或通過我們的 GitHub 討論板發表評論! 祝您編碼快樂。
審核編輯 :李倩
-
英特爾
+關注
關注
61文章
9953瀏覽量
171699 -
AI
+關注
關注
87文章
30761瀏覽量
268905 -
微架構
+關注
關注
0文章
22瀏覽量
7043
原文標題:AI作畫升級,OpenVINO? 和英特爾獨立顯卡助你快速生成視頻
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論