精品軟體與實用教程
Amazon SageMaker 如何使用Grounded-SAM
如何基於SageMaker Notebook 快速建立託管的AI 作畫視覺化環境.
1. 方案新增功能:ControlNet 與Image browser 插件支援;
2. 在電商/廣告產業內,基於本方案新版本搭載最新視覺工具 Grounded-SAM,進行可控文圖生成,加速行銷素材產出;
3. 本方案的常見問題與解答。
推薦您將方案部署在美東us-east-1 區域,並根據您的需求選擇ml.g4 或ml.g5 系列實例類型
註冊免費試用亞馬遜雲端科技(AWS)雲端服務連結: https://aws.amazon.com/cn/free/
第一部分方案新增功能
1 擴充與插件
1.1 ControlNet
ControlNet 是基於 Stable Diffusion WebUI 推出的插件,它為文生圖功能引入了新的控制方式,可以額外控制人物的姿勢、景深、線稿上色等等,可以更穩定的控制輸出畫面。 ControlNet 把每一種不同類別的輸入分別訓練了模型,目前公開的有下面8 個。分別是:canny,depth,hed,mlsd,normal,openpose,scribble,segmentation,模型描述見下表。
預處理名稱 | 對應模型 | 模型描述 |
canny | control_canny | 邊緣檢測。透過從原始圖片中擷取線稿,來產生同樣構圖的畫面。 |
depth | control_depth | 深度檢測。捕捉畫面深度,取得圖片前後景關係。 |
hed | control_hed | 邊緣檢測但保留更多細節,適合重新著色和風格化。 |
mlsd | control_mlsd | 線段識別,辨識人物功能極差,非常適合建築。 |
normal_map | control_normal | 根據圖片產生法線貼圖,非常適合CG 建模師。 |
openpose | control_openpose | 提取人物骨骼姿勢。 |
openpose_hand | control_openpose | 提取人物+手部骨骼姿勢。 |
scribble | control_openpose | 擷取黑白稿。 |
fake_scribble | control_scribble | 塗鴉風格提取(很強大的模型)。 |
segmentation | control_seg | 語義分割。 |
本方案最近版本的WebUIVersion – 0405 版本預設支援ControlNet 外掛程式(請參閱本文第三部分常見問題1),只需依照以下步驟進行模型的下載,即可立即開始使用ControlNet 外掛程式。
- 在CloudFormation-堆疊-輸出中(參考上篇部落格 4.3 第12 步),找到NotebookURL 鏈接,並打開SageMaker Notebook Instance
![]() |
- 打開一個終端,依序點擊 File->New->Terminal
- 輸入以下命令,開始下載,下載需要時間根據伺服器的網路狀況評估
- 等待下載完成,回到Stable Diffusion Web UI 介面,在ControlNet 中點選」刷新」按鈕,即完成了模型下載與安裝
![]() |
1.2 Image Browser
新增支援Image Browser 插件,您可以輕鬆查看生成的歷史圖片,如下圖位置。
![]() |
2 區域支持
新增美西2 US West(Oregon)區域
第二部分電商廣告素材生成
1 背景介紹
在電商影像素材產生中,很常見的任務就是針對影像的某部分進行定向修改。以往更多是需要設計師,使用專業影像編輯軟體經過長時間作業才能實現。然而,根據目前的AI 能力,我們可以更簡單、更有效率地完成該任務。
在本文中,我們將為大家展示如何在生花妙筆的新版方案上使用Stable Diffusion WebUI 和Grounded-SAM 實現下圖所示的端到端的圖像編輯效果,包括 1. 無程式碼實現圖像編輯 (手動蒙版),適合不熟悉程式碼開發的設計、創作人員,以及 2. 利用程式碼自動實現影像編輯 (自動蒙版),適合開發人員、對AIGC 有興趣的愛好者。
![]() |
原圖來自網絡
2 方案模型使用
在本文中,我們會使用到下列幾個模型。
2.1 Realistic Vision
Realistic Vision 是指生成逼真影像的模型。可以創造高度逼真不同年齡、種族、服裝風格的人像,看起來就像照片一樣。
2.2 ControlNet
ControlNet 是一個基於Stable Diffusion 1.5 的預訓練模型,在作者Lvmin Zhang 的論文中,解釋說ControlNet 是透過輸入條件來控制預先訓練的大型擴散模型,能利用輸入圖片裡的邊緣特徵、深度特徵或人體姿勢的骨架特徵,配合文字 prompt,精確引導影像在SD 1.5 裡的生成結果。 ControlNet 總共有8 個模型,本文使用Control_canny 模型。
2.3 Grounded-SAM
Grounded-Segment-Anything(Grounded-SAM)是基於 Grounding DINO(檢測器)和 Segment Anything Model(分割器)建構的多模態圖片產生工作流程,是熱門的開源專案。 Grounded-SAM 可直接搭配Stable Diffusion 進行可控文圖產生。
2.3.1 Grounding DINO
Grounding DINO:零樣本的影像偵測模型,能夠透過文字描述偵測圖中物體,生成矩形框。
2.3.2 Segment Anything Model(SAM)
Segment Anything Model(SAM):高品質的影像分割模型,可透過輔助點和輔助框作為提示,進行影像分割。其訓練集包括超過10 億張蒙版,1100 萬張圖片,是迄今為止最大的用於影像分割的開源資料集。官方宣稱, SAM 已經學會了「物體是什麼」的一般性概念,因此可無需額外訓練進行圖片分割。
3 無程式碼實現影像編輯(手動蒙版)
實驗步驟如下:
3.1 讀者可以點擊這裡下載本實驗所用圖片。
3.2 在CloudFormation-堆疊-輸出中,找到NotebookURL 鏈接,並開啟SageMaker Notebook Instance。
![]() |
3.3 點選Terminal,並依序輸入下面的指令,下載Realistic Vision V1.3 模型。
上面腳本中我們使用了HuggingFace 上的 Realistic Vision V1.3 模型。您也可以從CIVITAI 官網上直接下載 Realistic Vision V2.0,兩者的最終效果十分接近。
![]() |
3.4 在WebUI 中選擇我們剛下載的預訓練模型Realistic Vision V1.3 作為基礎模型,並選擇img2img 中的Inpaint 功能作為我們的任務類型。所謂Inpaint,其實是圖生圖任務的一個子分類,也就是透過遮罩(Mask)進行影像補全,或是局部影像生成。
![]() |
3.5 上傳原圖並用畫筆手動畫出想要編輯區域的遮罩。
![]() |
3.6 依照下圖配置Inpaint 相關參數。這邊我們選擇只對蒙版部分進行補全生成。
![]() |
3.7 上傳原始圖片到ControlNet 並依照下圖配置相關的參數。 ControlNet 功能可協助加強對最終影像產生的控制力。這裡我們選擇Canny 預處理器(Preprocessor),並選擇對應Canny 模型(Model)以產生描邊圖,降低「Canny lower threshold」可以幫助我們保留更多原圖中邊緣的細節,如圖所示。 ControlNet 模型的安裝請參考FAQ,Canny 等模型解釋請參考ControlNet 部分的模型釋義表。
![]() |
3.8 參考以下模版輸入提示詞,並點選生成。
Prompt = an extremely beautiful dreamy white lace cotton dress with delicate see-through sleeves, extra detailes, (high detailed skin:1.2), 8k uhd, dslr, soft lighting, high quality, filmalis g
Negative Prompt = (deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, croed, out of ppame, worst quality, low quality, worst quality, worst quality, low qust jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, de granrated, bad anatomy, faces proportions, extrarated, grossd, gr片, face, faces, facetra malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck
![]() |
3.9 等待生成之後我們可得到以下結果。
![]() |
小結:上述流程雖然簡單易操作,但是如果每次產生遮罩都需要手動產生會非常耗時。以下我們將介紹透過程式碼方式進行圖片編輯。
4 程式碼化全自動實現影像編輯(自動蒙版)
將Grounding DINO(偵測器)和Segment Anything Model(分割器)這兩個關鍵元件結合後,Grounded-SAM 即成為異常強大的視覺應用組合,可透過文字提示字(Text Prompt)完成CV 語意分割。再搭配Stable Diffusion,無疑為多模態工程化圖片生成提供了更多可能性。實驗步驟如下:
![]() |
圖片來自 https://github.com/IDEA-Research/Grounded-Segment-Anything
4.1 在CloudFormation-堆疊-輸出中,找到NotebookURL 鏈接,並開啟SageMaker Notebook Instance。
![]() |
4.2 點選Terminal,並依序輸入下面的兩行指令,將程式碼Clone 到本機。
![]() |
![]() |
4.3 在左側路徑選擇進入“miaobishenghua2”,並雙擊“g-seg-local.ipynb”檔案。同時選擇“conda_pytorch_p39”作為我們的環境。
![]() |
4.4 順序運行所有的程式碼片段。整個流程包括三個主要部分。
4.4.1 將展示如何使用 Grounding DINO,透過文字描述產生預測矩形框。例如這裡,我們想要選擇的是綠色的連身裙,即可輸入“green dress”作為提示詞並得到下圖。我們也可以透過調整「box_threshold」來控制辨識的置信度,調整「text_threshold」來控制提示詞相關性,以此對最終結果進行篩選(詳見程式碼)。矩形框結果將作為下面分割任務的輔助提示(Prompt)。
![]() |
我們也可以試試將提示詞換成“white dress with blue patterns”,則會得到下面的矩形框。而圖中最左邊的裙子雖然也是白色,但是因為沒有藍色的圖案因此並沒有被選中。
![]() |
4.4.2 將展示如何使用 Segment Anything 根據上一步驟的預測矩形框,產生分割蒙版。這裡我們將預測框作為輔助提示輸入,並透過「multimask_output=False」限定只輸出一個分割遮罩(詳見程式碼),最終將得到下圖的結果。 Segment Anything 本身也支援單點和多點作為輔助提示,這樣我們可以在只有原圖的情況下,也能快速自動化地批量生成蒙版。
![]() |
![]() |
4.4.3 我們將展示如何使用Stable Diffusion 的Inpainting 模型來替換上面蒙版中的內容。我們在實驗時使用了ml.g5. 2xlarge 的實例,請根據您的實例類型來調整 os.environ["CUDA_VISIBLE_DEVICES"] = "0"
。這裡,我們換用stable-diffusion-2-inpainting 模型產生了下圖(詳見程式碼)。
![]() |
小結:基於以上方式,我們可以更輕鬆、更有效率地實現全自動影像編輯和素材生成。在實際的生產環境中,我們往往需要更複雜的工程架構來進一步最佳化整個工作流程。需要注意的是,此部分程式碼中使用的Stable Diffusion 來自於 HuggingFace diffusers,而考慮到一般企業內部中,團隊協作更緊密(設計師與技術開發),建議使用Stable Diffusion WebUI API 來實現代碼化圖片生成和產出的工作流,以確保參數等資訊的統一性。此方案範例可作為全自動工作流程的快速驗證參考。
第三部分常見問題
1 如何更新到方案最新版本(0405)?
安裝方法請參考《生花妙筆信手來– 基於SageMaker Notebook 快速建立託管的Stable Diffusion – AI 作畫視覺化環境》的安裝過程。 WebUIVersion 預設使用0405 版本。目前還不支援在已有環境更新,需要重新安裝。
![]() |
2 方案部署時,遇到服務限額問題如何處理?
在部署本方案之前,請先在對應區域的Service Quota 中確認SageMaker Notebook 對應的資源額度(例如ml.g4dn.2xlarge for notebook instance usage)已經獲得提升,具體步驟參考連結。
3 如何使用從互聯網下載的模型?
- 在 Cloud formation 的Outputs 頁面,開啟 NotebookURL 對應的連結
- 在左側導覽欄,定位到sd-webui/data 目錄,如下圖所示
![]() |
- 對於Stable Diffusion 的基礎模型,放在 StableDiffusion 目錄
- 對於Lora 模型,放在 Lora 目錄
- 對於ControlNet 模型,放在 ContrloNet 目錄
- 使用者微調(finetune)的模型,預設也放在 StableDiffusion 目錄
4 如何在Automatic 和InvokeAI 之間進行切換?
- 在Cloud formation 的Outputs 頁面,開啟 NotebookURL 對應的連結
- 打開一個終端,依序點擊 File->New->Terminal
- 進入到如下目錄
- 啟動Automatic WebUI
- 啟動Invoke WebUI
5 關於版本管理
我們會保留最新的兩個方案版本: 0405 和 0316。
總結
本文介紹了針對上一篇系列部落格方案的新增功能,如:新增支援ControlNet 與Image Browser 插件,新增支援美西2 US West(Oregon)區域。並詳細介紹了基於本方案及相關SageMaker 服務,在電商廣告行業下,使用Grounded-SAM 進行營銷素材生成的方法與步驟,包括:1. 透過ControlNet 中的Canny 模型配合Inpaint 功能進行無代碼圖像編輯,以及2. 透過Grounded-SAM(Grounding DINO 和 Segment Anything)利用程式碼進行影像編輯。此外,我們將會持續在「生花妙筆信手來」系列中,加入更多貼近客戶場景的方案。如果您有任何相關的問題或需求,歡迎隨時聯絡我們進一步交流。