KM
ComfyUI 101 · บทที่ 3

Core Workflow — 6 node ที่อยู่เบื้องหลังทุกภาพ AI

ทุก workflow ที่ซับซ้อน (inpaint · ControlNet · video) ล้วนต่อยอดจากโครงนี้ — เข้าใจ 6 ตัวนี้ = อ่าน workflow ไหนก็ออก แล้วปิดท้ายด้วยการต่อเองตั้งแต่ศูนย์

3.1

โครงกระดูกของ text-to-image ทุกครั้ง

เปิด Templates → Image → Text to Image ใน ComfyUI จะเจอหน้าตาแบบนี้เป๊ะ — สีของเส้น = ชนิดข้อมูล

Node 1/6

📦 Load Checkpoint — โหลดโมเดลหลัก

โหลดไฟล์โมเดล (.safetensors) แล้วแยกออกเป็น 3 ส่วนให้ node อื่นใช้งาน

← Input

— ไม่มี (จุดเริ่มต้น)

Output →

  • MODEL — สมองหลักที่ทำนาย noise
  • CLIP — ล่ามแปลง prompt เป็นตัวเลข
  • VAE — นักแปลระหว่างภาพจริง ↔ latent

⚙️ การตั้งค่า

เลือกชื่อไฟล์โมเดลจาก dropdown (ไฟล์ใน models/checkpoints/)

🧠 จำง่าย ๆ

checkpoint = “แพ็กรวม” ที่มีทั้งสมอง (MODEL), ล่ามภาษา (CLIP) และนักแปลภาพ (VAE) อยู่ในกล่องเดียว

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

Node 2/6

💬 CLIP Text Encode ×2 — แปลง prompt เป็นเงื่อนไข

รับข้อความ prompt → ใช้ CLIP แปลงเป็น CONDITIONING (เงื่อนไขที่บอก KSampler ว่าให้สร้างอะไร)

← Input

  • clip — จาก Load Checkpoint

Output →

  • CONDITIONING — เงื่อนไขจาก prompt

⚙️ การตั้งค่า

ต้องมี 2 ตัวเสมอ: Positive = สิ่งที่อยากได้ · Negative = สิ่งที่ไม่อยากได้ (blurry, watermark, extra fingers…)

🧠 จำง่าย ๆ

เหมือนล่ามสองคน — คนแรกบอกช่างว่า “เอาแบบนี้” อีกคนคอยกระซิบว่า “ห้ามแบบนี้เด็ดขาด”

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

Node 3/6

🌫️ Empty Latent Image — ผ้าใบเปล่า

สร้าง “latent ว่าง” — ผ้าใบเปล่าที่เต็มไปด้วย noise ให้ KSampler เอาไปวาดต่อ

← Input

— ไม่มี (จุดเริ่มต้น)

Output →

  • LATENT — ผ้าใบ noise พร้อมวาด

⚙️ การตั้งค่า

width / height (SDXL แนะนำ 1024×1024, SD1.5 แนะนำ 512×512) · batch_size = กี่ภาพต่อรอบ

🧠 จำง่าย ๆ

ก่อนวาดรูปต้องมีผ้าใบ — แต่ผ้าใบของ AI เริ่มจากจุดรบกวนเต็มผืน ไม่ใช่สีขาว

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

Node 4/6

🪄 KSampler — หัวใจของการสร้างภาพ ❤️

“ค่อย ๆ ลบ noise” ออกจาก latent ตามทิศทางที่ prompt กำหนด จนกลายเป็นภาพ (denoising / sampling)

← Input

  • model — สมองจาก checkpoint
  • positive + negative — เงื่อนไขจาก prompt
  • latent_image — ผ้าใบเปล่า

Output →

  • LATENT — ภาพเสร็จแล้ว (ยังอยู่ในรูป latent)

⚙️ การตั้งค่า

seed · steps · cfg · sampler_name · scheduler · denoise → เจาะลึกทั้งหมดในบทที่ 4

🧠 จำง่าย ๆ

ช่างแกะสลัก: เริ่มจากก้อนหิน (noise) แล้วค่อย ๆ เคาะออกทีละนิด (steps) จนเป็นรูป โดยมี prompt เป็นแบบ

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

Node 5/6

🖼️ VAE Decode — แปลง latent → ภาพจริง

เอา LATENT จาก KSampler มาแปลงเป็น IMAGE — ภาพ pixel จริงที่ตามนุษย์มองเห็น

← Input

  • samples — จาก KSampler
  • vae — จาก Load Checkpoint

Output →

  • IMAGE — ภาพ pixel จริง

🧠 จำง่าย ๆ

นักแปลคนสุดท้าย — แปลจาก “ภาษาเครื่อง” (latent) กลับเป็น “ภาษาคน” (ภาพที่มองเห็น)

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

Node 6/6

💾 Save Image — บันทึก / แสดงผล

บันทึกไฟล์ลงโฟลเดอร์ output/ (ตั้ง prefix ชื่อไฟล์ได้) — workflow จะถูกฝังในไฟล์ภาพด้วย

← Input

  • images — จาก VAE Decode

Output →

— ไม่มี (ปลายทาง)

⚙️ การตั้งค่า

ถ้าแค่อยากดูไม่อยากเซฟ ใช้ Preview Image แทน

🧠 จำง่าย ๆ

เส้นชัย — และโบนัส: ภาพที่เซฟลากกลับเข้า ComfyUI เมื่อไหร่ workflow ทั้งกราฟก็กลับมา

ตำแหน่งใน workflow

📦 Load Checkpoint
💬 CLIP Text Encode ×2
🌫️ Empty Latent Image
🪄 KSampler
🖼️ VAE Decode
💾 Save Image

3.3 · สำคัญมาก

ตามรอยข้อมูล — อ่าน workflow เป็นประโยคเดียว

ถ้าอ่านเส้นทางนี้ออก จะเข้าใจทั้ง workflow ในครั้งเดียว — และ workflow ที่ซับซ้อนกว่านี้ก็อ่านด้วยวิธีเดียวกัน

กด ถัดไป ทีละจังหวะ แล้วดูว่าข้อมูลไหลไปทางไหน

0 / 6

3.5

อ่าน “สี” ของช่องเสียบ

ComfyUI ใช้สีบอกชนิดข้อมูล — ต่อได้เฉพาะสี/ชนิดเดียวกัน ต่อเส้นไม่ติดเมื่อไหร่ = ชนิดไม่ตรงกัน (ความหมายลึก ๆ ของแต่ละชนิด เจาะต่อในบทที่ 4)

คลิกจุดสีก่อน แล้วคลิกชนิดข้อมูลที่คู่กัน

0 / 6

3.4 · ลงมือจริง

Workshop: สร้าง workflow แรกด้วยมือ

ทำครั้งเดียวพอ แล้วจะซึ้ง — ดับเบิลคลิกพื้นที่ว่างเพื่อค้นหา node ได้เสมอ

1

เคลียร์ canvas

New

เมนู Workflow → New (หรือ Clear) เริ่มจากหน้ากระดาษเปล่า

2

วาง Load Checkpoint

ดับเบิลคลิก

ดับเบิลคลิกพื้นที่ว่าง → พิมพ์ “Load Checkpoint” → เลือกโมเดลจาก dropdown

3

วาง CLIP Text Encode ×2

×2

ทำ 2 ตัว (Positive / Negative) แล้วลาก CLIP จาก checkpoint ไปเสียบทั้งคู่ · positive: “a cozy coffee shop interior, warm light, photorealistic” · negative: “blurry, low quality”

4

วาง Empty Latent Image

1024²

ตั้งขนาด 1024×1024 (ถ้าใช้โมเดลตระกูล SDXL)

5

วาง KSampler แล้วเสียบ 4 เส้น

4 เส้น

MODEL จาก checkpoint · positive → ช่อง positive · negative → ช่อง negative · Empty Latent → ช่อง latent_image

6

วาง VAE Decode

ถอดรหัส

เสียบ LATENT จาก KSampler + VAE จาก checkpoint

7

วาง Save Image

ครบ!

เสียบ IMAGE จาก VAE Decode — ครบ 6 node พอดี

8

กด Run!

Ctrl+Enter

Ctrl+Enter แล้วดูภาพแรกที่สร้างด้วยมือตัวเองตั้งแต่ศูนย์ 🎉

💡 เทคนิคต่อเส้นเร็ว: ลากจากช่อง output ไปปล่อยที่พื้นที่ว่าง — ComfyUI จะเด้งเมนูแนะนำ node ที่ต่อได้ทันที ไม่ต้องจำชื่อ

✅ สรุปบทที่ 3

  • • workflow text-to-image มาตรฐาน = 6 node: Checkpoint → Text Encode ×2 → Empty Latent → KSampler → VAE Decode → Save
  • • checkpoint แตกเป็น MODEL / CLIP / VAE — KSampler คือหัวใจ ที่ลบ noise จนเป็นภาพ
  • • ต่อเส้นโดยดู สี/ชนิด ให้ตรงกัน — ต่อไม่ติด = ชนิดไม่ตรง
  • • workflow ซับซ้อนทั้งหมด (inpaint · ControlNet · video) ต่อยอดจากโครงนี้
มาสคอตชูนิ้วโป้ง
📚 ถัดไป: บทที่ 4 — พารามิเตอร์ KSampler + ชนิดข้อมูล (seed · steps · cfg · sampler · denoise — ลองหมุนได้จริงทุกปุ่ม) — เลือกได้จาก sidebar ซ้ายมือ