快轉到主要內容

Draw Things教學,iOS離線跑Stable Diffusion AI生圖

分類   開源AI應用 AI繪圖教學
標籤   IOS MacOS Stable Diffusion ControlNet
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

想要在iOS跑AI生圖?不要雲端運算,而是直接用本機GPU生圖?

Draw Things APP實現你的願望!

Draw Things為Liu Liu於2022年推出的免費APP,部份開放原始碼,僅支援Mac、iPhone、iPad系統。其他系統建議用 Automatic1111 Stable Diffusion WebUI

Draw Things提供文生圖、圖生圖、局部重繪、訓練模型等功能,界面針對行動裝置重新設計過。它利用Apple Core ML加速技術,讓你可以在iOS裝置直接跑Stable Diffusion、FLUX這類AI生圖模型,不用依賴第三方生圖服務。生圖過程全都是在本機運算的。

這樣做的好處是你可以自由下載生圖模型,不會有任何色色關鍵字審查,也沒有額度限制,能夠自由生成想要的圖片。

現在Draw Things仍持續更新中,不斷加入許多AI生圖的新技術,例如LoRA、ControlNet、Fooocus,新的模型也會陸續支援。

1. Draw Things硬體需求
#

Draw Things支援Mac、iPhone、iPad系統,界面大同小異。

雖然開發者沒有明講Draw Things硬體需求,但AI生圖非常吃系統資源,會大量佔用GPU和RAM,敬請注意散熱。

建議使用搭載M1晶片、RAM 8GB以上的裝置,否則生成1024x1024大圖APP可能資源不足閃退。

iOS在生圖時建議將背景執行的APP全部關閉,將資源留給Draw Things。

另外,AI生圖模型會佔用許多空間,因此要準備20GB以上儲存空間。

2. 下載Draw Things模型
#

  1. 請至 App Store下載Draw Things APP。開源程式碼部份請到 Github查看。

  2. 開啟後Draw Things 會提示你下載模型,我們就選SDXL吧,大約需要5GB左右空間。

  3. Draw Things相容大部分Stable Diffusion模型,所以你也可以到 Civitai網站手動下載模型(建議用Safari背景下載),再點選Import手動匯入至Draw Things。

  4. 點選左下角系統設定,開啟CoreML全部功能,加快生圖速度。

3. 文生圖模式
#

Text to image,根據輸入的文字生成圖片。

裡面的參數請參考 Stable Diffusion WebUI的說明。

界面概覽:

  1. 預設Draw Things會開一個新專案,左邊是生圖選項,中間是畫布圖層,上方為提示詞區域。

  2. 首先,點選左邊的Basic選單,選取使用Stable Diffusion XL模型,Sampler選擇Euler A或UniPC,然後設定生圖長寬為1024x1024

  3. 填入正向提示詞和負向提示詞,後者可以用embedding達成,點一下迴紋針按鈕,下載Negative XL模型。

  4. 按Generate開始生成!等待畫布上的藍色格子填滿…

  5. 圖片就會出來了。長按側邊欄位儲存圖片。

  6. Draw Things的操作邏輯是這樣:每次「文生圖」生完圖都是一個圖層,如果你繼續點生圖,會變成「局部重繪」模式,新圖會參考方框內的圖生成,空白的地方會自動填滿。

  7. 若要生成獨立的新圖,請在生成圖片之後移動畫布的選取框到空白處,或者點一下右下角按鈕Start a blank canvas,這樣新圖才不會參考現有圖片。

4. 圖生圖模式
#

Image to image,參考畫布上的圖片進行AI生成。

  1. 按畫布下方的相機按鈕,或是旁邊的歷史紀錄,匯入要參考的圖片,並讓白色方框對準圖片

  2. 填入提示詞。

  3. 左邊選取Image to Image,調整拉桿,設定參考原圖的程度(Strength),數值越小越像原圖。

如果你覺得圖生圖不夠精準,你還可以搭配 ControlNet依照輪廓或線稿,做更精準的生成,不過這要額外下載許多模型。

5. 局部重繪模式
#

Inpainting,劃出局部區域,重新生成衣服或者換臉。

  1. 點選橡皮擦圖示,擦掉要修改的地方,再點選生成,它就會按照你的提示詞填滿空白處。

  2. 如果使用油漆刷工具的話,就是讓AI生成與筆刷顏色相近的圖片。

6. 啟用HTTP API伺服器遠端生圖
#

你可以啟動Draw Things的HTTP伺服器,遠端請求Draw Things生圖。

  1. 點一下左側的Davanced → HTTP API Server,啟動服務,監聽IP設定0.0.0.0

  2. Apple裝置的區域IP可在系統設定 → Wifi查看

  3. 這樣另一部裝置就能向http://裝置IP:7860傳送生圖請求了,目前支援Draw Things生圖的客戶端似乎就只有 SillyTavern而已哪。

  4. 若要自行實現Python生圖的話,請求格式長這樣,下面是我參考 Github的.mjs範例所改寫的Python指令稿:

import requests
import base64
import time
import os

DRAW_THINGS_URL = 'http://裝置IP:7860/sdapi/v1/txt2img'
MAX_FILE_NAME_LEN = 30

params = {
    "prompt": "girls with bunch of carrots",
    "negative_prompt": "worst quality, low quality, normal quality",
    "model": "模型名稱.ckpt",
    "sampler": "UniPC",
    "seed": -1,
    "steps": 20,
    "guidance_scale": 7,
    "batch_count": 1,
    "width": 768,
    "height": 768
}

headers = {
    'Content-Type': 'application/json'
}

now = int(time.time())

def get_file_name(idx):
    file_name = f"{prompt.replace(' ', '_')[:MAX_FILE_NAME_LEN].lower()}_{now}_{idx}.png"
    return file_name

def save_img(data, idx):
    file_name = get_file_name(idx)
    with open(file_name, 'wb') as f:
        f.write(base64.b64decode(data))
    print(f"Saved: {file_name}")

response = requests.post(DRAW_THINGS_URL, json=params, headers=headers)
data = response.json()

images = data.get('images', [])
for idx, img_data in enumerate(images):
    save_img(img_data, idx)
  1. 存檔為drawthings.py,在電腦終端機執行這個Python指令稿就能呼叫Draw Things生圖。
python3 drawthings.py
  1. 上述的指令稿會在Draw Things界面生圖,同時把圖片下載到電腦。

相關文章

Krita搭配ComfyUI AI生圖,krita-ai-diffusion外掛安裝教學
分類   開源AI應用 AI繪圖教學
標籤   ComfyUI Krita Stable Diffusion Image Inpainting ControlNet
Stable Diffusion相關術語表,中英翻譯對照
分類   開源AI應用 AI繪圖教學
標籤   Stable Diffusion
macOS系統安裝ComfyUI,跑Stable Diffusion AI生圖
分類   開源AI應用 AI繪圖教學
標籤   ComfyUI MacOS

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。