在這一篇文章中,我們介紹了利用OpenVINO?優(yōu)化和加速Stable Diffusion模型的推理,在英特爾?獨(dú)立顯卡上能夠根據(jù)我們輸入的指令(prompt),快速生成我們喜愛的AI畫作。今天,我們對這一應(yīng)用場景再次升級,除了能夠作畫,利用OpenVINO對Stable Diffusion v2模型的支持及優(yōu)化,我們還能夠在在英特爾?獨(dú)立顯卡上快速生成帶有無限縮放效果的視頻,使得AI作畫的效果更具動感,其效果也更加震撼。話不多說,接下來還是讓我們來劃劃重點(diǎn),看看具體是怎么實(shí)現(xiàn)的吧。?
本次無限縮放Stable Diffusion v2視頻生成的全部代碼請戳這里openvino_notebooks/236-stable-diffusion-v2-infinite-zoom.ipynb at main · openvinotoolkit/openvino_notebooks · GitHub OpenVINO Notebooks運(yùn)行環(huán)境的安裝請您參考我們的上一篇AI作畫博客?
此次我們應(yīng)用的深度學(xué)習(xí)模型是Stable Diffusion v2模型,相比它的上一代v1模型,它具有一系列新特性,包括配備了一個新的魯棒編碼器OpenCLIP,由LAION創(chuàng)建,并得到了Stability AI的幫助,與V1版本相比,此版本顯著增強(qiáng)了生成的照片。另外,v2模型在之前的模型基礎(chǔ)上增加了一個更新的修復(fù)模塊(inpainting)。這種文本引導(dǎo)的修復(fù)使切換圖像中的部分比以前更容易。也正是基于這一新特性,我們可以利用stabilityai/stable-diffusion-2-inpainting模型,生成帶有無限縮放效果的視頻。?
在圖像編輯中,Inpainting是一個恢復(fù)圖片缺失部分的過程。最常用于重建舊的退化圖像,從照片中去除裂紋、劃痕、灰塵斑點(diǎn)或紅眼。但憑借AI和Stable Diffusion模型的力量,Inpainting可以實(shí)現(xiàn)更多的功能。例如,它可以用來在現(xiàn)有圖片的任何部分渲染全新的東西,而不僅僅是恢復(fù)圖像中缺失的部分。只要發(fā)揮你的想象力,你可以做出更多炫酷效果的作品來。?
下面的工作流程圖解釋了用于Inpainting的Stable Diffusion inpainting流水線是如何工作的:
在此次的代碼示例中,我們將完成以下幾個步驟:?
-
將PyTorch 模型轉(zhuǎn)換為ONNX格式。?
-
利用Model Optimizer 工具,將ONNX 模型轉(zhuǎn)換為OpenVINO IR 格式。?
-
運(yùn)行Stable Diffusion v2 inpainting 流水線,生成無限縮放效果視頻。?
現(xiàn)在,讓我們來重點(diǎn)來看看如何配置推理流水線的代碼。?
這里主要分以下三個步驟:?
-
在推理的硬件設(shè)備上加載模型Load models on device?
-
配置分詞器和調(diào)度器Configure tokenizer and scheduler?
-
創(chuàng)建OvStableDiffusionInpaintingPipeline 類的示例?
我們在配備英特爾銳炫?獨(dú)立顯卡的機(jī)器上加載模型并運(yùn)行推理,因此推理設(shè)備我們選擇“GPU”。默認(rèn)情況下,它使用“ 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,
)
??
?接下來,我們輸入文本提示,運(yùn)行視頻生成的代碼吧。
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])
在這一步中,我把步驟設(shè)置為 20。理想情況下,我將使用 50,以提供最好看的結(jié)果。另外,這里還可以自行設(shè)置生成的圖畫數(shù)量,所有生成的圖畫將組合起來構(gòu)成最后的無限縮放效果視頻。當(dāng)然,我們同樣還生成了 GIF 文件,以便大家多種形式可視化展示生成結(jié)果。?
最終結(jié)果。?
stable_diffusion_video文章來源:http://www.zghlxwxcb.cn/news/detail-497350.html
總結(jié)
當(dāng)下,如果您想了解“Stable Diffusion”的工作原理,以及英特爾硬件的加速方式,OpenVINO Notebooks 無疑是首選。如果您有任何疑問或想要展示您的一些最佳成果,請?jiān)谙路皆u論或通過我們的 GitHub 討論板發(fā)表評論! 祝大家編碼快樂啦。文章來源地址http://www.zghlxwxcb.cn/news/detail-497350.html
到了這里,關(guān)于AI作畫升級!一鍵幫你用Stable Diffusion 生成無限縮放效果視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!