# dreambooth參數影響 ## 1. Training Steps Per Image (Epochs) 全部圖片跑完是一個epoch,總共要幾個epoch。 訓練時間會被等倍拉長。 調太高會出現沒打目標的prompt也會出現我的目標,這樣這個模型就只能產我的目標圖,不能產其他東西,也難以靠prompt微調(overfitting)。 總共1000 steps就好,因此一般設成```1000/訓練集圖片數```就行,如果想做功能完全被限制的模型可以調高。 --- 以訓練過獅白的模型為例,試著用```blonde hair,Elf```產出金法精靈 4 epochs 正常的產出金法精靈(雖然外套樣式和獅白有點像) ![](https://i.imgur.com/iG149he.png) 50 epochs 明明沒下獅白的prompt看起來卻像獅白 ![](https://i.imgur.com/K7JofIl.png) --- ## 2. Instance Token 和 Instance Prompt 的差別 Instance Token是一個單字如"aaa",Instance Prompt是一句話如"style of aaa"。 Instance Prompt非必要,使用的話可以比較精準的使用這個單字。如果不用你的model會不清楚你要的是什麼,如"style of aaa"表明aaa是風格,而"photo of aaa"表明aaa是物體。 --- 題外話,在使用模型時假如aaa是物體輸入"aaa"或"photo of aaa"我覺得沒多少差別,只是用"aaa,water"有時候是背景有水,有時候是aaa在水裡。而"photo of aaa in water"必定是aaa在水裡。 ## 3. 在Instance Token/Prompt中使用[filewords] 預處理訓練集可設定產生txt檔,裡面有此圖片相關的特徵(prompt),在提示能用[filewords]的欄位使用。 使用後對目標的生成能力沒有太大的影響,但會影響和其他東西的組合和替換能力。 使用[filewords]後要替換零件比較容易,但是對相關的prompt依賴性比較高。 不使用的話容易和目標原本的零件組合在一起,要風格化時有奇效,且不需要其他prompt。 --- 以初始服的獅白```my_shishiro```為範例 以下是"**不使用**"[filewords]訓練的初始服裝獅白,可以看到比基尼的樣式**和初始服裝融合**了。 ![](https://i.imgur.com/p1Uq3RW.png) 以下是"**使用**"[filewords]訓練的初始服裝獅白,可以看到比基尼的樣式與初始服裝無關,**但獅耳消失了**,需要加上```lion_ear```長回獅耳。 ![](https://i.imgur.com/1dfxBt5.png) --- 為什麼使用[filewords]後特徵會消失?如果你告訴AI這張圖是"有獸耳的獅白",AI就會覺得獸耳不是獅白的必要特徵,否則你不需強調有獸耳,於是獸耳就可能消失,直到你說要獸耳時再把獅白的獸耳款式加上去。 因此若希望目標的一部份替換後和目標的樣式相似,或希望只用一個prompt就能生成目標,應該不使用[filewords]。 若希望能把一部份完全換掉,應使用[filewords],但使用後如果要所有部位和原來的目標一樣要把[filewords]裡的prompt全加上才會比較像。 你可以透過手動編輯txt檔決定哪些是可替換的,或者 **直接把[filewords]的內容寫在Instance Token/Prompt中像這樣```a photo of my_shishiro,(可替換/非必要)特徵```。** 想改髮色或衣服務必使用。 :::success 如果訓練集裡有大量圖片都有你不要的特徵(例如人物畫的背景剛好都是白色,而你不希望AI認為白色背景也是人物特色),你可以在prompt後加上該特徵告訴AI那是多餘的,例如```a photo of my_shishiro, white_background```。 ::: :::success 犧牲頭髮顏色(```a photo of my_shishiro, grey_hair```)貌似能讓其他特徵(衣服、頭飾)更準確,只是你以後要用的時候記得指名髮色。 ::: ## 4. Class Prompt / Classification Dataset 要使用這兩個功能首先要把Class Images Per Instance Image設為非零正數,可以告訴AI我們的目標的種類(class)是什麼,但訓練時間會變久。 如果我的目標是產生獅白Class Prompt應該要設為```a photo of a girl```,如果我的目標是101大樓Class Prompt應該要設為```a photo of a building```。 訓練時,AI會自動依照Class Prompt生成Classification Dataset的圖片,訓練時用這些圖片告訴AI什麼樣的東西雖然相似但不是我們的目標。如果不要他自動生成我們可以自己準備,但張數不足它還是會自動生成。 **Classification Dataset的圖片一致性不要太高**,假如Class Prompt是```a photo of a girl```,而準備的圖片都是藍色頭髮,訓練完以後你打```girl```產生的女孩都是藍色頭髮。~~我之前自己準備Classification Dataset時隨便丟圖進去結果因為色圖太多導致不是獅白的女性都會產出色圖。~~ Class Prompt 看起來和 Instance Prompt 很像,那它可以用[filewords]或使用```a photo of a girl,...```來修飾嗎?答案是可以**但要看情況**。使用[filewords]後Classification Dataset的影響會變低,可以解決Classification Dataset風格單一使訓練完的AI對這個class的風格固定,但代價是這個class的圖多少會混一點目標特徵進去,且對目標準確度會降低,畢竟Classification Dataset影響變小。==**個人建議不要加[filewords]**==,風格問題可以靠慎選Classification Dataset解決,要加的話最好手動編輯[filewords]。 :::success 如果希望class風格好一點或不要單一風格,自己選Classification Dataset的圖片會比較好,自動生成的Classification Dataset都差不多。 ::: :::warning 在 Class Prompt 或 Classification Image Negative Prompt 增加和畫質有關的Prompt,AI對目標的準確度會降低(似乎?)。 ::: 有趣的是,我在訓練獅白模型時,當我**使用 ```a photo of a girl,grey_hair``` 當作Class Prompt**,產生的獅白衣服樣式**準確度提升**,但代價是頭髮可能不是灰色,但這很好解決,加上```grey_hair```就好。我之後試著在Class Prompt加上```girl, ahoge, animal_ears, bare_shoulders, black_footwear, black_jacket, blush, boots, breasts, earrings, full_body, fur-trimmed_coat, fur-trimmed_jacket, fur_trim, grey_eyes, grey_hair, hair_between_eyes, jacket, jewelry, lion_ears, lion_girl, long_hair, looking_at_viewer, medium_breasts, midriff, necklace, off_shoulder, shirt, simple_background, single_leg_pantyhose, skirt, sleeveless, sleeveless_shirt```產生的圖卻**完全不像**獅白。得出的結論是在Class Prompt逗號後面加上的東西在生成目標時會消失,但在其他部分會更準確。 :::success 因此**在訓練衣服特殊的人物時我建議Class Prompt後面可以加上容易控制的特徵像是髮色、頭髮長度**來提升衣服準確度,**不要加太多**否則會不像。 ::: :::info 當我在Class Prompt使用```a photo of a girl```時,輸入```girl```產生的圖片畫風會和Classification Dataset相似。 而使用```a photo of a girl,grey_hair```時,輸入```girl```產生的圖片畫風還是原模型的畫風,要輸入```girl,grey_hair```才會和Classification Dataset相似。 :::