สวัสดีครับ สำหรับผู้ที่ติดตามซีรีส์ ComfyUI มาตั้งแต่ต้น คงคุ้นเคยกับการใช้งานโมเดล Stable Diffusion 1.5 ที่สามารถสร้างภาพได้อย่างรวดเร็ว แต่มีข้อจำกัดที่ขนาดภาพเล็ก และรายละเอียดยังไม่สมจริงมากนัก
วันนี้เราจะพาทุกท่านก้าวสู่โลกใหม่ของการสร้างภาพด้วย Stable Diffusion โดยมุ่งเน้นไปที่โมเดล SDXL (Stable Diffusion Extra Large) ที่ถือเป็นการยกระดับขีดความสามารถในการสร้างภาพขนาดใหญ่และคุณภาพสูงอย่างก้าวกระโดด
ตลอดทั้งบทความนี้ เราจะพาไปสำรวจวิธีการใช้ SDXL โดยใช้เทคนิคในการเร่งความเร็วการสร้างภาพแบบสายฟ้าแลบ การแก้ปัญหาที่อาจเจอ ตลอดจนการต่อยอดไปสู่การใช้ LoRA และ ControlNet ให้เข้ากับ SDXL อย่างลงตัว
เชิญร่วมเดินทางไปกับเราเพื่อเปิดประตูสู่โลกแห่งการสร้างภาพคุณภาพสูงขนาดใหญ่ได้อย่างรวดเร็วและมีประสิทธิภาพด้วย SDXL กันได้เลยครับ
สารบัญ
ถึงเวลาต้องเปลี่ยนเป็น SDXL
ก่อนหน้านี้เราใช้โมเดลแบบ SD1.5 มาโดยตลอด ซึ่งจะ Gen รูปที่ขนาดเล็ก แล้วให้รายละเอียดได้ไม่ดีมากนัก ต่อจากนี้เป็นต้นไปเราจะหันมาใช้ Model SDXL ซึ่งถือเป็นการยกระดับครั้งสำคัญ
เพราะไม่เพียงสร้างภาพที่มีขนาดใหญ่กว่า แต่ยังเปิดโอกาสให้ทำสิ่งต่างๆ ได้มากขึ้น อาทิ การทำ Style Transfer ผ่าน IP Adapter อย่างมีประสิทธิภาพ โดยขนาดภาพของ SDXL ที่นิยมใช้กันมีดังนี้
- 1024 x 1024
- 768 x 1152
- 864 x 1152
- 768 x 1360
ในช่วงแรกของบทความนี้ เราจะใช้โมเดล CyberRealistic XL (https://civitai.com/models/312530/cyberrealistic-xl) เป็นตัวอย่าง ซึ่งมีขนาดใหญ่ถึง 6GB จึงอาจใช้เวลาในการดาวน์โหลดนานหน่อย ข้อแนะนำการตั้งค่าจากเจ้าของโมเดลมีดังนี้
- Steps: > 25
- CFG: 7 หรือ 12+
- Sampler: DPM++ 2M Karras / Euler A
- VAE: มีในตัวแล้ว
- Upscaler: 4x_NickelbackFS_72000_G/4xNMKD-Siax_200k
- Negative propmt: ไม่ต้องใส่ก็ได้ หรือถ้าจะใส่ก็แบบนี้
worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed
ทดสอบการ Gen ภาพ SDXL
ลองต่อ Node ตามปกติ ผมใช้ Prompt แบบนี้
beautiful young asian half thai korean idol woman, 20 yrs old, modern face, loose tank top, in coffee shop
เราจะได้ภาพละเอียดออกมาเลย แบบไม่ต้อง Upscale ด้วยซ้ำ
เมื่อลองสร้างภาพด้วย SDXL จะเห็นได้ว่าได้ภาพที่มีรายละเอียดสูงโดยไม่ต้อง upscale เพิ่มเติม แต่ใช้เวลานานกว่าปกติเนื่องจากขนาดใหญ่และจำนวน step ที่มากขึ้น
ทำให้ Gen เร็วขึ้นด้วย SDXL Lightning LoRA
เพื่อเร่งความเร็ว เราสามารถใช้ LoRA พิเศษที่เรียกว่า SDXL Lightning ซึ่งมีตัวเลือกหลายระดับ เช่น 1,2,4,8 Steps ซึ่งผมว่า 4 กับ 8 Steps ดูเป็น Choice ที่ดี
เราสามารถไปโหลด LoRA พิเศษที่ช่วยเร่งความเร็วได้ที่ https://huggingface.co/ByteDance/SDXL-Lightning
- LoRA แบบ 4 Steps : https://huggingface.co/ByteDance/SDXL-Lightning/blob/main/sdxl_lightning_4step_lora.safetensors
- LoRA แบบ 8 Steps : https://huggingface.co/ByteDance/SDXL-Lightning/blob/main/sdxl_lightning_8step_lora.safetensors
เมื่อใช้ LoRA นี้ เราจะต้องลดจำนวน step ลงให้เหลือเพียง 4 หรือ 8 และลด CFG ลงต่ำๆ เช่นเหลือ 1 จากนั้นจะเห็นได้ว่าสร้างภาพได้เร็วขึ้นมาก แต่ภาพที่ได้เบื้องต้นอาจดูแปลกๆ เหมือนภาพมันพัง
เราลอง LoRA แบบ 8 Steps ดูว่าต่างกันไหม ผลที่ได้ภาพกลับออกมาเละกว่าเดิมอีก
วิธีแก้ปัญหา
อาการแบบนี้เกิดจากพวก Noise Schedule ไม่สัมพันธ์กับ Steps ของการ Gen รูป ดังนั้นให้ลองปรับ Scheduler ดูเป็น SGM Uniform และจะพบว่าภาพที่ได้ออกมาดูดีขึ้นมาก
ลองกลับมาใช้แบบ 4 Steps แล้วใช้ SGM Uniform ดูบ้าง ก็จะพบว่าตัว 4 Steps ก็ดูดีขึ้นแล้วเช่นกัน (แต่ผมว่า 8 Steps จะสวยกว่านิดหน่อย)
เมื่อเทียบกับความเร็วแล้ว Lightning ทำได้เร็วกว่าการใช้ SD1.5 แบบปกติเสียอีก สะดวกในการลองผิดลองถูกได้รวดเร็ว คือ มันเร็วมากๆ จริงๆ เนี่ย Gen เล่นๆ ได้สบายๆ
Model บางตัวมี Lightning แฝงในตัวแล้ว
นอกจากใช้ LoRA แบบ Lightning แล้ว ยังมีโมเดล Checkpoint ที่มีการฝัง Lightning เข้าไปในตัวเรียบร้อยแล้ว
หากคุณเข้าไปใน Civitai จะพบว่ามันมี Model หลายๆ ตัวที่ฝัง Lightning LoRA เข้าไปในตัวแล้ว เช่นหากไป Filter หาแบบนี้
จะเจอ Model เจ๋งๆ มากมาย เช่น
- Juggernaut XL : https://civitai.com/models/133005/juggernaut-xl
- LEOSAM’s HelloWorld XL : https://civitai.com/models/43977/leosams-helloworld-xl
- epiCRealismXL-Lightning : https://civitai.com/models/354130/epicrealismxl-lightning
- RealVisXL V4.0 : https://civitai.com/models/139562
- Copax TimeLessXL – SDXL1.0 : https://civitai.com/models/118111/copax-timelessxl-sdxl10
เดี๋ยวจะลองใช้ LEOSAM’s HelloWorld XL ดูว่าเป็นยังไง? ซึ่งในเว็บเค้าแนะนำไว้แบบนี้
Introducing “HW5.0_Euler_a_Lightning”
- Sampler: Eular a เท่านั้น
- CFG scale: 1
- Sampling steps: 8 steps (6~8 steps )
- Hires algorithm: ESRGAN 4x / 8x_NMKD-Faces_160000_G
- Hires Upscale factor: 1.5x
- Hires steps: 8 steps
- Hires Denoising strength: 0.3
เอาล่ะ มาลองกัน โดยไม่ต้องใช้ LoRA แล้วนะ
ผลก็ออกมาใช้ได้เลย
ถ้าเราปรับ Prompt ให้เหมาะกับ Model มากขึ้น เช่น ใส่พวก Film Grain เข้าไป
beautiful young asian half thai korean idol woman, 20 yrs old, modern face, loose tank top, in coffee shop, (film grain texture:1.2),(analog photography aesthetic:1.15),visual storytelling,dynamic composition
ผลที่ได้ก็จะสวยและเหมาะกับ Model นี้มากขึ้น
ยิ่งถ้าเอาไป Upscale ต่อแบบง่ายๆ ได้ เลย เช่น ผมใช้ตัว 4xNMKD-Siax_200k มันจะออกมี Grain เยอะนิดๆ เหมาะกับภาพที่ดูเป็นสไตล์ฟิล์มแบบนี้อยู่แล้ว (ถ้า 4X ใหญ่ไป ก็อย่าลืม Upscale ด้วย Factor 0.5 อีกทีนะ)
นอกจาก Lightning แล้ว ก็มี LCM กับ Turbo ด้วย
จริงๆ แล้วก่อนจะมี Model Lightning ออกมานั้น มันมี Concept ที่ทำให้ Gen ภาพเร็วขึ้นที่เรียกว่า LCM กับ Turbo ด้วยนะ แต่ว่า Lightning ออกมาหลังสุด เลยเจ๋งที่สุด ดังนั้นผมก็แนะนำให้ใช้แบบ Lightning นี่แหละ
การใช้ LoRA กับ SDXL
เวลาเราจะใช้ LoRA (ที่ไม่ใช่การเพิ่มความเร็ว) กับโมเดล SDXL เราก็ต้องใช้ LoRA ที่ออกแบบมาใช้งานกับ SDXL เท่านั้นด้วยนะ เช่นเวลาไป Search หาก็ต้องเลือกด้วย
ผลลัพธ์ก็จะขึ้น icon LoRA และ XL ด้วย คู่กันเลย
เช่นถ้าผมลองใช้ LoRA [XL] Sailor Venus นี้ https://civitai.com/models/362345/xl-sailor-venus-sailor-moon
แม้จะเป็น LoRA Anime แต่ก็เอามาใช้กับ Realistic ได้ในระดับนึงล่ะ และยังใช้กับ Model Lightning ได้ตามปกติเลย
แต่แน่นอนว่า ถ้าใช้กับ Model SDXL ที่เป็น Anime ก็จะดีกว่า เช่น Animagine XL https://civitai.com/models/260267/animagine-xl-v31
ยังไงไปลองเล่นเองนะ (ต่อ Lightning LoRA คู่กับ LoRA ตัวละครได้เลย)
การใช้ ControlNet กับ SDXL
เวลาเราจะใช้ ControlNet กับ SDXL เราก็ต้องเลือก ControlNet Model ที่ออกแบบมาสำหรับ SDXL โดยเฉพาะด้วยครับ ลองไปหาได้จากที่นี่ https://huggingface.co/lllyasviel/sd_control_collection/tree/main
เช่น
ถ้าลอง Openpose ด้วยอันนี้ thibaud_xl_openpose_256lora.safetensors https://huggingface.co/lllyasviel/sd_control_collection/blob/main/thibaud_xl_openpose_256lora.safetensors
เราก็จะใช้มันควบคุมท่าทางได้เช่นกัน และยังใช้กับ Model Lightning ได้ตามปกติเลย
ถ้าผมลองใช้ sai_xl_depth_256lora.safetensors https://huggingface.co/lllyasviel/sd_control_collection/blob/main/sai_xl_depth_256lora.safetensors
เพื่อมากำหนด Depth ให้ภาพ มันก็ค่อนข้าง ok เลยนะ (เราใช้ Depth กำหนดโครงร่างของคนก็ได้)
สรุป + ตอนต่อไป
หลังจากนี้ บทความต่อไปผมจะพาไปสำรวจเรื่องการใช้ IP Adapter ซึ่งบอกเลยว่าคือเรื่องที่ทรงพลังมากที่สุดในการทำ Stable Diffusion ยุคใหม่ในระดับเดียวกับ ControlNet เลยล่ะ อย่าลืมติดตามตอนต่อไปนะครับ