สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 1

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint

ในตอนนี้เราจะมาเรียนรู้วิธีการสร้างรูปภาพใหม่จากรูปที่มีอยู่เดิม ด้วยเทคนิค Image-to-Image และการแก้ไขรูปเฉพาะบางส่วนด้วย Inpainting ใน ComfyUI กันครับ มาเริ่มกันเลย!

การใช้ AI เปลี่ยนทั้งภาพ (Image to Image)

สมมติว่าเรามีรูปเดิม คือ รูปแมวตัวนี้ (คุณจะใช้รูปอะไรก็ได้นะ ไม่ต้องเป็นรูปจาก AI ก็ได้)

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 2

แล้วเราอยากใช้ AI เพื่อเปลี่ยนรูปนี้เป็นอย่างอื่น แบบเปลี่ยนทั้งรูปเลย เราจะทำยังไง?

สมมติสิ่งที่ต้องการ คือ หมาในห้องนอน เลยใส่ Positive Prompt แบบนี้

high quality realistic photo of dog in the bedroom

ก่อนอื่นเราโหลดรูปที่เข้า ComfyUI ด้วย Node ที่ชื่อว่า Load Image ก่อน ด้วยการ Browse รูปที่เตรียมไว้

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 3

ซึ่งเดิมทีรูปเรา Load Image มันจะเป็น Pixel ปกติ ซึ่งส่งเข้า K-Sampler ตรงๆ ไม่ได้ เพราะตัวนั้นมันต้องการ Latent Image (แต่ก่อนเราใช้ Empty Latent Image มาโดยตลอด)

ดังนั้นเราจะไม่ใช้ Empty Latent แล้ว แต่จะใช้ VAE Encode แปลง Image ปกติให้เป็น Latent แล้วส่งเข้าไปแทน แบบนี้ (อย่าลืมต่อ VAE จาก Load Checkpoint)

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 4

ถ้าเรา Generate ตรงๆ เลย โดยใช้ อาจได้ผลลัพธ์แบบนี้

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 5

ซึ่งภาพมันเปลี่ยนเป็นหมาในห้องนอนโดยสิ้นเชิง ดูไม่ได้เกี่ยวอะไรกับภาพแมวอันเดิมของเราเลย!?

ทั้งนี้เป็นเพราะปกติแล้ว ใน KSampler จะตั้งค่า Denoise เป็น 1.00 หรือ 100% นั่นแปลว่า จะมีการเปลี่ยนภาพอย่างรุนแรงเต็มที่ 100% ภาพมันเลยเปลี่ยนจากเดิมเยอะ

แต่ถ้าเราใส่ Denoise น้อยลง จาก 1.0 เหลือ 0.5 หรือ 50% ภาพก็จะเปลี่ยนแบบนี้ ซึ่งจะดูคล้ายภาพเดิม แมวกลายเป็นหมาแล้ว แต่เหมือนฉากหลังยังไม่เป็นห้องนอน แสดงว่า denoise ไม่พอ

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 6

แบบนี้เราก็อาจปรับ denoise ให้มากขึ้นอีกนิด เช่น 0.7 ว่าผลเป็นไง?

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 7

จะเห็ว่าคราวนี้มันกลายเป็นห้องนอนแล้ว ซึ่งถ้าเราไล่ค่า Denoise ดูหลายๆ อันแบบนี้ 0.2, 0.4, 0.6, 0.8, 1.0 จะเห็นผลชัดเลยว่ามันจะมีการเปลี่ยนแปลงมากขึ้นตามระดับการ Denoise ซึ่งผลที่ได้จะมีเค้าโครงจากภาพเดิมติดไปด้วย ยกเว้น denoise สูงมาก

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 8

และถ้าเราเปลี่ยน Parameter อื่น เช่น seed ผลที่ได้ก็จะเปลี่ยนไปอีก (แต่ denoise ต่ำก็แทบไม่เปลี่ยน เพราะมันเบามาก)

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 9

การใช้ K Sampler หลายรอบ (Pre-Diffusion)

เราสามารถใช้เทคนิคการ Gen ภาพ AI หลายๆ รอบต่อเนื่องกัน โดยใช้ K Sampler หลายตัว

โดยที่ KSampler รอบแรกไม่ต้องเอา Noise ออกทั้งหมด แต่ทำเพื่อกำหนดภาพรวมอะไรบางอย่างก่อน จากนั้นค่อย Gen ต่อจนจบ ด้วย KSampler ตัวที่ 2 โดยใช้อีก Condition นึงได้

ซึ่งเทคนิคนี้เราจะนิยมใช้ KSampler Advanced 2 ตัวต่อกัน โดยที่เราจะกำหนด Start Step, End Step ได้

สมมติว่า Gen ภาพแมวบนโซฟา แบบนี้ นี่คือ Gen จนครบตามปกติ นี่คือเรียกว่า 1 pass

photo of black and white cat on the sofa
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 10
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 11

แต่ถ้าผมเปลี่ยนเป็นใช้ K-Sampler Advanced 2 ตัวต่อกัน เรียกว่า 2 pass ผมอาจทำแบบนี้ได้ คือสั่งเปลี่ยนเป็น

photo of panda on the sea beach
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 12
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 13

การเปลี่ยนแค่บางส่วน (Inpaint)

ขั้นตอนคร่าวๆ คือ กำหนด Mask → ส่งเข้า Set Latent Noise Mask → ต่อเข้า KSampler พร้อม Prompt → ได้ภาพที่แก้ไขเฉพาะส่วน

วิธีกำหนด Mask มีหลายวิธี:

  1. วาดพื้นที่ Mask เอง – คลิกขวาที่รูปแล้วเลือก Open in MaskEditor แล้ววาดพื้นที่ที่ต้องการด้วยมือ
  2. ใช้ SAM Detector – จิ้มที่วัตถุที่ต้องการแล้วกด Detect ปรับ Confidence ให้ได้ส่วนที่ต้องการ
  3. กำหนดด้วย Prompt – ใช้ Node ClipSeg โดยใส่ Prompt บอกวัตถุที่ต้องการ เช่น “shirt”

เมื่อได้ Mask แล้ว สามารถปรับขยายขอบเขตเพิ่มด้วย Node Grow Mask และ Feather Mask ได้ นอกจากนี้ยังผสมผสาน Mask ทั้งแบบวาดเองและกำหนดจาก SAM เข้าด้วยกันก็ได้นะครับ

การกำหนดพื้นที่ Mask แบบ Manual

หลักการเหมือนตัวเมื่อกี๊เลย แต่ว่าเราจะใช้การระบายพื้นที่ใน Load Image แล้วใช้ Node ที่ชื่อว่า Set Latent Noise Mask เพื่อทำการส่ง Noise เฉพาะพื้นที่ที่เราระบายเข้า KSampler

วิธีการระบาย Mask ในรูปคือ คลิ๊กขวาที่รูป แล้วเลือก Open in MaskEditor จากนั้นระบายพื้นที่ตามต้องการ เช่น ผมระบายรอบๆ หัวแมว (ถ้าสีดำมองไม่เห็น ก็เปลี่ยนสี Mask ได้นะ)

  • คลิ๊กซ้าย = ระบาย Mask
  • คลิ๊กขวา = ลบ Mask

จากนั้นกด Save to Node

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 14

จากนั้นต่อ Node ผ่าน Set Latent Noise Mask แบบนี้ (ระหว่าง VAE Encode กับ KSampler)

แล้วใช้ Prompt ว่า

high quality realistic photo of dog
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 15

ก็จะได้ผลแบบนี้ คือมันมีการเปลี่ยนเฉพาะส่วนหัวเลย

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 16

การกำหนดพื้นที่ Mask แบบ Auto

ถ้าเราไม่อยากจะมานั่งระบาย Mask เอง เราสามารถใช้ AI มาช่วยกำหนดพื้นที่ได้ โดยที่เราจะต้องลง Custom Nodes ที่ชื่อว่า ComfyUI Impact Pack ซะก่อน (https://github.com/ltdrdata/ComfyUI-Impact-Pack)

สมมติผมขอเปลี่ยนรูปตั้งต้นเป็นผู้หญิงคนนี้บ้าง

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 17

ให้คลิ๊กขวาที่รูปที่เราโหลด แล้วเลือก Open in SAM detector

จากนั้นให้จิ้มที่เสื้อ 1 จุด แล้วกด Detect โปรแกรมจะทำการทำ Mask พื้นที่ที่เป็นผู้หญิงทั้งหมดให้เลย

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 18

ถ้าเราอยากได้แต่เสื้อ ให้กด Clear ก่อน แล้วจิ้มเสื้ออีกที แล้วเลื่อน confidence ไปขวาสุดๆ เลย เพื่อบอกว่าจะมั่นใจมากๆ ว่าได้แต่เสื้อนะ

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 19

ปรับขยาย Mask นิดหน่อย เพื่อความเนียน

แต่ถ้ารู้สึกว่าอย่าจะปรับ Mask ให้ขยายออกอีกหน่อย เพราะมันติดขอบเสื้อผ้ามากเกินไป เราก็สามารถใช้ Node เกี่ยวกับการจัดการ Mask มาช่วยได้ เช่น Grow Mask กับ Feather Mask แบบนี้

ลองเปลี่ยนเสื้อเป็นเสื้อชมพูลายดอกไม้ ซึ่งอาจต้อง denoise สูงหน่อย เช่น 0.6

high quality realistic photo of pink flower shirt
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 20
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 21

ใช้ผสมพื้นที่ Mask แบบ Auto + Manual

แต่ถ้าหากจริงๆ แล้ว เราอยากได้กางเกงด้วย เราสามารถคลิ๊กซ้ายที่บริเวณที่จะเอา (เป็นจุดสีฟ้า) คลิ๊กขวาที่บริเวณที่จะไม่เอาได้ (เป็นจุดสีแดง) กางเกง

ผมแนะนำว่าคลิ๊กเพิ่มจุดนึงให้กด Detect ทีนึง จะดีกว่า

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 22

บางทีพอได้ใกล้เคียงที่อยากได้แล้ว กดกด Save to node ออกมาก่อนได้ แล้วเราค่อย Open in Mask Editor เพื่อแก้ไขแบบ Manual อีกนิดหน่อยก็ได้

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 23

ทำ Mask ด้วย Prompt

นอกจากที่จะใช้วิธีจิ้ม หรือ Manual ระบายแล้ว เรายังสามารถทำ Mask ด้วย Prompt ได้ด้วย Custom Node ที่ชื่อว่า CLIPSeg (ปรับได้เยอะกว่า) หรือ Clipseg Masking จาก WAS Suite (ปรับได้ไม่เยอะ)

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 24
สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 25

ถ้าเราเอาภาพผลลัพธ์ไปวนเข้า Load Image อีกที ภาพก็จะแรง และชัดขึ้นไปอีกได้ โดยคลิ๊กขวาที่รูปผลลัพธ์แล้ว Copy (ClipSpace) แล้วไปคลิ๊กขวาที่ Load Image แล้วเลือก Paste (ClipSpace)

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 26

จากนั้นกด Queue Prompt อีกรอบ ภาพที่ได้ก็จะชัดขึ้น

สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint 27

Inpaint ที่ดีกว่านี้

จริงๆ ยังมีวิธี Inpaint ที่ดีกว่านี้ แต่ว่าควรใช้ Model SDXL, ControlNet, IP Adapter เป็นก่อน ดังนั้นเดี๋ยวผมจะอธิบายอีกทีในบทต่อๆ ไปนะครับ

คลิปวีดีโอ

ตอนต่อไป

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