สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 1

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น

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

ในบทความนี้เราจะมาดูหลากหลายวิธีที่จะ Upscale ใน ComfyUI กันครับ

ทำไมต้อง Upscale?

ปัญหาเวลา Generate ภาพขนาดเล็กประมาณ 512×768 คือรายละเอียดในภาพอาจไม่ค่อยชัด โดยเฉพาะในส่วนใบหน้ากรณีที่เป็นภาพระยะไหล (เรียกว่าหน้าเละ หน้าพัง 55) เนื่องจากพื้นที่ Pixel น้อยเกินไป (แต่ถ้าเป็นภาพ Portrait ปกติ Gen แค่ 512 ก็หน้าสวยได้แล้ว)

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 2

ถ้าเราอยากจะทำให้ภาพมันสวยขึ้น หน้าดีขึ้น เราจะต้อง Gen ให้ใหญ่กว่านี้ เช่น 1024 ขึ้นไป ถึงจะเห็นหน้าชัดได้

ปัญหาของการ Gen ภาพใหญ่แต่แรก

แต่กับ Model SD1.5 ทั่วไป จะไป Gen ที่ 1024 x 1536 เลย มันก็จะไปไม่รอด คือ ภาพจะมีโอกาสเพี้ยนสูง เช่น รูปแขนอาจผิดรูปผิดร่างไปมันจะมั่วไปหมด (แต่ก็แปลกดี) บางทีก็แขนขางอก 555

เพราะ Model SD1.5 ไม่ได้ถูก Train มาให้ Gen ภาพขนาดใหญ่ (มันเทรนแค่ 512×512 หรือ 768×768 เอง)

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 3

Gen ภาพใหญ่แต่แรก ด้วย SDXL

ทางแก้อย่างหนึ่งคือใช้โมเดล SDXL ที่ถูกพัฒนามาให้รองรับการ Generate ภาพขนาดใหญ่ได้ดีขึ้น เช่น ถ้าผมใช้ Realistic Vision แบบ SDXL โดยใช้งานแทนโมเดล Stable Diffusion 1.5 ปกติ ในส่วนของการ Load Checkpoint ถาพที่ได้จะไม่พัง แม้จะ Gen ที่ขนาด ที่ 1024 x 1536 ก็ตาม (จริงๆ มันชอบขนาดประมาณ 1024)

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 4

กลับมาที่ SD1.5

ในบทความนี้เราจะมาพูดถึงการ Upscale ซึ่งสามารถเอาไปใช้ Up จากรูปเดิมที่มีขนาดเล็กได้ โดยไม่ต้อง Gen จาก SDXL เสมอไป แล้วเราจะพิสูจน์ว่าภาพของ SD1.5 ที่หน้าพังก็เอาไป Upscale แก้ได้

Upscale แบบทื่อๆ จะไม่ Work

การ Upscale ภาพเล็กๆ เฉยๆ ด้วยโหนด Upscale Latent หรือ Upscale Image จะได้ภาพใหญ่ที่เบลอแตกไม่สวยงาม คล้ายกับการ Resize ภาพปกติ ซึ่งไม่ Work เช่น

ถ้าเรา Upscale Latent แล้วค่อย Decode ออกมาเป็นภาพปกติ ภาพที่ได้จะเน่ามากๆ คือถ้าทำแบบนี้จริงๆ ต้องเอาไปเข้า KSampler ต่อเพื่อ Denoise อีก แต่ภาพจะเพี้ยนนะ

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 5

ถ้าใช้ Upscale Image By เฉยๆ จะเหมือนการปรับ Image Size ใน Photoshop เป็น 2 เท่า ภาพก็จะแตกๆ นิดหน่อยอยู่ดี

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 6

ทีนี้ต้องทำไงถึงจะ Upscale แล้วไม่เน่า? มาดูกันครับ

วิธีที่ 1 : ใช้ NN Latent Upscale

เป็นการใช้ Custom Node ชื่อ ComfyUI Neural Network Latent Upscale ที่ถูกพัฒนาขึ้นเพื่อ Upscale Latent ให้ภาพใหญ่ขึ้นได้ชัดขึ้น แต่ผลลัพธ์ยังไม่ค่อยดีนัก ควรนำภาพไป Denoise ต่อด้วย KSampler จะช่วยให้ภาพสวยคมขึ้นได้

วิธีนี้ต้องไปโหลด Custom Node อันนี้เพิ่ม ComfyUI Neural Network Latent Upscale (https://github.com/Ttl/ComfyUi_NNLatentUpscale) ซึ่งจะมีความสามารถในการ Upscale Latent ได้แบบไม่เน่า เช่น

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 7

อย่างไรก็ตาม ถ้าจะใช้อันนี้ตอนแรกภาพก็จะดีขึ้น แต่ยังไม่ค่อย ok

ผมแนะนำว่าก็ควรเอาเข้า KSampler ไป Denoise อีกรอบ ก็จะดีขึ้น เช่น

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 8

ผลที่ได้ก็จะสวยงามขึ้นเยอะ และความหมายไม่เพี้ยนด้วย แต่วิธีนี้อาจจะเปลืองพลังการ์ดจอหน่อย เพราะว่ามันคือ Gen ใหม่ทั้งรูปที่ใหญ่ขึ้น (แต่ Denoise ไม่เยอะ จะไม่เปลืองพลังมาก)

รูปนี้ denoise 0.5 จะดีกว่า

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 9

วิธีที่ 2 : ใช้ Upscale Image using Model

วิธีนี้เราจะใช้ Node Upscale Image using Model นะครับ

ซึ่งวิธีนี้เราจะต้องไปโหลด Upscale Model เพิ่มเติม อาจเอาจาก

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 10

โดยที่ผมแนะนำ Model เหล่านี้ (ในบทความนี้ผมใช้แค่ 4x-Ultrasharp)

จากนั้นเราเรียกใช้ Node Upscale Image using Model มาใช้คู่กับ Node Load Upscale Model

ถ้าผมใช้ 4x_NMKD-Siax_200k (เป็น Model 4 เท่า) แล้วอยากจะ Upscale แค่ 2 เท่า ผมต้องสั่งให้มัน Resize ให้เล็กลง 50% ด้วย ไม่งั้นมันจะกลายเป็นใหญ่ 4 เท่าไปเลย

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 11

อันนี้ใช้ 4X-Ultrasharp

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 12

ถ้าคุณไปลองเปลี่ยน Model ดู จะพบว่าไม่ว่าจะ Upscale ด้วย Model แบบไหน ก็ไม่ช่วยให้หน้าเละให้กลับมาปกติได้ เราจะต้องใช้วิธีอื่น

ผมแนะนำว่า ถ้าภาพต้นฉบับเละ ก็ควรเอาเข้า KSampler ไป Denoise อีกรอบ ก็จะดีขึ้น คล้ายๆ กับวิธีก่อนหน้า แต่จะยุ่งกว่าเพราะต้อง VAE Encode อีกรอบก่อน ดังนั้นผมว่าไม่เหมาะแล้ว

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

วิธีที่ 3 : ใช้ Ultimate SD Upscale

วิธีถัดไป คือ วิธีที่น่าจะเป็นที่นิยมมากที่สุดเลย นั่นคือการใช้ Ultimate SD Upscale ซึ่งมีวิธีต่อ Node ประมาณนี้ ซึ่งผมก็ยังใช้ 4x Ultrasharp เป็น Upscale Model นะ

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 13

AI มันจะทำการ Generate ภาพใหม่เป็นกล่องๆ (Tile) ขนาดเท่ากับ tile width, height ที่เรากำหนด แล้วมีการ Denoise ด้วย มันเลยสามารถแก้รูปที่หน้าพังแล้วให้กลับมาเป็นปกติได้

โดยที่ส่วน Positive, Negative Condition เราก็มักจะเอามาจาก Prompt เดิมนั่นแหละ ง่ายดี (แต่ใครอยากจะทำ Prompt ใหม่แยกกันก็ได้)

ผลลัพธ์ที่ได้ หน้าจะไม่เละแล้ว ^^ (ผมลอง denoise 0.3-0.4)

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 14

วิธีที่ 4 : ใช้ Iterative Upscale

วิธีนี้เป็นการ Upscale ทีละนิดๆ หลายๆ รอบ ซึ่งเราจะต่อ Node แบบนี้

ตรง Iterative Upscale จะมีให้เลือก 2 ตัวคือ Image กับ Latent ซึ่งเท่าที่ทดลองมา แบบ Image

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 15

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

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 16

ตัวเปรียบเทียบภาพ

หากต้องการเปรียบเทียบภาพ 2 ภาพเราสามารถใช้ rgthree’s ComfyUI Nodes (https://github.com/rgthree/rgthree-comfy) เพื่อใช้ Node ตัวเปรียบเทียบภาพแต่ละแบบได้ชัดๆ

โดยที่รูป a จะอยู่ฝั่งขวาของ Slider, รูป b จะอยู่ฝั่งซ้าย

ในที่นี้ A คือ Ultimate SD Upscale, B คือ Iterative Upscale

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 17

เราอาจใช้เทียบ Before, After ก็ได้

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 18

หรือจะเทียบระหว่างวิธีแต่ละแบบก็ได้

สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น 19

ส่วนตัวผมว่า NN Latent กับ Iterative Upscale ให้ผลที่ดูดีกว่า Ultimate SD Upscale นะครับ ซึ่งจริงๆ Upscale แต่ละแบบสามารถทำได้ดีกว่านี้ถ้ามี ControlNet มาช่วยควบคุมภาพด้วย ซึ่งจะทำให้โอกาสภาพเพี้ยนน้อยลง ซึ่งเราจะเรียนในตอนถัดไป

เลือกใช้แต่ละเทคนิคให้เหมาะกับเป้าหมายและทรัพยากรที่มี ลองฝึกทำบ่อยๆ จะช่วยให้ปรับแต่งภาพให้สวยงามได้ตามที่ใจต้องการครับ

คลิปสอน

ตอนต่อไป

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