Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all articles
Browse latest Browse all 681

AI生成圖片測速-NVIDIA顯示卡與邊緣裝置,使用Jetson Orin NX Jetpack6.0執行Stable Diffusion

$
0
0

之前介紹了NVIDIA Jetson AI Lab 大解密,之前都是使用AGX ORIN來執行範例,這次我們來使用ORIN系列中階的Jetson Orin NX來執行看看相關範例。

 

攝影/撰寫 郭俊廷 材料表 Jetson Orin NX

鍵盤滑鼠

HDMI螢幕

 

時間 2小時
難度 2(滿分5)

 

 

Stable Diffusion是2022年發布的深度學習文字到圖像生成模型。它主要用於根據文字的描述產生詳細圖片,儘管它也可以應用於其他任務,如內補繪製、外補繪製,以及在提示詞指導下產生圖生圖的轉變。 它是一種潛在擴散模型,由慕尼黑大學的CompVis研究團體開發的各種生成性類神經網路之一。

 

首先我們先來看使用Stable Diffusion圖像生成的效果如下圖,輸入要生成圖的關鍵字就可以生成對應的圖。

 

使用JETSON ORIN NX執行Stable Diffusion生成圖片的時間如下:

 

所需軟硬體需求:

以下 Jetson 設備之一:

Jetson AGX Orin (64GB) Jetson AGX Orin (32GB) Jetson Orin NX (16GB) Jetson Orin Nano (8GB)

運行以下版本的JetPack 之一 :

JetPack 5 (L4T r35.x) JetPack 6 (L4T r36.x)

足夠的儲存空間(最好有NVMe SSD)。

6.8GB 對於容器鏡像

4.1GB 適用於 SD 1.5 型號

 

目前為 Jetson Orin系列設備都可以使用,本次主要來使用ORIN系列中階的Jetson Orin NX(16G記憶體)RK-reComputer J4012套件來執行。

 

相關Orin系列設備,如要購買可參考以下網站或來電洽詢:

https://robotkingdom.com.tw/?s=Orin+&post_type=product

 

如果還沒有執行過NVIDIA Jetson AI Lab的系統安裝建置,可以參考以下文章進行系統安裝建置以及將使用者新增至 Docker 群組的相關操作才可以執行接下來的Stable Diffusion範例。

https://blog.cavedu.com/2024/06/15/nvidia-jetson-ai-lab-text-generation-webui/

 

首先執行stable-diffusion-webui的啟動指令(如果第一次執行會先下載相關docker檔案以及運行時下載模型檢查點根據網路速度決定執行的時間):

輸入以下指令啟動:

jetson-containers run $(autotag stable-diffusion-webui)

 

下載好相關檔案,正確執行時會出現如下圖紅框所示的網址

 

這時候如果是使用遠端連線的話,在瀏覽器上輸入http://<JETSON_IP_ADDRESS>:7860

就會出現如下圖畫面:

 

以下介紹一下可以調整的參數:

Sampling steps 取樣步驟:數字越高訓練出來的圖精緻度越高但生成的時間也越久,這裡我們先選擇預設。

Width寬度:設定所生成圖形左到右的寬度,通常內建不管長、寬都是設定成512。

Height高度:設定生成圖形垂直上到下高度的欄位。

Batch size:調整 一次計算過程中,需要同時產出幾張圖片 (一次計算可以視為一個 Batch)

Batch count:調整 按下算圖後,總共要跑幾次計算 (幾次 Batch)

CFG Scale:提示詞相關性,是用來控制 Stable Diffusion 生成圖片時,究竟要多「聽話」的設定,通常選擇在 7-12 之間。

Seed:隨機種子,什麼是Seed隨機種子?其實就是電腦隨機生成的圖形,每個圖形都有一個隨機生成的種子碼。不同的Seed種子碼會生成不同的圖形,而相同的種子碼則會產生相同的圖形。因此,只要設定相同的文字指令(Prompt)、CFG Scale提示詞相關性,以及Width、Height等參數,變更Seed的數字,就能生成一張完全不一樣的圖形。

如果想在Stable Diffusion中設置自動隨機生成圖形,記得在Seed欄位中填入-1(預設就是-1),這樣電腦每次計算圖像時就會自動產生不同的Seed值來生成圖形。

 

以上參數介紹引用以下網站,想要了解更多資訊可以參考以下網站介紹:

https://www.iiiedu.org.tw/activity/74/5

 

接著開始進行生圖

 

預設可以使用預先下載好的v1-5-pruned-emaonly.safetensors模型來生圖,例如我在txt2img下方空格處填入cat(目前只支援英文語系辨識,輸入中文無法生成對應的圖),就會產生如下圖貓咪的圖。

 

另外如果使用預設的模型v1-5-pruned-emaonly.safetensors,請記得長跟寬要設定成512以下,因為此模型只支援到這個大小,超過就會生成奇怪的圖。

 

如果我將長跟寬都設定成1024,生成之後會出現四隻貓合再一起的樣子,因為此模型不支援此種圖片大小,如果要使用1024大小的圖就要更換模型。

 

我們可以調整各種參數來看看生成圖的效果如何,

 

如果想換SDXL模型需要以下軟硬體需求,需要使用AGX ORIN:

以下 Jetson 裝置之一(SDXL 需要 >= ~13GB 記憶體)

Jetson AGX Orin (64GB) Jetson AGX Orin (32GB)

運行以下版本的JetPack 之一 :

JetPack 5 (L4T r35.x) JetPack 6 (L4T r36.x)

足夠的儲存空間(最好有NVMe SSD)。

6.8GB 對於容器鏡像

12.4GB 適用於 SDXL 型號

已按照先前的 教學進行操作並執行 Web 伺服器容器。 stable-diffusion-webui

 

首先要先下載SDXL模型檔案,執行以下指令:

CONTAINERS_DIR=/path/to/your/jetson-containers

MODEL_DIR=$CONTAINERS_DIR/data/models/stable-diffusion/models/Stable-diffusion/

sudo chown -R $USER $MODEL_DIR

wget -P $MODEL_DIR https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

wget -P $MODEL_DIR https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors

 

下載完重新執行stable-diffusion的指令

jetson-containers run $(autotag stable-diffusion-webui)

 

 

將左上方模型選擇sd_xl_base_1.0.safetensors 這個模型,之後要記得修改圖片大小為1024*1024這樣生成的圖效果會比較好,因為該模型是使用1024*1024來訓練的。

 

如果還想使用其他模型,可以去以下網站搜尋想要風格並下載對應的模型:

https://civitai.com/models/4855/anythingelse-v4

最後來看各個裝置執行Stable Diffusion生圖的效果以及時間

 

Jetson AGX Orin (32GB)大約5.7秒:

 

Jetson Orin Nano (8GB)大約18.6秒:

 

RTX3070(效能約RTX4060)的筆電大約4.1秒:

 

 

要了解NVIDIA Jetson AI Lab有甚麼其他的範例的可以參考以下文章:

https://blog.cavedu.com/2024/08/27/jetson-ai-lab/

 

參考資料:

https://github.com/dusty-nv/jetson-containers/

https://www.jetson-ai-lab.com/tutorial-intro.html

https://koding.work/stable-diffusion-webui-tutorial-txt2img/

https://www.iiiedu.org.tw/activity/74/5

AI生成圖片測速-NVIDIA顯示卡與邊緣裝置,使用Jetson Orin NX Jetpack6.0執行Stable Diffusion〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


Viewing all articles
Browse latest Browse all 681

Trending Articles