【騰訊云 HAI域探秘】StableDiffusionWebUI 讓我找到了宮崎駿動漫里的夏天

目錄

  • 前言
  • 一、HAI
  • 二、應用場景
  • 三、構建 Stable Diffusion 模型
    • 1、新建HAI應用
    • 2、StableDiffusionWebUI
      • (1)功能介紹
      • (2)頁面轉中文
      • (3)AI繪圖
        • ① 正向提示詞語
        • ② 反向提示詞
        • ③ “+” 、“ AND”、“|” 用法
        • ④ 權重
        • ⑤ Euler a 取樣方法
        • ⑥ DPM++ 2M Karras 取樣方法
        • ⑦ 新增提示詞案例
  • 四、總結

在這里插入圖片描述

前言

一直以來想部署一個自己的 StableDiffusion 模型,但是在構建模型過程中遇到許多問題,后來發現可以用 HAI 可以快速構建并且部署,給我帶來了極大的便利,省去了許多麻煩事。

高性能應用服務(Hyper Application Inventor,HAI)是一款面向 AI 和科學計算的 GPU/NPU 應用服務產品,提供即插即用的強大算力和常見環境。它可以幫助中小企業和開發者快速部署語言模型、AI 繪圖、數據科學等高性能應用,原生集成配套的開發工具和組件,大大提升應用層的開發生產效率。

如果你想快速構建一套AI模型,比如Stable Diffusion、ChatGLM2 6B、Llama2 7B、Llama2 13B,又或者是想搭建一套AI框架,比如Pytorch2.0.0、Tensorflow2.9.0,HAI 可成為你的首選。本文通過構建Stable Diffusion模型進行二次元AI繪畫,主要利用深度學習算法進行創作繪圖,應用場景也是十分廣泛。

一、HAI

高性能應用服務 HAI 以應用為中心,匹配GPU云算力資源,助力中小企業及開發者快速部署LLM、AI作畫、數據科學等高性能應用。其優勢十分顯著:

1、簡單易用。通過簡化計算、網絡和存儲等基礎設施的配置流程,大幅降低了云服務操作和管理的復雜度
2、應用環境快速部署。支持多種 AI 環境快速部署,如 ChatGLM-6B、StableDiffusion 等,使用戶可專注業務及應用場景創新。
3、高靈活性。支持用戶登錄實例,對 AI 模型及實例環境進行靈活配置。可進行內部開發、業務測試,或對外提供業務服務。
4、多種登錄方式。除傳統連接方式外,支持通過 jupyterlab、WebUI 等方式一鍵啟動,提供更貼合使用場景的登錄方式。
5、算力種類豐富。提供多種算力套餐選擇,未來還將加入更多種類供用戶選擇。

二、應用場景

HAI 應用場景十分廣泛,可以應用于AI 作畫/設計、AI 對話/寫作、AI 開發測試以及數據科學等方面。
在AI 作畫/設計方面,設計師和開發者可以使用高性能應用服務快速地部署和優化 AI 繪畫模型。高性能應用服務預置 Stable Diffusion 等主流 AI 作畫模型及常用插件,提供 GUI 圖形化界面即開即用,大幅降低上手門檻。在AI 對話/寫作方面,研究者和開發者可以使用高性能應用服務快速部署和運行大型語言模型,如 LLAMA2、ChatGLM 等,進行自然語言處理任務,如文本生成、情感分析、文本分類等。高性能應用服務提供的算力支持和優化環境確保了語言模型可以在最短的時間內進行部署,同時還能保持高穩定性和可靠性。在AI 開發測試方面,高性能應用服務的預配置環境支持大多數流行的 AI 框架和工具,如 TensorFlow、PyTorch 等,使得開發者可以專注于算法設計和模型優化。AI 研究者可以在高性能應用服務上進行模型的開發、訓練、測試和優化,無需擔心硬件兼容性和軟件配置問題。如新算法的原型開發、模型微調與遷移學習、深度學習框架的交叉測試等。在數據科學方面,數據科學家們可使用高性能應用服務,快速進行數據分析和圖標處理。高性能應用服務預置了 Notebook、Python 環境,以及主流分析軟件。

三、構建 Stable Diffusion 模型

上面講解了HAI的優勢以及應用場景,那么接下來就開始使用 HAI 構建 Stable Diffusion 模型。Stable Diffusion,直接從字面意思翻譯是穩定的擴散,當然這也將圖像生成模型的工作原理點出來了。它是一種生成模型,可用于生成高質量的圖像,其原理是將噪聲添加懂真實圖像,然后通過神經網絡將噪聲去除掉,隨著噪聲逐漸去除,真實圖像便逐漸恢復。那么怎么使用 HAI 構建 Stable Diffusion 模型呢

1、新建HAI應用

首先在算力管理頁面點擊新建,這就是構建HAI應用的入口了。

在這里插入圖片描述
在AI模型中選擇Stable Diffusion,這就是我們需要的模型,然后點擊購買。
在這里插入圖片描述
購買完成后HAI應用就會自動創建,創建過程大概需要3-8分鐘,靜候即可。
在這里插入圖片描述

創建完成之后,點擊算力連接,在下拉中選擇stable_diffusion_webui

在這里插入圖片描述

2、StableDiffusionWebUI

我們可以看到StableDiffusionWebUI 主頁面,具體如下圖所示:
在這里插入圖片描述

(1)功能介紹

StableDiffusionWebUI是基于StableDiffusion開源模型開發的,具有以下功能:

  • 文生圖
    根據描述生成任何圖像

  • 智能識別:Stable Diffusion 可以智能識別用戶上傳的圖片,并自動調整圖片質量和色彩,讓圖片更加清晰、飽滿。

  • 風格轉換:Stable Diffusion 可以將用戶上傳的圖片轉換成不同的藝術風格,如印象派、后印象派、立體派等等,讓圖片更加藝術化。

  • 人像修復:Stable Diffusion 可以自動識別人像并進行修復,去除皺紋、瑕疵等不良痕跡,讓人像更加美觀自然。

  • 圖像融合:Stable Diffusion 可以將多張圖片進行融合,生成全新的圖像,讓用戶可以嘗試不同的創意和設計。

  • 圖像去噪:Stable Diffusion 可以自動去除圖片中的噪點,讓圖片更加干凈、清晰。

(2)頁面轉中文

首先我們先把頁面換成中文。選擇頁面中Extensions菜單中的Available菜單,然后取消localization勾選,勾選script,之后點擊 Load from,大概需要等30-60s。
在這里插入圖片描述
然后在搜索框中搜索:zh_CN,
在這里插入圖片描述
點擊Install進行安裝。
在這里插入圖片描述

安裝成功后,我們可以在Extensions菜單中的Installed菜單看到安裝的stable-diffusion-webui-localization-zh_CN
在這里插入圖片描述
最后在Setting菜單中選擇User interface,在Localization (requires restart) 下拉菜單中選擇zh_CN
在這里插入圖片描述
最后先點擊Apply setting,然后再點擊Reload UI,頁面就變成中文了。

(3)AI繪圖

Stable Diffusion可以根據你輸入的提示詞(prompt)來繪制出想象中的畫面。在進行文生圖之前,先講解一下StableDiffusionWebUI主頁面的基本屬性,相關配置屬性解釋如下:

屬性描述
提示詞主要描述圖像,包括內容風格等信息,原始的webui會對這個地方有字數的限制,可以安裝一些插件突破字數的限制。簡單來說就是你想要生成一副什么樣的圖片,包含主體、風格、色彩、質量要求等等
反向提示詞告訴模型我們不需要的風格,表示你不想要什么,比如不想要圖片出現什么,不想圖片質量差,不想人物模糊或者多手多腳等
提示詞相關性(CFG scale)分類器自由引導尺度,圖像與提示符的一致程度越低的值產生的結果越有創意,數值越大成圖越貼近描述文本。一般設置為7
采樣方法(Sampling method)擴散算法的去噪聲采樣模式會影響其效果,不同的采樣模式的結果會有很大差異
采樣迭代步數(Sampling steps)在使用擴散模型生成圖片時所進行的迭代步驟。每經過一次迭代,AI就有更多的機會去比對prompt和當前結果,并作出相應的調整。需要注意的是,更高的迭代步數會消耗更多的計算時間和成本,但并不意味著一定會得到更好的結果。然而,如果迭代步數過少,一般不少于50,則圖像質量肯定會下降
隨機種子(Seed)生成每張圖片時的隨機種子,這個種子是用來作為確定擴散初始狀態的基礎。-1表示不基于圖片種子進行繪制,完全基于你的prompt生成,如果填寫一個圖片的種子值,則會參考你填寫的圖片種子,在此圖片基礎上進行二次繪制。
高清修復將生成的圖片進行高清放大,提升分辨率,顯存不夠的寶子們慎用
生成批次表示本次繪制時通過幾個批次進行繪畫,顯存低的寶子們可以調大,以時間換空間
每批數量表示每批生成幾張圖片,也是看顯存大小進行設置

其中提示詞是非常重要的,是生成圖像最基本的要求。提示詞(prompt)由多個詞綴構成。提示詞分為正向提示詞(positive prompt)和反向提示詞(negative prompt),用來告訴AI哪些需要,哪些不需要。反向提示詞聽起來有些耐人尋味,其實就是我們不想出現什么的描述。提示詞與反提示詞實際上看你的想象力,當初也要轉換成英文描述的術語才能更好地生效,個人認為沒有什么定格公式,會限制人的想象力,總之你想什么就填上去,盡情發揮想象力。

① 正向提示詞語

這里提供一些正向提示詞語,可以斟酌添加到模型中。

prompt描述
HDR, UHD, 64K(HDR、UHD、4K、8K和64K)這樣的質量詞可以帶來巨大的差異提升照片的質量
Highly detailed畫出更多詳細的細節
Studio lighting添加演播室的燈光,可以為圖像添加一些漂亮的紋理
Professional加入該詞可以大大改善圖像的色彩對比和細節
Vivid Colors給圖片添加鮮艷的色彩,可以為你的圖像增添活力
Bokeh虛化模糊了背景,突出了主體,像iPhone的人像模式
High resolution scan讓你的照片具有老照片的樣子賦予年代感
Sketch素描
Painting繪畫
② 反向提示詞

一些返向提示詞案例,針對你要生成的圖像,通過反向提示,避免出現不符合預期的圖片

Negative PromptDescription
Mutated hands and fingers變異的手和手指
Deformed畸形的
Bad anatomy解剖不良
Disfigured毀容
Poorly drawn face臉部畫得不好
Mutated變異的
Extra limb多余的肢體
Ugly丑陋
Poorly drawn hands手部畫得很差
Missing limb缺少的肢體
Floating limbs漂浮的四肢
Disconnected limbs肢體不連貫
Malformed hands畸形的手
Out of focus脫離焦點
Long neck長頸
Long body身體長
③ “+” 、“ AND”、“|” 用法
  • “+”和“AND”:這兩個符號都用于連接短標簽或關鍵詞。使用“+”或者“AND”來將標簽連接在一起。要注意的是,在使用“AND”連接標簽時,兩端需要加上空格。此外,“+”可以大致等同于“AND”。

  • “|”:這是用作循環繪制符號或融合符號。在這種上下文中,它可能表示一種繪圖操作,可以用來融合或循環繪制某些元素或標簽。

④ 權重

使用括號和不同格式來調整單詞的權重:

  • (PromptA:權重):調整權重比例為給定的權重。
  • (PromptA):默認權重為1.1,等同于(PromptA:1.1)
  • {PromptB}:默認權重為1.05,等同于(PromptB:1.05)
  • [PromptC]:默認權重為0.952,等同于(PromptC:0.952)
  • ((PromptD)):權重為1.21,等于(PromptD:1.1*1.1)
  • {{PromptE}}:權重為1.1025,等于(PromptE:1.05*1.05)
  • [[PromptF]]:權重為0.905504,等于(PromptF:0.952*0.952)

此外,根據標簽的位置,權重也會受到影響。比如,如果景色標簽在前,人物可能會被縮小;反之,人物可能會變大或顯示為半身。

⑤ Euler a 取樣方法

使用Euler a取樣方法生成圖像,本文案例使用下面的配置:

正向提示詞:((studio ghibli)), (1cute girl) walking in street, half body,
反向提示詞:easynegative
取樣方法:Euler a
取樣步驟:65
高解析度修正(Hires.fix):放大演算算法選擇SwinIR_4x,高解析步驟為10,重繪幅度為0.71
提示次相關性(CFG):7
隨機種子:3472141699
產生批次:1
每批數量:8

在這里插入圖片描述

然后生成如下圖,宮崎駿動漫里的夏天真的太好看啦

請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述

Euler a的優勢
適用性:歐拉采樣方法在生成二次元圖像中可能不是首選,因為它主要用于模擬物理系統或動態系統的數值積分,對于藝術風格的圖像生成并不是其主要應用。
特點:
歐拉方法更適用于模擬動態系統中的物體運動或相機路徑等,對于藝術性較高的二次元圖像可能無法提供所需的效果和細節。

⑥ DPM++ 2M Karras 取樣方法

之后了解到DPM++ 2M Karras基于深度學習和神經網絡技術,能夠生成高質量、細節豐富的圖像。Euler采樣方法主要用于模擬物理系統或動態系統的數值積分,對于藝術風格的圖像生成并不是其主要應用。因此將取樣方法修改為DPM++ 2M Karras,并對其他屬性做了調整,如下:

正向提示詞:((studio ghibli)), (1cute girl) walking in street, half body,
反向提示詞:easynegative
取樣方法:DPM++ 2M Karras
取樣步驟:60
高解析度修正(Hires.fix):放大演算算法選擇SwinIR_4x,高解析步驟為10,重繪幅度為0.4
提示次相關性(CFG):7
隨機種子:3472141699
產生批次:1
每批數量:8

請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述

很明顯可以看出來兩個取樣方法生成的圖片有很大的不同,用DPM++ 2M Karras方法生成的圖片色彩更鮮艷,人物形象也更生動。

DPM++ 2M Karras 的優勢
適用性: DPM++ 2M Karras可能更適合生成二次元圖像,因為它基于深度學習和神經網絡技術,能夠生成高質量、細節豐富的圖像。
特點:這種方法能夠更好地保持模型的細節,并且可以更快速地生成需要的圖像。它適用于生成二次元風格的圖像,特別是在處理角色造型、背景細節等方面有著較好的效果。

⑦ 新增提示詞案例

依舊使用上面的DPM++ 2M Karras方法取樣,新增一些正向提示詞和反向提示詞,看看與上面生成的圖片有什么不同,本次配置提示詞更豐富,限制的要求比較多。

提示詞描述
prompt((studio ghibli)), (1cute girl) walking in street, half body, 64K, Professional,Makoto Shinkai, Katsuhiro Otomo, Masashi Kishimoto, Kentaro Miura
negative prompt(low quality, worst quality:1.4), (bad_prompt:0.8), (monochrome:1.1), (greyscale), username, watermark, signature, text, logo, nsfw
請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述請添加圖片描述
請添加圖片描述請添加圖片描述

可以看到生成的圖片雖然使用了DPM++ 2M Karras取樣方法,但是新添加的提示詞(64K, Professional,Makoto Shinkai, Katsuhiro Otomo, Masashi Kishimoto, Kentaro Miura)的作用也是非常明顯,生的的圖像色彩對比更明顯,圖像的細節也更多了。并且圖像的面部、肢體也和正常人物形象沒有什么很大差別,并沒有出現多余的肢體、畸形的手等變異的地方。

四、總結

StableDiffusionWebUI 的出神入化讓我十分震驚,HAI不僅可以構建應用,而且也提供了部署的功能,這讓我一個嫌麻煩的人似乎找到了歸宿。本來自己構建模型的話就挺復雜了,HAI 徹底解決了我的問題。在體驗過程中,對 HAI 構建應用有一些自己的看法:

缺陷以及優化建議:

1、構建HAI應用地域的選擇有點少,像北京這樣的一線城市選項竟然么有,有一些詫異。
2、生成圖像過程中會出現卡頓現象,雖然顯示圖像在生成中,但是進度一直不動,卡的時間比較長,只能重啟應用來解決問題,如果能監控到圖像生成的問題并給予提示就更好了。個人認為是算力不夠,在處理更大尺寸的圖像、采樣步數過大等問題,會有限制。
3、對于有經驗的使用者,對目標圖像生成時,配置參數有自己的著重點。但是對于新手使用,提示詞積累比較少,生成圖像可能跟自己的預期大相徑庭,能提供一些提示詞案例就更好了。

優點:

1、HAI 提供了簡單易用的API接口和友好的開發工具,方便用戶開發和調試。
2、快速構建和部署,我覺得這是很多使用者都能看到的優點,真的很方便。
3、HAI 使用先進的架構和算法,能夠處理大量并發請求,并提供高吞吐量和低延遲的服務,這讓使用者在使用應用過程中體驗更好。
4、可以搭建一套服務,讓多個應用一起使用,這樣不僅節約了經費,還節省了時間。

附:HAI官方地址:https://cloud.tencent.com/product/hai

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210032.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自定義函數參數傳遞問題

最近,被一個函數調用參數傳遞的問題困惑了一陣。自己寫的解釋程序,一直用的好好的。在暗自得意的過程中,突然出現了bug,被潑了一頭冷水。當然,bug是在無意中被發現的,確定以后則可以編制專用的代碼來揭示它…

重積分的應用@物體對外部質點的引力問題

文章目錄 引力(*)分析兩質點間的引力公式三重積分計算引力薄片情形計算例 引力(*) 這里討論的是:空間一物體對于物體外一點 P 0 ( x 0 , y 0 , z 0 ) P_{0}(x_0,y_0,z_0) P0?(x0?,y0?,z0?)處單位質量的質點的引力 分析 仍然使用元素法, 設占有空間有界閉區域 Ω \Omega …

網絡協議與 IP 編址

網絡協議與 IP 編址 之前大概了解過了網絡的一些基礎概念,見文章: 網絡基礎概念。 之前簡單了解OSI模型分層: TCP/IP模型OSI模型TCP/IP對等模型應用層應用層表示層應用層會話層主機到主機層傳輸層傳輸層因特網層網絡層網絡層網絡接入層數據鏈…

jsonwebtoken生成token和解析

先上npm地址 jsonwebtoken:jsonwebtoken - npm express-jwt:express-jwt - npmps const express require(express); const jwt require(jsonwebtoken); const { expressjwt: expressJWT} require(express-jwt)const app express();// 設置密鑰 co…

愛智EdgerOS之深入解析數據庫模塊的Redis Client

一、Redis 簡介 無論是什么類型的應用,都少不了和數據打交道。尤其是一些復雜的應用場景,都少不了一個高效可靠的數據庫。例如日常開發中最常見的 MySQL 等關系型數據庫,讓數據的存儲、檢索輕松簡單起來,甚至可以輕松地處理百萬量…

51單片機c語言燒錄軟件,51單片機燒寫程序的方法

STC89C51是應用廣泛的51單片機,很多人都是通過該單片機入門學習的,單片機的學習需要勤動手。單片機需要燒寫程序,要用到相關的軟件和硬件。下面介紹一下51單片機燒寫程序的方法。 1 所用到的硬件工具 51單片機燒寫程序需要用到單片機的UART…

C語言數組(下)

我希望各位可以在思考之后去看本期練習,并且在觀看之后獨立編寫一遍,以加深理解,鞏固知識點。 練習一:編寫代碼,演?多個字符從兩端移動,向中間匯聚 我們依舊先上代碼 //編寫代碼,演?多個字…

數據庫Delete的多種用法

數據庫的Delete操作是用來刪除數據庫中的數據記錄的,它是數據庫操作中的一種重要操作,能夠幫助用戶刪除不需要的數據,以便保持數據庫的整潔和高效。在使用Delete操作時,需要注意確保操作的準確性和安全性,以免誤刪重要…

基于 Gin 的 HTTP 中間人代理 Demo

前面實現的代理對于 HTTPS 流量是進行盲轉的,也就是說直接在 TCP 連接上傳輸 TLS 流量,但是我們無法查看或者修改它的內容。當然了,通常來說這也是不必要的。不過對于某些場景下還是有必要的,例如使用 Fiddler 進行抓包或者監控其…

觸想嵌入式工業一體機在智能垃圾分類站的應用

1、行業發展背景 根據住建部給出的目標,到2025年前,全國地級及以上城市要基本建成垃圾分類處理系統。隨著垃圾分類政策在全國強制落地,終端執行層面面臨的最迫切問題是垃圾分類的準確性與社會參與意愿,而這兩點與垃圾分類操作的簡…

CNN發展史脈絡 概述圖整理

CNN發展史脈絡概述圖整理,學習心得,供參考,錯誤請批評指正。 相關論文: LeNet:Handwritten Digit Recognition with a Back-Propagation Network; Gradient-Based Learning Applied to Document Recogniti…

Python 中的數學運算(Python Math)

更多資料獲取 📚 個人網站:ipengtao.com Python中的math模塊是數學運算的重要工具,提供了豐富的數學函數和常數。本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進行數學運算。 Python的math模塊是一個強大的工具…

C51--OLED

GME12864-12 OLED寫入指令數據: 1、start()開始 2、slave address 存積地址:011110 xx 寫入:b 0111 1000 (0x78)(R / W位置為0時,表示寫入) 3、ACK 4、cotro…

操作系統———磁盤調度算法模擬

實驗目的 磁盤是可供多個進程共享的設備,當有多個進程都要求訪問磁盤是,應采用一種最佳調度算法,以使各進程對磁盤的平均訪問時間最小。目前最成用的磁盤調度算法有先來先服務(FCFS),最短尋道時間優先&…

Spring Boot的配置文件

配置文件的作用 整個項目中所有重要的數據都是在配置文件中配置,如數據庫的連接信息,項目的啟動端口,用于發現和定位問題的普通日志和異常日志等等。配置文件可以分為兩類 系統使用的配置文件(系統配置文件)&#xf…

【Kotlin】

Lambda 就是一小段可以作為參數傳遞的代碼。 因為正常情況下,我們向某個函數傳參時只能傳入變量,而借助Lambda 卻允許傳入一小段代碼。 Lambda 表達式的語法結構: {參數名1: 參數類型, 參數名2: 參數類型 -> 函數體}首先,最外…

JS基礎源碼之手寫模擬new

JS基礎源碼之手寫模擬new 手寫模擬new初步實現最終實現 手寫模擬new new 運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象類型之一。 我們先看看new實現了哪些功能: function Person (name,age){this.name name;this.age age;this.habit Games;…

開發猿的平平淡淡周末---2023/12/9

上周回顧 完成了遺留的開發任務,基本全部完成進一步了解了系統當時設計的原理熟悉了代碼的重構 2023.12.9 天氣晴 溫度適宜 前言 小伙伴們大家好,時間很快,又來到了周末,也是一個平平淡淡的周末。上周只更了一篇博客...原…

滲透測試 | 滲透測試之信息收集

滲透測試(penetration test,pentest)是實施安全評估(即審計)的具體手段。 滲透測試可能是單獨進行的一項工作,也可能是常規研發生命周期(例如,Microsoft SDLC)里 IT 安全…

Unicode編碼解碼

一、Unicode概述 Unicode是一種字符編碼標準,旨在解決不同字符集之間的兼容性問題。它為全球所有語言提供了一種統一的編碼方式,使得各種字符能夠在計算機系統中正確顯示和處理。Unicode字符集包含了世界上幾乎所有的字符,包括中文字符、英文…