之前介紹了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檔案以及運行時下載模型檢查點根據網路速度決定執行的時間):
輸入以下指令啟動:
下載好相關檔案,正確執行時會出現如下圖紅框所示的網址
這時候如果是使用遠端連線的話,在瀏覽器上輸入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模型檔案,執行以下指令:
下載完重新執行stable-diffusion的指令
將左上方模型選擇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教育團隊技術部落格》。