Seed ใน Stable Diffusion ทำหน้าที่อะไร?

โดย อัปเดต 2 นาทีในการอ่าน

seed คือเลขจำนวนเต็มที่กำหนดสัญญาณรบกวนเริ่มต้นของทุกการสร้างภาพ ถ้า seed, prompt, โมเดล และการตั้งค่าเหมือนกัน Stable Diffusion จะให้ภาพเดิม เปลี่ยน seed ก็ได้องค์ประกอบใหม่จาก prompt เดิม

ทำไม seed ถึงสำคัญ

Diffusion เริ่มจากสัญญาณรบกวน และทุกภาพเป็นผลลัพธ์ที่กำหนดแน่นอนจากสัญญาณรบกวนนั้นบวกกับการตั้งค่าของคุณ seed คือสูตรของสัญญาณรบกวน นั่นทำให้มันเป็นเครื่องมือเรียนรู้ที่มีประโยชน์ที่สุด: ล็อก seed เปลี่ยนอย่างเดียว แล้วเปรียบเทียบ นี่คือวิธีที่อยู่เบื้องหลังการเปรียบเทียบสไตล์ศิลปินของเรา: ศิลปิน 1,731 คน prompt คงที่สี่ชุด และ seed คงที่หนึ่งค่าต่อ prompt มีแค่ชื่อศิลปินที่เปลี่ยน ความต่างที่คุณเห็นจึงเป็นผลจากศิลปินล้วน ๆ

วิธีใช้ seed

  1. สร้างภาพด้วย seed -1 ไปเรื่อย ๆ จนกว่าจะเจอองค์ประกอบที่ชอบ
  2. อ่านค่า seed จากข้อมูลภาพ (Automatic1111 บันทึกไว้ใน metadata ของไฟล์ PNG และใต้ภาพ) แล้ววางลงในช่อง seed
  3. ทีนี้ค่อยปรับ prompt หรือ negative prompt ทีละคำ: องค์ประกอบมักคงเดิม ส่วนรายละเอียดจะขยับ
  4. กับ sampler แบบ non-ancestral (Euler, DDIM, DPM++ 2M) seed เดิมยังให้ภาพใกล้เคียงเมื่อคุณเปลี่ยนจำนวน step หรือ CFG จึงเปรียบเทียบการตั้งค่าได้อย่างยุติธรรม ส่วน sampler แบบ ancestral อย่าง Euler a เพิ่มสัญญาณรบกวนใหม่ทุก step ภาพจึงเพี้ยนไป

ตัวอย่าง prompt บนเว็บไซต์นี้ระบุ seed ไว้กับเกือบทุกภาพ คุณจึงเริ่มจากผลลัพธ์ที่รู้อยู่แล้วได้

อะไรทำให้ทำซ้ำไม่ได้

  • โมเดลหรือ LoRA ต่างกัน: สัญญาณรบกวนเหมือนเดิมแต่ตัวลดสัญญาณรบกวนไม่เหมือน ภาพจึงเปลี่ยน: เล็กน้อยถ้าเป็น LoRA เบา ๆ เปลี่ยนหมดถ้าเป็นโมเดลอื่น
  • ขนาดภาพ ต่างกัน: tensor ของสัญญาณรบกวนมีรูปร่างอื่น ภาพจึงไม่เกี่ยวกันเลยแม้ seed เดิม
  • GPU หรือเวอร์ชันโปรแกรม ต่างกัน: ความต่างเล็กน้อยของเลขทศนิยมทำให้รายละเอียดขยับได้ ระหว่าง GPU ต่างยี่ห้อ Automatic1111 ถึงขั้นสุ่มสัญญาณรบกวนคนละชุด เว้นแต่ตั้งแหล่งสุ่มเลขเป็น CPU
  • Automatic1111 มีการตั้งค่าเพิ่มเติมที่เปลี่ยนผลลัพธ์ เช่น variation seed, Clip skip และ Eta noise seed delta ต้องคงค่าเหล่านี้ไว้เหมือนเดิมถ้าต้องการภาพซ้ำเป๊ะ

ภาพแปรผันรอบ seed เดิม

Automatic1111 มีช่อง variation seed และแถบเลื่อน variation strength: ที่ 0.1 ถึง 0.3 คุณจะได้ภาพที่ใกล้เคียงกับภาพเดิม ท่าทางและโทนสีเดิมแต่เปลี่ยนเล็กน้อย มีประโยชน์ตอนเลือกมือหรือใบหน้าที่ดีที่สุด ส่วน X/Y/Z plot ที่ใส่ seed บนแกนหนึ่งและคำใน prompt บนอีกแกน จะให้ตารางเปรียบเทียบในการรันครั้งเดียว

คำถามที่พบบ่อย

seed เลขใหญ่กว่าดีกว่าไหม?

ไม่ seed เป็นแค่ป้ายชื่อของรูปแบบสัญญาณรบกวน ไม่ใช่ค่าคุณภาพ 7 กับ 4,294,967,295 ดีเท่ากัน สิ่งเดียวที่สำคัญคือทำซ้ำได้

ใช้ seed เดิมบนเว็บอื่นจะได้ภาพเดิมไหม?

ได้ก็ต่อเมื่อเว็บนั้นใช้โมเดล, ขนาด, sampler, จำนวน step, CFG และโปรแกรมเดียวกัน ระหว่าง Automatic1111 สองเครื่องมักเป็นจริง ระหว่างบริการต่างกันแทบไม่เคย

ทำไม seed เดิมให้ภาพต่างกันบนเครื่องมือของเว็บนี้?

เครื่องมือสาธารณะใส่ negative prompt LoRA เพิ่มรายละเอียด จำนวน step และ sampler ของตัวเองกับทุกคำขอ และ inpainting ปรับขนาดภาพของคุณให้พอดี 1024 px ผลลัพธ์จึงต่างจากเครื่องของคุณ แต่ภายในเว็บไซต์ คำขอเดิมด้วย seed เดิมทำซ้ำได้