ทำไม seed ถึงสำคัญ
Diffusion เริ่มจากสัญญาณรบกวน และทุกภาพเป็นผลลัพธ์ที่กำหนดแน่นอนจากสัญญาณรบกวนนั้นบวกกับการตั้งค่าของคุณ seed คือสูตรของสัญญาณรบกวน นั่นทำให้มันเป็นเครื่องมือเรียนรู้ที่มีประโยชน์ที่สุด: ล็อก seed เปลี่ยนอย่างเดียว แล้วเปรียบเทียบ นี่คือวิธีที่อยู่เบื้องหลังการเปรียบเทียบสไตล์ศิลปินของเรา: ศิลปิน 1,731 คน prompt คงที่สี่ชุด และ seed คงที่หนึ่งค่าต่อ prompt มีแค่ชื่อศิลปินที่เปลี่ยน ความต่างที่คุณเห็นจึงเป็นผลจากศิลปินล้วน ๆ
วิธีใช้ seed
- สร้างภาพด้วย seed -1 ไปเรื่อย ๆ จนกว่าจะเจอองค์ประกอบที่ชอบ
- อ่านค่า seed จากข้อมูลภาพ (Automatic1111 บันทึกไว้ใน metadata ของไฟล์ PNG และใต้ภาพ) แล้ววางลงในช่อง seed
- ทีนี้ค่อยปรับ prompt หรือ negative prompt ทีละคำ: องค์ประกอบมักคงเดิม ส่วนรายละเอียดจะขยับ
- กับ 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 บนอีกแกน จะให้ตารางเปรียบเทียบในการรันครั้งเดียว