在《AI作畫,OpenVINO助你在英特爾GPU上隨心創(chuàng)作》中,我們介紹了OpenVINO Notebook運行環(huán)境搭建,并利用OpenVINO優(yōu)化和加速Stable Diffusion模型的推理,在英特爾獨立顯卡上能夠根據(jù)我們輸入的指令(prompt),快速生成我們喜愛的AI畫作。
今天,我們對這一應(yīng)用場景再次升級,除了能夠作畫,利用OpenVINO對Stable Diffusion v2模型的支持及優(yōu)化,我們還能夠在在英特爾獨立顯卡上快速生成帶有無限縮放效果的視頻,使得AI作畫的效果更具動感,其效果也更加震撼。話不多說,接下來還是讓我們來劃劃重點,看看具體是怎么實現(xiàn)的吧。
英特爾銳炫 顯卡基于Xe-HPG 微架構(gòu),Xe HPG GPU 中的每個 Xe 內(nèi)核都配置了一組 256 位矢量引擎,旨在加速傳統(tǒng)圖形和計算工作負載,以及新的 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運行環(huán)境的安裝請您參考我們的上一篇《AI作畫竟如此簡單!蝰蛇峽谷OpenVINO開發(fā)者實戰(zhàn)》。
此次我們應(yīng)用的深度學(xué)習(xí)模型是Stable Diffusion v2模型,相比它的上一代v1模型,它具有一系列新特性,包括配備了一個新的魯棒編碼器OpenCLIP,由LAION創(chuàng)建,并得到了Stability AI的幫助,與V1版本相比,此版本顯著增強了生成的照片。另外,v2模型在之前的模型基礎(chǔ)上增加了一個更新的修復(fù)模塊(inpainting)。這種文本引導(dǎo)的修復(fù)使切換圖像中的部分比以前更容易。也正是基于這一新特性,我們可以利用stabilityai/stable-diffusion-2-inpainting模型,生成帶有無限縮放效果的視頻。
在圖像編輯中,Inpainting是一個恢復(fù)圖片缺失部分的過程。最常用于重建舊的退化圖像,從照片中去除裂紋、劃痕、灰塵斑點或紅眼。但憑借AI和Stable Diffusion模型的力量,Inpainting可以實現(xiàn)更多的功能。例如,它可以用來在現(xiàn)有圖片的任何部分渲染全新的東西,而不僅僅是恢復(fù)圖像中缺失的部分。只要發(fā)揮你的想象力,你可以做出更多炫酷效果的作品來。
下面的工作流程圖解釋了用于Inpainting的Stable Diffusion inpainting流水線是如何工作的:
在此次的代碼示例中,我們將完成以下幾個步驟:
將PyTorch 模型轉(zhuǎn)換為ONNX格式。
利用Model Optimizer 工具,將ONNX 模型轉(zhuǎn)換為OpenVINO IR 格式。
運行Stable Diffusion v2 inpainting 流水線,生成無限縮放效果視頻。
現(xiàn)在,讓我們來重點來看看如何配置推理流水線的代碼。
這里主要分以下三個步驟:
在推理的硬件設(shè)備上加載模型Load models on device
配置分詞器和調(diào)度器Configure tokenizer and scheduler
創(chuàng)建OvStableDiffusionInpaintingPipeline 類的示例
我們在配備英特爾銳炫獨立顯卡A770m的蝰蛇峽谷上加載模型并運行推理,因此推理設(shè)備我們選擇“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])
在這一步中,我把步驟設(shè)置為 20。理想情況下,我將使用 50,以提供最好看的結(jié)果。另外,這里還可以自行設(shè)置生成的圖畫數(shù)量,所有生成的圖畫將組合起來構(gòu)成最后的無限縮放效果視頻。當然,我們同樣還生成了 GIF 文件,以便大家多種形式可視化展示生成結(jié)果。
最終結(jié)果。
結(jié) 論
當下,如果您想了解“Stable Diffusion”的工作原理,以及英特爾硬件的加速方式,OpenVINO Notebooks 無疑是首選。如果您有任何疑問或想要展示您的一些最佳成果,請在這里或通過我們的 GitHub 討論板發(fā)表評論! 祝您編碼快樂。
審核編輯 :李倩
-
英特爾
+關(guān)注
關(guān)注
60文章
9866瀏覽量
171324 -
AI
+關(guān)注
關(guān)注
87文章
29852瀏覽量
268150 -
微架構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7029
原文標題:AI作畫升級,OpenVINO? 和英特爾獨立顯卡助你快速生成視頻
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論