สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 1

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer

คุณเคยรู้สึกผิดหวังกับภาพ AI ที่ Gen ออกมาแล้วบางส่วนดูไม่สมจริงหรือไม่? หรือเคยพยายามแก้ไขเฉพาะบางส่วนของภาพแต่กลับทำให้ทั้งภาพเสียหายหรือไม่? ถ้าคุณกำลังเจอปัญหาเหล่านี้ คุณไม่ได้อยู่คนเดียว!

การ Gen รูป AI นั้นเป็นศิลปะที่ต้องอาศัยทั้งความคิดสร้างสรรค์และเทคนิค แม้ว่า ComfyUI จะเป็นเครื่องมือที่ทรงพลัง แต่ก็มีข้อจำกัดที่ทำให้หลายคนต้องพบกับความท้าทาย:

  1. ภาพที่ได้มักมีรายละเอียดไม่สมบูรณ์ในบางส่วน เช่น ใบหน้าที่ดูแปลก หรือมือที่ผิดสัดส่วน
  2. การ Upscale ทั้งภาพอาจทำให้เสียเวลาและทรัพยากรโดยไม่จำเป็น
  3. การ Inpaint ใน ComfyUI มีข้อจำกัดเรื่องความละเอียด ต่างจาก A1111 ที่หลายคนคุ้นเคย (Node ปกติมันดันไม่สามารถ Inpaint Resolution สูงกว่า Pixel จริงได้เหมือนกับของ A1111)
  4. การสร้าง Mask ด้วยมือนั้นใช้เวลามากและอาจไม่แม่นยำ

แล้วจะทำอย่างไรให้ภาพ AI ของคุณสมบูรณ์แบบในทุกรายละเอียด? จะมีวิธีไหนที่ช่วยประหยัดเวลาและให้ผลลัพธ์ที่ดีกว่าเดิม?

บทความนี้จะเปิดเผยเทคนิคลับที่จะช่วยยกระดับการ Gen รูป AI ของคุณไปอีกขั้น ด้วยการใช้ Detailers ใน ComfyUI คุณจะได้เรียนรู้:

  • วิธีเพิ่มรายละเอียดเฉพาะจุดโดยไม่กระทบส่วนอื่นของภาพ
  • เทคนิคการสร้าง Mask อัตโนมัติที่แม่นยำด้วย AI
  • การผสมผสาน ControlNet และ IP Adapter เพื่อควบคุมผลลัพธ์ได้อย่างเหนือชั้น

ไม่ว่าคุณจะเป็นมือใหม่หรือผู้ใช้ ComfyUI ที่มีประสบการณ์ บทความนี้มีอะไรใหม่ๆ ให้คุณได้เรียนรู้แน่นอน พร้อมแล้วหรือยังที่จะปลดล็อกศักยภาพในการสร้างภาพ AI ของคุณ? มาเริ่มกันเลย!

เครื่องมือหลักที่ใช้

  1. ComfyUI Impact Pack (ใช้ทำ Detailer)
  2. ComfyUI Inspire Pack (ใช้เสริมกับ Impact Pack)
  3. ComfyUI-Florence2 (ใช้ Detect วัตถุในภาพ ได้ฉลาดมากๆ)
  4. ComfyUI-segment-anything-2 (ใช้ทำ Segmentation Mask ได้ฉลาดมาก)

Tutorial ที่สอนเรื่องพวกนี้จริงๆ ใน net ก็หายากพอสมควร ดังนั้นผมเลยตั้งใจทำบทความนี้ออกมา โดยเอาสิ่งที่ผมเรียนรู้มา (อย่างยากลำบาก 55) มาแนะนำเพื่อนๆ ต่อ เผื่อจะได้เอาไปต่อยอดงานของตัวเองได้ครับ 🙂

เรื่อง Install Custom Node ไปจัดการกันเองนะ ไม่มีอะไรซับซ้อน เรามาดูการใช้งานเลยดีกว่า

เรียนรู้คำศัพท์ที่สำคัญ

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

  • bbox = Bounding Box พื้นที่กรอบสี่เหลี่ยมหลังจาก Detect ที่ประกอบด้วยพิกัดซ้าย, บน, ขวา และล่าง
  • masks = แสดงรูปโครงร่างของวัตถุภายในกรอบ bbox เป็นมาสก์ สามารถบอกขอบเขตของพื้นที่วัตถุที่แม่นยำมากขึ้น ในกรณีเลือกตัวตรวจจับเป็น BBOX พื้นที่มาสก์ครอบคลุมทั้งบริเวณ bbox นั่นเอง

อย่างไรก็ตาม มีหลายวิธีที่จะสามารถสร้าง SEGS ได้ โดยไม่จำเป็นต้องใช้เครื่องมือพวก Detector หรือ Model ตรวจจับวัตถุ เช่น การระบาย Maskไปเลย แล้วค่อยแปลงเป็น SEGS ก็ได้

ซึ่งเบื้องต้นผมจะสอนการระบาย Mask แบบ Manual เพื่อใช้ SEGS Detailer ลงรายละเอียดภาพให้ครับ

การใช้ Detailer (SEGS)

สมมติว่าผมมีภาพต้นฉบับอันนี้ ซึ่งสมมติว่าขนาดภาพใหญ่ ok แล้ว แต่บางส่วนของภาพยังไม่ได้ละเอียดมากนัก เช่น ใบหน้า

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 2

ใน Impact Pack เรามีทางเลือกหลายทางว่าจะเพิ่มรายละเอียดใบหน้าด้วยวิธีไหนดี

เช่น ถ้าเอาแบบอัตโนมัติสุดๆ ก็คือใช้ Node ที่ชื่อ Face Detailer (ของ Impact Pack) ไปเลย แต่ข้อเสียคือมันแก้ได้แค่หน้าจริงๆ ไม่สามารถแก้ส่วนอื่นได้

ดังนั้นในบทความนี้ผมอยากจะนำเสนอวิธีที่ยืดหยุ่นกว่า คือ ใช้ Detailer (SEGS) มาช่วย เพราะมันสามารถเก็บรายละเอียดส่วนไหนก็ได้นั่นเอง

Workflow การสั่ง Detailers

คร่าวๆ คือส่ง Segs พื้นที่ที่ต้องการ Inpaint ใหม่เข้าไป แล้วกำหนดจนาดในการ Gen เช่น 1024

ดังนั้นผมจะลองทำการ Mask ที่หน้าใน Load Image แล้วส่งเข้า MASK to SEGS เพื่อแปลง Mask ให้เป็น SEGS แล้วส่งพื้นที่นั้นเข้า SEGS Detailers เพื่อลงรายละเอียดนะครับ

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 3

การตั้งค่าที่ควรรู้

สำหรับ Mask to SEGS มีรายละเอียดที่ควรรู้ดังนี้

จะมีตัวสำคัญคือ Crop Factor ที่จะเป็นตัวที่ทำให้ขนาดของ SEGS ที่ออกไปใหญ่ขึ้นกว่า Mask แค่ไหน ผมแนะนำปรับแค่ 1.2 ก็พอ (ค่า Default 3 ผมว่าใหญ่ไป )

สำหรับ Node Detailers (SEGS) มีรายละเอียดที่ควรรู้ดังนี้

  • guide_size: เป็นขนาดอ้างอิงสำหรับ Detailer
    • ภาพใน SEGS ที่เล็กกว่า guide_size จะถูกขยายให้เท่ากับ guide_size
    • ภาพที่ใหญ่กว่า guide_size อยู่แล้วจะถูกข้ามไป
    • ขยายด้านที่สั้นกว่าของภาพเป้าหมายให้เท่ากับ guide_size
  • max_size: จำกัดด้านที่ยาวกว่าของภาพเป้าหมายให้เล็กกว่า max_size
  • force_inpaint: ใช้การวาดภาพทับเสมอ ไม่สนใจ guide_size มีประโยชน์เมื่อต้องการ Inpaint มากกว่าการทำ Detailers
  • inpaint_model: เมื่อใช้ Inpaint Model ต้องเปิดใช้งานตัวเลือกนี้เพื่อให้แน่ใจว่าการวาดภาพทับทำงานถูกต้องที่ค่า denoise ต่ำกว่า 1.0
  • noise_mask : ปกติแล้วแนะนำให้เปิดไว้
  • noise_mask_feather: กำหนดขอบเขตว่าจะทำให้ขอบของ Mask ฟุ้งขึ้นหรือไม่ มากน้อยแค่ไหน ซึ่งมีไว้ดีแล้ว แต่เราลองปรับความฟุ้งเล่นได้

จะเห็นว่าผลลัพธ์บริเวณใบหน้าดีขึ้นอย่างชัดเจน

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 4

สร้าง Mask แบบอัตโนมัติขั้นเทพ ด้วย Florence2 + SAM2

การจะมานั่งทำ Mask เอง เเหมาะกับงานที่ทำแค่ไม่กี่ชิ้น แต่ถ้าอยากทำงานแบบอัตโนมัติด้วยการ Run Workflow คลิ๊กเดียวจบ เราต้องมีวิธีการสร้าง Mask หรือ SEGS แบบอัตโนมัติด้วย จริงไหม?

เดิมทีใน Impact Pack จะมี Node ประเภท Detector ที่อาไว้ Detect พวก ใบหน้า มือ คนทั้งตัว อะไรพวกนี้อยู่แล้ว ตัวหลักๆ คือ Ultralytics Detector Provider กับ SAM Loader ซึ่งก็ทำงานได้ดีในระดับนึงเลย

แต่ว่าในยุคหลังๆ มี Model เจ๋งๆ ออกมามากมาย ซึ่งผมมองว่า เราสามารถสร้าง Mask ที่แม่นยำได้มากกว่าของ Impact Pack เอง หากใช้เครื่องมือ 2 ตัวนี้มาช่วย

  • Florence2 ซึ่งเป็นโมเดลตรวจจับวัตถุออกมาในลักษณะ BBOX หรือ Bounding Box คือตีกรอบสี่เหลี่ยมให้ พัฒนาโดย Microsoft ปล่อยออกมาเป็น Opensouce ให้เราใช้งาน ซึ่งเราสามารถเรียกใช้ผ่าน Custom Node ที่ชื่อว่า ComfyUI-Florence2
  • Segment Anything Model 2 (SAM2) เป็น Model ที่จะทำการ Segmentation หรือตรวจจับในรูปแบบของโครงพื้นที่ที่มีเส้นขอบตามรูปร่างวัตถุจริงโดยละเอียด พัฒนาโดย Meta ออกมาในแบบ Opensource ให้เราได้ใช้เช่นกัน ซึ่งเราสามารถเรียกใช้ผ่าน Custom Node ที่ชื่อว่า ComfyUI-segment-anything-2

ให้เพื่อนๆ install custom node ทั้งสองอันให้เรียบร้อย แล้วเดี๋ยวเราจะมาลองใช้มันดูกันครับ

Florence2

Florence2 สามารถมองรูปแล้วบอกรายละเอียดในภาพได้ดีเลย แล้วสามารถทำงานหรือ Task ได้หลายอย่างด้วย

Detailed caption

ถ้าลองเลือก Task แบบ detailed caption แล้ว เราสามารถเอา Caption ออกมาดูด้วย pythongosssss/ComfyUI-Custom-Scripts ก็ได้ (ถ้าอยากเห็นข้อความ)

ซึ่งถ้าจะประยุกต์เราเอา Caption ที่ว่านี่เป็น Prompt แล้วส่งเข้า Clip Text Encode เพื่อ Gen รูปได้เลยด้วยซ้ำ จริงไหม?

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 5

OCR

ตัว Florence2 สามารถทำ OCR ได้ด้วยนะ เช่น ถ้าเรามีข้อความอยู่ในรูป มันก็สามารถดึงออกมาได้เลย แต่ ณ ตอนนี้โมเดลมันใช้กับภาษาไทยไม่ได้นะ ไม่ work เลย

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 6

Region caption

แต่ถ้าเราลองรัน Florence 2 ด้วย Task แบบ Region Caption มันจะ Detect ทุกอย่างในรูปนั้นออกมาเลยว่ามีอะไรบ้าง? และตรง Caption จะได้ Location ออกมาด้วย

ป.ล. ถ้าเราอยากดูมันว่า Mask ส่วนไหนบ้าง ก็ต่อเข้า Convert Mask to Image ออกมาดูได้ ซึ่งจะเห็นว่ามันระบาย BBOX เต็มไปหมดเลย

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 7

Caption to Phase Grounding [ ตัวหลักที่จะใช้ ]

ถ้าเราอยากจะได้แค่วัตถุบางอย่างในรูป เราสามารถระบุใน Text Input ได้ แต่ว่า ให้เปลี่ยน Task เป็น Caption to Phase Grounding ด้วย ไม่งั้นมันจะ Error

ก่อนอื่น ลองใช้ Florence 2 สร้าง BBOX รอบถ้วยกาแฟกันก่อน ด้วยคำว่า Cup

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 8

คราวนี้จะเห็นว่ามัน Detect เฉพาะ Cup ได้จริงๆ และ Mask ได้ถูกต้องด้วย

ทีนี้เรามาดูกรณีที่มัน Detect เจอ Object หลายอัน เช่น ผมให้มัน detect โคมไฟด้วย Lamp มันเจอหลายอันเลย ซึ่งแต่ละอันจะมี Index ของตัวเอง (ุถ้าไม่อยากให้การ detect เปลี่ยนต้อง fix seed ตอน detect ไว้ด้วยนะ)

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 9
สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 10

ก่อนจะส่งเข้า SAM2 ไปทำงานต่อ เราสามารถเลือกส่งแค่ Index ที่ต้องการได้ ด้วย Node ที่ชื่อ Florence2 Coordinate ครับ

SAM2

เราจะเอา SAM2 ต่อจาก Florence2 Coordinate อีกที เพื่อให้มันทำ Segmentation แบบละเอียดต่อนั่นเอง

ซึ่งเราจะต่อผ่าน Node ที่ชื่อ Florence2 Coordinate เพื่อให้มันทำ Segmentation เฉพาะในพื้นที่ที่เราเลือกครับ เช่นในรูป ผมเลือก Index 3 ออกมา

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 11
สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 12

ด้วยความรู้นี้ แปลว่า เราจะ Mask อะไรก็ได้แล่ว เช่น Mask แค่เสื้อ ก็แค่แก้ Text เป็น Shirt จบเลย (เพราะในรูปมีตัวเดียว)

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 13
สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 14

ถ้าเรา Convert Mask to SEGS แล้ว ต่อเข้า Detailer (SEGS) เราก็จะทำการ Inpaint แค่เสื้อได้อย่างแม่นยำ

กรณี Mask มีหลายชิ้น แล้วเราอยากให้มันมองรวมกัน ก็สามารถเลือกตรง Mask to SEGS ให้เป็น Combined ได้นะครับ ส่วนตอนใช้ Detailer (SEGS) ก็อาจต้อง Denoise เยอะนิดนึง ไม่งั้นภาพอาจไม่ค่อยเปลี่ยน

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 15

อย่างไรก็ตาม แม้จะใส่ denoise ประมาณ 0.5 สีเสื้อมันก็ยังอาจจะดูไม่ค่อยม่วงนัก (อาจเพราะเดิมมีแต่สีขาว)

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 16

การใช้งานขั้นสูง

แนวทางจัดการเวลาที่เรา Inpaint แล้วไม่ค่อย Work หลายแนวทางดังนี้ คือ

ปรับ Cycle ให้ทำซ้ำหลายๆ รอบ

เราสามารถลองใช้ Feature ที่เรียกว่า Cycle เพื่อให้มันทำ Detailer หลายๆ รอบ โดยลองตั้งค่า Cycle เป็น 3 ดู

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 17

จะพบว่าสีเสื้อเป็นสีม่วงมากขึ้น โดยที่ผมไม่ได้แก้ Prompt หรือ Seed อะไรเลยด้วยซ้ำ

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 18

จะเห็นว่าการใช้ Cycle + Denoise ที่ไม่ต้องมากเกินไป จะสามารถให้เรา Gen ตาม Prompt ได้ดีขึ้น โดยไม่เสี่ยงกับการที่ภาพเพี้ยนไปจากเดิมเยอะ เพราะมันค่อยๆ เปลี่ยนภาพเดิมให้เป็นไปตาม Prompt ของเรานั่นเอง

ปรับภาพในส่วน Mask ก่อนใช้ Detailer

หากว่าภาพดั้งเดิม มันอาจจะมีสีน้อยมาก Denoise ยังไง สีใหม่ก็ไม่เข้าไป (จะใช้ Denoise 1 เพื่อให้มีสี ภาพก็เพี้ยนอีก) วิธีนึงที่ช่วยได้ ก็คือใส่สีทับเข้าไปบริเวณที่เรา Mask ซะเลย เช่น ใช้ ComfyUI-post-processing-nodes ในการปรับสี เช่น พวก HSV, Brightness Contrast จนพอใจ แล้วเอามาผสมกับรูปเดิม โดยใช้ Image Blend by Mask จาก WAS Node Suite ทำให้เสมือนว่ามี Effect แค่ส่วนที่ Mask ก็ได้

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 19

รูปหลังปรับสีด้วยเครื่องมือ Post Processing ปกติ ก็ช่วยได้มาก

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 20

พอรูปพื้นฐานมันม่วงแล้วในระดับนึง ไม่ใช่ขาวจั๊วะ คราวนี้ใน Detailer ก็จัดการต่อได้ง่ายแล้ว

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 21

ลองใช้ Detailer คู่กับ ControlNet

หากต้องการใช้ ControlNet ใน Detailer สามารถใช้ Node ControlNet Apply (SEGS) มาช่วยได้แบบนี้ ซึ่งจะมีประโยชน์ในกรณีที่เราใส่ Denoise เยอะหน่อย ภาพจะได้ไม่เพี้ยนจากรูปทรงเดิม

วิธีการคือ ใช้ Node ControlNet Apply (SEGS) รับ SEGS ที่จะ Inpaint (เช่น จาก MASK to SEGS) ก่อนส่งต่อไปให้ Detailers (SEGS) อีกที

จากนั้น Load ControlNet Model ให้เหมาะสมกับ Preprocessor ที่ต้องการ (ของผมใช้ โมเดล Xinsir ControlNet Union SDXL ซึ่งเป็นโมเดลอัจฉริยะใช้ได้กับทุก Preprocessor เลย)

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 22

เทียบ setting เดียวกัน seed เดียวกัน
กรณี denoise เยอะๆ เช่น 0.8 ระหว่างไม่มี ControlNet กับ มี ControlNet

จะพบว่าถ้าไม่ใช้ ControlNet หน้าอาจจะเปลี่ยนไปเยอะ แต่ถ้าใช้ ControlNet มันก็จะถูกควบคุมไว้ตาม Preprocessor ที่เราเลือก

ลองใช้ Detailer คู่กับ IP Adapter

ถ้าเราต้องการใช้ Detailers คู่กับ IP Adapter สามารถต่อ Workflow โดยใช้ IPAdapterApply (SEGS) ประมาณนี้ได้ครับ

หลักๆ คือ เอา IPAdapterApply (SEGS) รับ SEGS ที่จะ Inpaint (เช่น จาก MASK to SEGS) ก่อนส่งต่อไปให้ Detailers (SEGS) ซึ่ง IPAdapterApply (SEGS) นี้ ต้องรับ ipadapter_pipe จาก IP Adapter Model Helper ของ Inspire Pack ด้วย

ผมระบาย Mask บริเวณเสื้อโดยใช้ Mask จาก SAM2 ที่ทำไว้เป็นรูปภาพ แล้ว Load ขึ้นมาด้วย Load Image as Mask เลือก Channel สีอะไรก็ได้ (เช่น Red) แล้วใช้ Prompt ดังนี้

high quality, realistic photo,  pattern woman shirt

ซึ่ง prompt ผมแค่นิดเดียว ไม่ได้ระบุเลยว่าจะเอาสีเขียว ลายนกยูง แต่ว่ามันก็ไปเอามาจากรูปต้นแบบที่ต่อกับ IP Adapter ได้จริงๆ

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 25

จะเห็นว่าเสื้อกลายเป็นลายนกยูงได้เลย (พลังจาก IP Adapter แรงจนสามารถเปลี่ยนสีจากเสื้อสีขาวได้เลย!)

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 26

หรือถ้าปรับ Cycle เพิ่มอีก (ผสมผสานหลายเทคนิค) ลายก็จะชัดขึ้นได้

สอนใช้ ComfyUI EP12 : สุดยอดวิธีการ Mask และ Detailer 27

สรุป

การใช้ Detailer ใน ComfyUI เป็นวิธีที่มีประสิทธิภาพในการเพิ่มคุณภาพของภาพ AI โดยเฉพาะในส่วนที่ต้องการรายละเอียดพิเศษ เทคนิคที่นำเสนอในบทความนี้สามารถนำไปประยุกต์ใช้ได้หลากหลาย ทั้งการสร้าง Mask อัตโนมัติ การใช้ Cycle เพื่อปรับปรุงผลลัพธ์ และการผสมผสานกับเทคโนโลยีอื่นๆ เช่น ControlNet และ IP Adapter

การฝึกฝนและทดลองใช้เทคนิคเหล่านี้จะช่วยให้คุณสามารถสร้างภาพ AI ที่มีคุณภาพสูงและตรงตามความต้องการได้มากขึ้น

แม้ผมจะยังไม่ได้สอนอีกหลาย feature (เพราะมันมีอีกเยอะโคดๆๆๆๆ) แต่ถ้าคุณเอาความรู้ในบทความนี้ไปประยุกต์ใช้ ก็น่าจะแก้ปัญหาได้ในหลายๆ งานอย่างแน่นอนครับ เพราะผมสอนวิธีที่ยืดหยุ่นมากๆ ให้แล้ว 🙂


Leave a Reply

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

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

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