สอน Train Model ตัวเองใน Stable Diffusion [Part5] 1

สอน Train Model ตัวเองใน Stable Diffusion [Part5]

ในตอนที่แล้วเราได้เรียนรู้วิธีการใช้ ControlNet ในการควบคุมท่าทางของแบบไปแล้ว ในบทความนี้เราจะมาเรียนรู้เรื่องที่หลายคนกำลังรอคอยอยู่ นั่นคือวิธีการ Train Model ของเราขึ้นมาใช้เองซักทีครับ

ซึ่งตัว Model ที่ผมจะสอน Train ในบทความนี้ จะเป็น Model ประเภทที่เรียกว่า LoRA ซึ่งก็คือ Model เสริมที่สามารถนำไปใช้ควบคู่กับ Model หลักต่างๆ เพื่อให้สามารถสร้างตัวละคร ชุด ฉาก หรือแม้แต่สไตล์แบบที่เราต้องการได้

แต่ขอบอกไว้ก่อนว่าสิ่งที่ผมกำลังสอนนี้ อาจไม่ใช่วิธี Train LoRA ที่ดีที่สุดที่เป็นไปได้ (เพราะมันขึ้นกับหลายปัจจัยมากๆ ต้องทดสอบเยอะมากจึงจะฟันธงแน่ชัดได้) แต่ผมลองดล้วมันดีในเคสของผมเท่านั้นเองครับ ดังนั้นถ้าใครมีวิธีที่ดีกว่านี้ สามารถบอกผมได้นะ จะได้แลกเปลี่ยนความรู้กันครับ

และเพื่อไม่ให้มีปัญหากับประเด็นเรื่องลิขสิทธิ์ต่างๆ ผมจะแสดงตัวอย่างการ Train ภาพของตัวผมเองแล้วกันนะครับ

รวมบทความ Stable Diffusion

ซึ่งเราสามารถ Train Model ขึ้นมาได้ด้วยหลายวิธี ในบทความนี้ผมจะสอนวิธีแบบใช้ GPU เครื่องคอมพิวเตอร์ตัวเองซึ่ง เราจะต้องผ่านขั้นตอนหลักๆ 4 ขั้นตอน ดังนี้

Step1 : ติดตั้งเครื่องมือ kohya_ss

เริ่มจะเริ่มจากการลงโปรแกรมเพิ่มก่อน ซึ่งในที่นี้ผมจะใช้เครื่องมือที่ชื่อว่า kohya_ss มาช่วยครับ ซึ่งเราจะต้องลงโปรแกรมให้เรียบร้อยก่อน โดยทำตามนี้ครับ

  • ให้ลงโปรแกรมที่จำเป็นเหล่านี้ก่อน
    • Python 3.10 (ถ้าลง SD มาแล้วก็ต้องมีแล้วล่ะ)
    • Git (ถ้าลง SD มาแล้วก็ต้องมีแล้วล่ะ)
    • Install Visual Studio 2015, 2017, 2019, and 2022 redistributable (อันนี้ถ้าใครยังไม่มีต้องลงเพิ่มนะ)
  • แล้วเข้าไปใน Folder กฃที่จะใส่ Kohya_SS เข้าไป
  • แล้วเข้า CMD แล้วพิมพ์ว่า
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
.\setup.bat

พอกด Enter มันจะ copy ไฟล์มาให้เรา แล้วให้กด Enter อีกทีเพื่อ setup (ถ้ามันไม่รัน setup ให้ ค่อยเข้าไปรันไฟล์ setup ใน folder เอง)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 2

แล้วมันจะโหลดไฟล์เพียบเลย

แต่ถ้ารัน setup แล้วมันถาม เรื่อง previous version
ก็ตอบประมาณนี้ก็ได้

  • No (ไม่ Uninstall)
  • Torch ถ้าการ์จกแรงเลือก 2 ได้เลย แต่ถ้าไม่มั่นใจเลือก 1.1

พอโหลดเสร็จมันจะเริ่มถามคำถาม ให้ตอบตามนี้ทีละขั้นตอนได้เลย

  • This Machine
  • No
  • No
  • No
  • All
  • fp16 (ถ้าใครการ์ดจอแรงๆ อาจตอบ bp16 ได้)

เท่านี้การลงโปรแกรมก็เสร็จสิ้นแล้ว

Step 2 : เตรียม Data Set ภาพตัวอย่าง

ขั้นตอนนี้ เป็นขั้นตอนที่ดูเหมือนจะน่าเบื่อแต่สำคัญมากๆ เลย เพราะมันคือขั้นตอนที่เราจะต้องคัดเลือกตัวอย่างมาสอนเจ้า AI ให้สามารถ Generate รูปที่เราต้องการได้ ซึ่งเราจะต้องคัดเลือกรูปตัวอย่างให้เหมาะสมจึงจะได้ผลลัพธ์ที่ดี

สมมติว่าเราอยากจะเทรนหน้าตัวเองให้ AI รู้จัก ซึ่งแนวคิดคือ AI จะต้องเห็นรูปตัวอย่างของเราจำนวนที่มากพอ และหลากหลายพอ ที่จะสามารถวาดรูปเราขึ้นมาใหม่ได้ ในลักษณะท่าทางหรือชุดดที่ต่างไปจากรูปทีเทรนได้ด้วย

ซึ่งจำนวนรูปที่เหมาะสม

  • ผมแนะนำว่าให้เราเตรียมรูปหน้าของเราประมาณ 15-40 รูป
  • แต่จำนวนไม่สำคัญเท่าคุณภาพ ภาพที่ได้มาต้องมีความชัดเจน AI ดูแล้วไม่สับสน
  • และที่สำคัญ ยิ่งมีรูปเยอะ เรายิ่งต้องบรรยายเยอะ (ซึ่งคือส่วนที่น่าจะจุกจิกที่สุดแล้ว)

ส่วนเรื่องความหลากหลาย ยิ่งหลากหลาย ยิ่งเพิ่มความยืดหยุ่น แต่ก็จะมีภาระในการที่ต้องบรรยายรูปซับซ้อนขึ้นไปด้วย หลักการคือ อย่าพยายามมีอะไรที่เราไม่ต้องการอยู่ในรูปซ้ำๆ เยอะๆ เดี๋ยวมันจะจำสิ่งนั้น แต่ถ้าเลี่ยงไม่ได้ ต้องบรรยายสิ่งนั้นด้วย

ถ้าเราอยากให้ LoRA เรา Flexible มากหน่อย ก็ควรมีดังนี้

  • ผมแนะนำว่าควรมีหลายมุมมอง ทั้งหน้าตรง เฉียง ข้าง มุมเงย กด ได้ยิ่งดี
  • ถ้าอยากให้เปลี่ยนทรงผมได้ ในรูปก็ควรจะมีเราทำผมมากกว่า 1 แบบ
  • ถ้าอยากให้เปลี่ยนชุดได้ก็ควรจะมีชุดที่หลากหลายด้วย
  • ลักษณะของแสง ก็ควรจะมีหลากหลาย ทั้งไฟธรรมชาติ ไฟในห้อง ไฟขาว ไฟส้ม

ซึ่งถ้าสามารถทำตามที่แนะนำได้ ก็จะได้ผลลัพธ์ที่ดีกว่า Flexible กว่า แต่ถ้าทำไม่ได้ก็ไม่เป็นไร มันก็เทรนได้เช่นกัน อย่าเพิ่งซีเรียสมาก ลองหารูปมาแล้วเทรนดูก่อนซักตั้ง ดีกว่ามัวแต่เตรียมไฟล์แล้วไม่เทรนซักที 555

ตัวอย่างเช่น ของผมเองผมเตรียมไว้ดังนี้ (ของผม 35 รูป)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 3

ถ้าเราจะเทรนแค่หน้าของเราเป็นหลัก ไม่ได้สนใจเรื่องชุดหรือเครื่องแต่งกาย เราสามารถทำการ Crop ภาพให้เน้นแค่หน้าเราได้ครับ ซึ่งจะลดโอกาสที่ AI จะจำชุดหรือสิ่งแวดล้อมของรูปลงไปได้ดีพอสมควร

ซึ่งเครื่องมือหนึ่งที่สะดวกมากในการ Crop รูป คือเว็บที่ชื่อว่า https://www.birme.net/

ให้เราเข้าไปในเว็บแล้ว Browse รูปลงไป จากนั้นทำการ Resize รูป แล้วเลือกบริเวณ Crop เพื่อเอาเฉพาะส่วนหน้าได้ตามต้องการ ซึ่งเค้านิยมทำกันที่ 512×512 ไม่ก็ 768×768

ซึ่งในที่นี้ผมเลือก 768×768 ไว้เพราะละเอียดดี (ถ้าเทรนชุดก็ไม่ต้อง Crop แบบจตุรัสก็ได้ เพราะจะเห็นชุดไม่ครบ)

จากนั้น save เป็นไฟล์ zip ออกมา

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 4

จากนั้นให้เตรียม Folder ไว้ 3 อันคือ (ชื่อจะตั้งยังไงก็ได้ไม่ซีเรียส แต่ส่วนใหญ่เค้าจะตั้งชื่อประมาณนี้กัน)

  • Image
  • Model
  • Log

จากนั้นใน Folder Image ให้เราสร้าง Folder ย่อยขึ้นมา (สามารถมี folder ย่อยอันเดียว หรือ หลาย folder ย่อยก็ได้ แต่ในที่นี้เราจะทำแค่ folder ย่อยเดียว) โดยให้ตั้งชื่ออยู่ในรูปแบบนี้ คือ

ตัวเลข_ข้อความ

โดยตัวเลข คือจำนวน Repeats หรือการทำซ้ำที่เราจะ train ในแต่ละรูป ซึ่งเป้าหมายหลักคือ เราต้องเทรนทั้งหมดอย่างน้อย 1500 steps ขึ้นไป ยกตัวอย่างเช่น

  • สมมติว่าถ้าเรามีทั้งหมด 10 รูป เราก็ต้องเทรนอย่างน้อย 1500/10 = 150 Repeats
  • สมมติว่าถ้าเรามีทั้งหมด 20 รูป เราก็ต้องเทรนอย่างน้อย 1500/20 = 75 Repeats
  • สมมติว่าถ้าเรามีทั้งหมด 30 รูป เราก็ต้องเทรนอย่างน้อย 1500/30 = 50 Repeats

มีคนแนะนำว่า ควรจะตั้งตัวเลข repeats ไม่ต่ำกว่า 100 แต่เท่าที่ผมลอง หากเราทำการ train หลาย epoch (หลายรอบ) ผมตั้งที่ 50 ก็ยังออกมาเหมือนอยู่ครับ

ดังนั้นในเคสนี้ ผมจะตั้งชื่อเป็น 50_SiraEkabut แล้วใส่รูปที่ Crop แล้วเข้าไปแบบนี้ (ผมมี 35 รูป)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 5

Step 3 : เตรียม Text Description ให้แต่ละรูป

หลักการคือเราจะต้องสร้าง text file นามสกุล .txt ที่ชื่อตรงกับรูปแต่ละรูป แล้วบรรยายสิ่งที่อยู่ในรูปนั้น เพื่อให้ AI เข้าใจว่ารูปนั้นๆ คือรูปอะไรกันแน่

ซึ่งแนวทางการใส่ Description มีหลายวิธี คือ

  • สร้าง Text ไฟล์ขึ้นมาเอง แล้วพิมพ์บรรยายเองเลย (ถึกจัดๆ ไม่ค่อยแนะนำ)
  • ใช้เครื่องมือช่วยใส่คำบรรยายอัตโนมัติ แล้วค่อยพิมพ์แก้เอา ซึ่งทำได้หลายวิธีมากๆ (แบบนี้ผมว่าดี)
    • ใช้เครื่องมือ BLIP Captioning ใน Kohya_SS Gui (ค่อนข้างดี)
    • ใช้เครื่องมือ WD14 Tagger ใน Kohya_SS Gui
    • ใช้เครื่องมือ Clip interrogator ใน Automatic1111
    • ใช้เครื่องมือ WD14 Tagger Extension ใน Automatic1111
    • ใช้เครื่องมือ Clip interrogator2 ใน Hugging face (ค่อนข้างดี)
    • ใช้ /describe ใน MidJourney (ค่อนข้างดี)

Tips : ใครสนใจว่า Clip interrogator2 vs Describe ต่างกันขนาดไหน ลองดูคลิปนี้

ในที่นี้ผมจะลองเปรียบเทียบบางเครื่องมือให้ดูด้วยแล้วกันครับ โดยผมจะลองเอารูปนี้เป็นตัวอย่าง

ตัวอย่างเครื่องมือ Captioning

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 6

BLIP Captioning

ให้เรารันไฟล์ gui.bat ใน folder ที่เราลง kohya_ss เอาไว้ จากนั้นกด Ctrl+Click ที่ URL

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 7

อันแรกลองใช้ BLIP Captioning ใน Utilities ก่อน ให้ Browse ไปที่ folder ที่ใส่รูปเอาไว้ได้เลย แล้วปรับ Min Max Length ของ Description ตามความเหมาะสม แล้วกด Caption Images

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 8

แล้วเราจะได้ Text Description ออกมาอัตโนมัติเลย ในรูปแบบประโยคภาษามนุษย์ (ถ้ามันบรรยายน้อยไปก็เพิ่ม Min Length ให้เยอะขึ้นได้)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 9

ถ้าเพิ่ม Min Length เป็น 20 ก็จะได้คำบรรยายที่เยอะขึ้น (แต่บางทีก็ซ้ำไปซ้ำมา)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 10

WD14 Captioning

ใช้ Kohya_SS Gui เหมือนกัน จากนั้นไปที่ Utilities -> WD14 Captioning

(อย่าลืมย้าย text จาก BLIP ไปที่อื่นก่อน เดี๋ยวทับกัน)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 11
สอน Train Model ตัวเองใน Stable Diffusion [Part5] 12

ผลลัพธ์จะออกมาเป็น Tag หรือ Keyword ในรูปนั้นๆ แทนที่จะเป็นประโยคแบบ BLIP ซึ่งก็ดีทั้งคู่นะ

Clip Interrogator 2 Hugging Face

ให้ไปที่ https://huggingface.co/spaces/fffiloni/CLIP-Interrogator-2 แล้ว Upload รูปเข้าไป แล้ว submit

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 13

จะเห็นว่า Model นี้ก็บรรยายได้ดีเลย แถมเดาด้วยว่าผมอายุเท่าไหร่ (แต่ผิดนิดๆ เพราะจริงๆ ปีนี้ผมอายุ 40 แล้วนะ)

MidJourney Describe

ใครมี Midjourney ก็สามารถใช้คำสั่ง /describe แล้ว Upload รูปที่ต้องการเข้าไปได้ครับ

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 14

ของ MJ นี่น่าจะเหมาะกับรูปที่ไม่ใช่รูปจริงมากกว่าครับผมว่า

แก้ Description ให้เหมาะสม

ไม่ว่าเราจะใช้เครื่องมือไหนในการ Gen Text เบื้องต้นออกมา สุดท้ายเราจะต้องปรับแต่ให้เหมาะสมด้วย ซึ่งเป็นขั้นตอนที่สำคัญสุดๆ และต้องใส่ใจในรายละเอียดมากที่สุด

เช่น เดิม Caption ที่ได้จาก BLIP Captioning เป็นแบบนี้

a man sitting on a bench next to a waterfall in a forest area with a wooden bench and a waterfall behind him

อย่างน้อยที่สุด เราจะต้องใส่ Keyword ที่จะใช้ Trigger หน้าตาของเราเข้าไป ซึ่งผมแนะนำว่า “ให้เป็นเป็นคำเดียว และเป็นคำที่ไม่ซ้ำกับศัพท์ที่มีอยู่แล้ว” (ไม่งั้น AI จะงง)

เช่น ผมจะพยายามใช้ Keyword “SiraEkabut” เพื่อให้เป็นตัวแทนของหน้าตาของผม โดยใส่เข้าไปใน Description แบบนี้

SiraEkabut man sitting on a bench next to a waterfall in a forest area with a wooden bench and a waterfall behind him

หลักการทำงานคือ “AI จะพยายามเชื่อมโยงทุกสิ่งที่อยู่ในรูปที่เทรน เข้ากับคำบรรยายที่เราใส่”

ซึ่งถ้าผมใส่คำบรรยายไปแค่นี้ มันก็พยายามจะเชื่อมโยงพวกเสื้อสีม่วง สร้อยข้อมือ กางเกงยีนส์สีเทาดำเข้าไปกับคำบรรยายด้วย

ทีนี้เนื่องจากว่ามันน่าจะรู้จักคำบรรยายอื่นๆ หมดแล้ว เช่น man sitting on a bench next to a waterfall in a forest area with a wooden bench and a waterfall behind him

ดังนั้นพวกเสื้อสีม่วง สร้อยข้อมือ กางเกงยีนส์สีเทาดำ “ก็อาจจะถูกเชื่อมโยง” เข้ากับ Keyword ที่เราใส่ว่า SiraEkabut ไปด้วย (ซึ่งไม่ใช่สิ่งที่ผมต้องการ)

ยิ่งถ้าเรามีรูปใส่ชุดเดิมเยอะๆ มันจะยิ่งจำฝังใจเลย

  • ถ้าผมอยากให้ SiraEkabut หมายถึงหน้าตาและทรงผมของผมเท่านั้น ไม่ต้องรวมเครื่องแต่งกาย ผมก็ควรใส่คำบรรยายแบบนี้
    • SiraEkabut man wearing purple morhom shirt and dark grey jeans with black neck strap and red bracelet sitting on a bench next to a waterfall in a forest area with a wooden bench and a waterfall behind him
    • การใส่คำบรรยายชุดเข้าไป เรื่องชุดมันจะได้ผูกกับ description เกี่ยวกับชุด จะได้ไม่ผูกเข้ากับ SiraEkabut
  • แต่ถ้าอยากให้ SiraEkabut สามารถเปลี่ยนสีผมได้ ผมก็ต้องบรรยายเรื่องเกี่ยวกับสีผมเข้าไปด้วย (มันจะได้ไม่ผูกสีผมเข้ากับ SiraEkabut) ดังนี้
    • SiraEkabut man with black hair wearing purple morhom shirt and dark grey jeans with black neck strap and red bracelet sitting on a bench next to a waterfall in a forest area with a wooden bench and a waterfall behind him

ดังนั้นหลักการโดยสรุป คือ หลังจากใส่ Keyword พิเศษเข้าไปแล้ว ให้ใส่คำบรรยายทุกอย่างในรูปที่ไม่ต้องการผูกเข้ากับ Keyword เข้าไปให้หมด ยิ่งใส่ได้ละเอียดยิ่งดี

หมายเหตุ : ถ้าเราไม่มี text file ที่ใส่คำบรรยายรูป มันจะเอาชื่อ Folder มาใช้เป็น Description แทน (ถ้าใส่ text file คำบรรยายมันจะไม่สนใจชื่อ Folder)

จากนั้นให้แก้ไขคำบรรยายให้ครบทุกรูป ก็เป็นอันเสร็จ!

Step 4 : เริ่มการ Train LoRA

และแล้วก็มาถึง Step ที่เราจะเริ่มเทรน LoRA กันจริงๆ แล้วครับ ขั้นตอนคือให้เข้า Gui.bat ใน Kohya_ss เหมือนเดิม แล้วเข้าไป Tab Dreambooth LoRA

จากนั้นผมแนะนำให้เลือก Pretrained Model ที่จะใช้ Train LoRA ของเราอีกที

ซึ่งแนวทางคือ ยิ่งเราเลือก Model ที่เราตั้งใจจะใช้ LoRA นั้น จะยิ่งได้ผลลัพธ์ที่เหมือนเป๊ะกว่า แต่ความยืดหยุ่นในการใช้งาน ก็อาจจะน้อยกว่าการ Train บน Model ปกติอย่าง SD1.5 ที่อาจเอาไปใช้กับ Model ได้หลากหลายกว่า แต่ไม่ค่อยสวยซักอัน 555 (อันนี้ต้องเลือกเอาว่าจะเอาสวย หรือเอายืดหยุ่น)

เช่น ผมคิดว่าหลักๆ ผมจะใช้ ChillOutMix ในการ Gen ภาพ ดังนั้นผมก็จะ Train บน ChillOutMix ละครับ

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 15

จากนั้นไปที่ Folder แล้วเลือก 3 Folder ที่เราเตรียมไว้ คือ Image (ไม่ใช่ Folder ย่อย) , Model, Log ดังนี้

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 16

จากนั้นเราจะไปตั้งค่าใน Training Parameters กัน

ปรับค่าประมาณนี้

  • epoch คือ จำนวนรอบในการ Train ซึ่งในที่นี้ผมจะ Train 3 รอบ แต่ละรอบจะค่อยๆ เหมือนขึ้นเรื่อยๆ
    • แต่ในรอบหลังๆ LoRA จะเหมือนต้นฉบับเกินไปจนอาจไม่ยืดหยุ่น คือเปลี่ยนเสื้อผ้า ทรงผมอาจจะลำบาก
    • ดังนั้นเราจะให้มัน Save ไฟล์ LoRA ทุกๆ 1 Epoch แล้วค่อยมาเลือกเอาอีกทีว่าจะเอาระดับไหนดี
  • Caption Extension ให้ใส่ว่า .txt ตามคำบรรยายที่เราทำ
  • Seed ใส่เลขอะไรก็ได้ แต่ควรใส่ Fixed เลขไว้ซักค่านึง (เช่น 1234) เพื่อเราจะได้เปรียบเทียบการ Train ได้ว่า Setting แบบไหนดีกว่ากัน
  • LR Scheduler อันนี้ผมเลือกเป็น Constant
  • LR warmup ใส่ 0
  • พวก Learning Rate ยิ่งน้อยยิ่งแม่น แต่ต้องเทรน Step เยอะขึ้น (เช่นเพิ่ม Epoch เข้าไป) ผมแนะนำว่าไม่ต้องแก้ไขก็ดีอยู่แล้ว
  • Network Rank กับ Alpha ใส่ได้ตั้งแต่ 1, 8,16, 32, 64,128 ซึ่งเลขยิ่งเยอะไฟล์ LoRA จะยิ่งใหญ่ และมักจะใส่เป็นเลขเดียวกัน
    • โดยเลขเยอะ (เท่าที่ผมเข้าใจ) จะเหมาะกับการ Train ที่มีรายละเอียดเยอะ เช่น หน้าตาสมจริงมากขึ้น เลขน้อยๆ ค่อนข้างเหมาะกับ Train Style มากกว่า
    • ในที่นี้ผมเลยเลือก 128 ทั้งคู่
สอน Train Model ตัวเองใน Stable Diffusion [Part5] 17

จากนั้นใน Advanced Configuration จะมีอีกอันนึงที่น่าสนใจ คือ CLIP Skip ซึ่งเค้าจะใส่กันว่าจะเป็น 1 ไม่ก็ 2 (เท่าที่อ่านมา 1 จะเหมาะกับภาพสมจริง 2 จะเหมาะกับภาพการ์ตูนมากกว่า แต่เดี๋ยวผมลองให้ดูว่าผลออกมาเป็นไง) ในที่นี้ผมเลือก 1

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 18

ป.ล. พอตั้งค่าทุกอย่างหมดแล้ว จะ Save Config เอาไว้เพื่อใช้ Train อย่างอื่นภายหลังก็ได้

แล้วก็กด ปุ่มส้มๆ เพื่อเริ่ม Train Model ได้เลย

แล้วหน้าจอดำๆ ก็จะวิ่งไปเรื่อยๆ แต่อย่างน้อยมันต้องเจอรูปเรา แล้วบอกจำนวน Steps ทั้งหมด (ในที่นี้ของผมคือ 1750 steps x 3 epochs = รวม 5250 steps)

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 19
สอน Train Model ตัวเองใน Stable Diffusion [Part5] 20

แล้วเราก็รอมันไปจนกว่าจะ Train เสร็จ แล้วเราจะได้ LoRA ออกมา 3 ไฟล์ คือ

  • SiraEkabutV1.safetensors
  • SiraEkabutV1-000001.safetensors
  • SiraEkabutV1-000002.safetensors

ผมแนะนำให้เปลี่ยนชื่อไฟล์ SiraEkabutV1.safetensors เป็น SiraEkabutV1-000003.safetensors เพราะว่ามันคือการ Train รอบสุดท้ายนั่นเอง

ลองเอา LoRA ที่ได้มาทดสอบ Gen รูป

ให้ Copy ไฟล์ LoRA ที่เรา Train ได้ออกมาไว้ใน Folder stable-diffusion-webui\models\Lora ตามปกติ แล้วเราจะใช้ xyz plot ในการทดสอบดูว่า LoRA แต่ละตัวให้ผลเป็นยังไง แล้วน้ำหนัก LoRA ที่เปลี่ยนไปจะส่งผลขนาดไหน

ในที่นี้ผมได้มีการ Train LoRA มาหลายแบบ เพื่อเอามาลองทดสอบให้เพื่อนๆ ดู โดยใช้ x/y/z plot แบบ Prompt S/R มาช่วย

ใน Prompt ผมเขียนว่า

(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2),(portrait shot:1.3)(SiraEkabut Man:1.3), (wearing white shirt and jeans pants:1.1),(walking in the street), <lora:SiraEkabutV4-000001:0.61>

ผมอยากจะเปลี่ยน LoRA กับ Weight ไปเรื่อยๆ ผมเลยต้องใส่ใน x/y/z plot แบบนี้

Prompt S/R จะค้นหาคำแรกใน Prompt แล้วแทนด้วยคำต่อไปเรื่อยๆ จนครบ

ก็เลยต้องใส่ชื่อ LoRA ทุกอันแบบนี้ (โดยอันแรกคือ LoRA ใน Prompt)

SiraEkabutV4-000001,SiraEkabutV4-000002,SiraEkabutV4-000003,SiraEkabutV4-crop768-512-128-50-clip1-chillout-000001,SiraEkabutV4-crop768-512-128-50-clip1-chillout-000002,SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003,SiraEkabutV4-crop768-512-128-50-clip1-chillout-000004,…

ส่วนเรื่อง Weight ผมใส่แบบนี้ (โดยอันแรกคือ Weight ใน Prompt)

0.61,0.7,0.8,0.9,1.0

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 21

จากนั้นก็ทำการ Gen ภาพทดสอบดูว่า LoRA ตัวไหนน่าจะ Work ที่สุด (LoRA ที่ดี ภาพไม่ควรจะเน่า หรือติดสิ่งที่ไม่ต้องการเข้ามา เช่น ชุด จนเปลี่ยนชุดไม่ได้)

ผลการทดสอบ x/y/z plot

ผลที่ได้เป็นแบบนี้ ซึ่งผมสรุปได้ดังนี้

  • ตัวที่ Train จาก Model ตัวเดียวกับที่ใช้ Gen รูปจะให้ผลที่ดีกว่า เช่น
    • ถ้า Gen ภาพบน ChillOutMix ตัว LoRA ที่เทรนจาก pretrained ChillOutMix จะให้ผลที่ดีที่สุด
    • ถ้า Gen บน checkpoint model อื่น เช่น dalcefo_realistic_tally_v3 ตัว LoRA ที่เทรนจาก pretrained dalcefo_realistic_tally_v3 ก็จะให้ผลดีที่สุด (แต่ตัวที่เทรนจาก Chilloutmix ก็ออกมาไม่เลว)
    • ตัวที่เทรนจาก SD 1.5 ปกติ แม้แต่เอามา Gen บน SD1.5 เลย ก็สู้ตัวที่เทรนจาก Model สวยๆ ไม่ได้
  • Clip Skip 1 กับ Clip Skip 2 ในเคสนี้ให้ผลไม่ต่างกันเท่าไหร่
  • ตัวที่ Train Epoch แรกๆ จะไม่เหมือนเท่าไหร่ ส่วน Epoch หลังๆ ภาพที่ weight สูงๆ จะเน่าเกินไป ตัวที่ผมคิดว่าพอใช้ได้ในเคสของผมคือ Epoch ที่ 2-3 เช่น ที่ลงท้ายด้วย 000002, 000003 (ทั้งนี้เพราะผม repeats ที่ 50 ตรง folder ด้วย)

รูปนี้ Gen บน ChillOutMix ตัวที่เทรนจาก ChillOutMix จะสวยสุดอย่างชัดเจน

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 22

ลองทดสอบ Generate รูปให้หลากหลาย

พอเราได้ LoRA อันที่พอใจแล้ว ก็อาจเอามาลองทดสอบภาพอื่นๆ บ้าง เช่น เปลี่ยนสีชุด สีผม ลองยิ้มดู ว่ามัน work หรือไม่? เช่น ลองผมแปลกๆ ลองหันข้าง ลองใส่ชุดแปลกๆ (แบบที่เราไม่เคยเทรนมันเลย) เป็นต้น

ซึ่งผมได้รูปออกมาประมาณนี้ ซึ่งน่าพอใจทีเดียว มันก็สามารถ Gen เราทำผมแปลกๆ ทั้งผมทอง ชุดซามูไร หรือแม้แต่เสกให้ผมเป็นนักร้องผมทองบนเวทีได้ด้วย สนุกมากเลย 5555

ลองสังเกตดูสิ รูปพวกนี้ไม่มีในรูปที่ผมเอามาเทรนเลยแม้แต่น้อยนะ!! แต่มันก็สามารถเอาหน้าผมไปใส่ในรูปได้อย่างแนบเนียน มันเป็นอะไรที่สุดยอดมากเลย!!

ป.ล. หลายรูปที่ Gen ออกมาใช้ไม่ได้ก็มี อันนี้คือเลือกที่ ok มาให้ดู แต่ไม่ได้มี inpaint ทับเลยนะ gen สด ทุกรูปครับ

ตอนต่อไป

ในตอนต่อไป เราจะลองเอาตัวเราเอง ไปยืนคู่กับสาวๆ น่ารักๆ บ้างแล้วคล้ายๆ แบบนี้ (รูปนี้ไม่ใช่รูปจริงนะ อย่าไปฟ้องภรรยาผม 555)

ซึ่งมันต้องรู้เทคนิคบางอย่างจึงจะทำได้ ไม่งั้น LoRA ของตัวละครได้ตีกันมั่วเลย เพื่อนๆ ลองทำเล่นๆ ดูก่อนก็ได้ว่าออกมาเป็นไง 55

สอน Train Model ตัวเองใน Stable Diffusion [Part5] 32

ดังนั้น ใครอยากรู้วิธีทำให้มัน work ก็รอตอนต่อไปได้เลยครับ

สำหรับตอนนี้ ใคร Gen ภาพตัวเองออกมาแล้วได้ผลเป็นยังไง อย่าลืมบอกกันด้วยนะที่เพจ https://www.facebook.com/AiAngelGallery/ นะครับ


ใครสนใจอยากใช้ Excel ได้ดีขึ้น อัตโนมัติขึ้น แนะนำ ลองดู Workshop นี้ได้เลย ตอนนี้กำลังจะอบรมแล้ว

แนะนำ Power Query WORKSHOP 2025 🚀

โดย เทพเอ็กเซล พร้อมยกระดับทักษะการใช้ Excel ให้คุณทำงานได้เร็วและแม่นยำยิ่งขึ้น!

✅ รวบรวม+ดัดแปลง Data เพื่อเตรียมข้อมูลก่อน Pivot ให้พร้อมแบบอัตโนมัติ ด้วย Power Query
สอนตั้งแต่เบื้องต้น จนถึงแก้ไข M Code ด้วยตัวเองได้ 🔥

เลือกรูปแบบการเรียนที่สะดวกสำหรับคุณ:

1️⃣ ONSITE (2 วันเต็ม) – ได้เจอวิทยากรตัวจริง!

  • 📍 17-18 พ.ค. 68 | ⏰ 9:00 – 17:00 น. | 🏨 Sindhorn Midtown Hotel
  • 💰 ราคาพิเศษ 7,000 – 7,500 บาท/ท่าน (รวม VAT) (ปกติ 8,500 บาท)
  • ⭐ Early Bird ชำระก่อน 30 เม.ย. + ลูกค้าเก่า Workshop มีส่วนลดพิเศษ

2️⃣ LIVE ONLINE (6 วัน วันละ 2 ชม.) – เรียนจากที่ไหนก็ได้!

  • 📅 13-15 & 20-22 พ.ค. 68 | ⏰ 20:00 – 22:00 น. | 💻 ผ่าน Zoom
  • 💰 ราคาพิเศษ 4,000 – 4,500 บาท/ท่าน (รวม VAT) (ปกติ 5,500 บาท)
  • ⭐ Early Bird ชำระก่อน 30 เม.ย. + ลูกค้าเก่า Workshop มีส่วนลดพิเศษ

👉 สมัครเลย! ดูรายละเอียดเพิ่มเติมที่นี่ https://www.thepexcel.com/thepexcel-public-workshop-2025/

สอบถามเพิ่มเติม: LINE: @ThepExcelWorkshop ได้เลย


Leave a Reply

Your email address will not be published. Required fields are marked *

Public Training Workshop 2025
อบรม In-House Training

Feedback การใช้งาน AI Chatbot