วันนี้ผมจะมาแนะนำวิธีการเพิ่มรายละเอียดรูป โดยเฉพาะงานผิว ให้กับรูป AI ที่เจนด้วย Stable Diffusion (ในบทความนี้ใช้ Automatic1111) ซึ่งโดยปกติแล้วเทคนิคการขยายภาพของแต่ละคนจะแตกต่างกันไปตามความถนัด ไม่ว่าจะเป็น Hires. fix, img2img, extra tab และอื่นๆ เท่าที่ Stable diffusion จะมีให้
เลือกอ่านเทคนิค Hires. fix ตามขั้นตอนได้เลยครับ
ที่มาของการลองเทคนิคนี้
ต้องบอกก่อนว่า ปกติแล้วภาพของโมเดลฝั่งเอเชีย สำหรับผมเองรู้สึกว่างานหน้า งานแสง สวยงามมากแล้วนะครับ แต่เท่าที่สังเกต ผมคิดว่า Data set ที่นำมาเทรนรูปฝั่งเอเชีย อาจจะไม่เยอะ หรือความหลากหลายอาจไม่เท่าฝั่งยุโรป ดีเทลของงานผิวฝั่งยุโรปเลยมักจะดูเรียล รูขุมขนมาเต็ม ซึ่งมันทำให้ภาพดูเป็นภาพถ่ายจริงๆ มากขึ้น ไม่เหมือนใช้ฟิลเตอร์ให้หน้าเนียนครับ ยกตัวอย่างโมเดลฝั่งยุโรปเช่น EpicRealism, RealisticVision หรือ AbsoluteReality จะให้ดีเทลงานผิวที่สมจริง มากกกกกก แต่ปัญหาสำหรับผมคือหน้าของคนก็จะหลากหลายในโซนยุโรปมากกว่า พอเป็นเอเชียแล้ว จะไม่หลากหลาย และไม่ค่อยได้ลักษณะของคนตามที่ต้องการครับ
ตัดภาพไปอีกฝั่ง ยกตัวอย่างโมเดลฝั่งเอเชีย เช่น MajicmixRealistic, beautifulRealistic หรือ MagMix จากตัวอย่างนี้ขอแอบอวยว่า โมเดลของ MagMix นี่พื้นฐานภาพสวย แล้วความบิวตี้ของผิวไม่เว่อร์วังอลังการเหมือนสองตัวแรกนะครับ ถ้าอยากดูชุดตัวอย่างภาพเพิ่มเติม ผมเคยรีวิวโมเดล MagMix Teen ไว้ ลองไปอ่านได้ครับ
Hires. fix สามารถรวมข้อดี ของ 2 โมเดลไว้ด้วยกัน
ใช่ครับ พอผมเห็นจุดแข็งของแต่ละโมเดลแล้ว ก็เลยอยากผสมผลลัพธ์ออกมา ให้ได้ข้อดีของทั้งคู่ ซึ่งที่ผ่านมา ก็มีเทคนิค Merge Model อยู่ แต่ใช้เวลาค่อนข้างนาน ประกอบกับต้องเทสให้ได้ค่าที่ดีที่สุดด้วย ดังนั้น ผมจึงขี้เกียจ ! และคิดว่าน่าจะมีวิธีที่ยืดหยุ่นกว่านี้ สุดท้ายเลยไปเจอสิ่งที่เราใช้กันประจำ แต่ดันมองข้ามความดีงามบางอย่างของมันไป นั่นก็คือออ Hires checkpoint ครับ
Hires. checkpoint คืออะไร
ผมขออธิบายแบบบ้านๆ ว่า Hires checkpoint คือการสั่ง Stable Diffusion ว่า
“เอารูปไปขยายให้หน่อย แต่ใช้โมเดล XXX ในการขยายเลยนะ”
ปกติเวลาเราเจนรูปออกมาเนี่ย เราจะต้องเลือก Checkpoint หรือเรียกง่ายๆ ว่าโมเดลใช่มั้ยล่ะครับ เมื่อเราเลือกโมเดลแล้ว รูปที่ได้มาก็จะมาจาก Data set ทั้งหมดของโมเดลนั้นเลย และเมื่อเราเรียกใช้ฟังก์ชั่น Hires. fix ถ้าดูการตั้งค่าแล้ว จะพบว่ามีตัวเลือกประมาณนี้ครับ
แต่โดยส่วนใหญ่แล้ว เราก็จะเลือกปรับแค่ Upscaler, Hires Steps, Denoising strength และ Upscale by ส่วนค่าที่เหลือก็จะปล่อยไปตาม Default (แต่ถ้าใครปรับทุกค่า ก็ยินดีด้วยครับ คุณทำได้อยู่แล้ว555) แต่ถ้าใครสนใจจะลองเทคนิคนี้ผมจะเล่าต่อให้นะครับ
อธิบายออกมาเป็นลำดับได้ประมาณนี้ครับ
- รูปที่ได้ก่อน Hires fix = 100%
- รูปที่ได้หลัก Hires fix สมมติว่า Upscale by 2 = 200%
- Hires checkpoint = ตั้งแต่ 101-200 จะใช้ข้อมูลจากโมเดลอะไร
- Sampling method = จะใช้ Sampling ตัวไหน (สำหรับผมค่านี้เอาไว้เหมือนเดิมก็ได้ครับ)
และในตัวอย่างนี้ ผมจะลองใช้ Model ของ MagMix ที่มีชื่อว่า MJ Final ในการสร้างรูปต้นฉบับนะครับ
รายละเอียดของรูปนี้:
Portrait shot of very very cute Thai girl laying on the sofa, white background, clean composition
Negative prompt: ng_deepnegative_v1_75t easynegative bad_prompt_version2-neg badhandv4
Steps: 25, Sampler: DPM++ 2M Karras, CFG scale: 6, Seed: 1557715207, Size: 522x768, Model hash: 98318512b7, Model: MJ Final.fp16, Token merging ratio: 0.4, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, Version: v1.7.0
จะเห็นได้ว่ารูปนี้จะได้ฟีลคนไทยมากๆ ถูกจริตคนดูมากกว่าการพยามใช้โมเดลยุโรปมาเจนครับ แต่เราอยากยืมความละเอียดผิวของโมเดลยุโรปมา ก็ต้องไปต่อกันที่ Hires. fix เลย
ตั้งค่า Hires. fix เรียกใช้โมเดลอื่นในการ Upscale
ผมจะทำการตั้งค่า Hires. fix ตามรูปเลยนะครับ แต่ละค่าเพื่อนๆ สามารถลองปรับแต่งได้ตามถนัดเลย
แปลความจากการตั้งค่าด้านบนนี้ได้ว่า
“ขอเพิ่มรายละเอียดภาพนี้ เป็น 2 เท่า ด้วยการใช้ Upscaler ของ 4xUltrasharp ทำไปซัก 15 สเต็ป แทนที่ภาพเดิมด้วยความเข้มข้น 36 เปอร์เซ็นต์ โดยใช้ข้อมูลภาพจากโมเดล Epicrealism นะ”
และเมื่อตั้งค่าเสร็จแล้ว อย่าลืมกดปุ่ม ♻️ เพื่อใช้ seed เดิม จะได้เป็นการ Hires. fix ภาพล่าสุดนะครับ เมื่อกดแล้ว ก็เริ่มเจนกันได้เลย ผลลัพธ์จะออกมาประมาณนี้ครับ คลิกเพื่อดูรายละเอียดใกล้ๆได้นะครับ
ถ้าจ้องรูปตอนเจนออกมาก่อนจะ Hires. fix แล้วมาดูรูปนี้ อาจจะตกใจ ว่าทำไมหน้าดรอปไป นั่นแหละครับ คือสาเหตุที่ผมไม่ใช้โมเดลฝั่งยุโรปเจนรูปแต่แรก คือพื้นฐานรูปที่เจนออกมาหน้าจะสดมากกก แต่รายละเอียดผิวจะมาเยอะขึ้นนะครับ ซึ่งเรื่องความหน้าสดเกินไป มันก็เป็นความนิยมที่ต่างกันไปแหละครับ ผมเลยขอ 100% แรกมาจากโมเดลเอเชียดีกว่า แล้ว 100% หลังจากโมเดลยุโรปให้มีผลแค่ 36% (มาจาก Denoising Strength 0.36) ตรงนี้ใครอยากให้มีผลน้อยลง เพื่อลดความ ‘สด’ เกินไป ก็ลองปรับดูได้ครับ เดี๋ยวผมเทียบให้ดูว่าแต่ละระดับ จะมีความสดต่างกันขนาดไหน
สำหรับการเพิ่มรายละเอียดภาพโดยเฉพาะงานผิวด้วยการใช้ Hires checkpoint ใน Hires. fix ก็มีประมาณนี้ครับ รอบหน้าถ้ามีเทคนิคอะไรมาแบ่งปันอีก จะแวะมาอัพเดตอีกครั้งนะครับ