วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 1

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7]

หากเพื่อนๆ ใช้ Stable Diffusion ทำการ Gen รูปขึ้นมาซักพัก คุณคงรู้ว่าสิ่งหนึ่งที่สำคัญมากๆ ที่จะทำให้ภาพผลลัพธ์ออกมาสวยงามก็คือตัว Model ที่เราเลือกใช้ในการ Generate รูปนั่นเองครับ

แม้ว่าในตอนที่ 2 ผมจะได้พูดถึงวิธีการโหลด Model ใหม่ๆ ไปแล้ว แต่มันจะดีกว่ามั้ย ถ้าเราสามารถผสม Model ขึ้นมาใช้เองแบบโดนใจเราสุดๆ ได้? และมันอาจจะสามารถใช้เพื่อที่เราจะได้สร้างรูปที่ดูมีความต่างจากงานของคนอื่นได้ด้วยนะ (อันนี้ดีมากๆ)

ซึ่งในบทความนี้ผมจะมาสอนทุกคนทำการผสม Model Checkpoint ขึ้นมาใช้เองกันครับ

ขอเตือนก่อนว่า บทความนี้ถูกเขียนในสไลต์ที่ไม่เหมือนกับบทความก่อนๆ ของผมเลย เพราะมันไม่ได้เป็นการสอนมากนัก แต่เป็นการทดสอบให้ดูซะมากกว่า และเนื้อหาบางส่วนก็อาจดู Nerd สุดๆ ไปเลย ดังนั้นจะเหมาะกับคนที่อยากลงลึกด้านผสม Model โดยเฉพาะครับ

รวมบทความ Stable Diffusion

การผสมมีแบบไหนบ้าง?

ซึ่งผมจะแนะนำการผสม Model Checkpoint 2 แบบ คือ แบบ Basic ทั่วๆ ไป กับแบบ Merge Block Weight ที่จะเป็นแบบ Advance ครับ ซึ่งบอกไว้ก่อนเลยว่าถ้าใครจะทำตามก็ต้องการพื้นที่ Harddisk พอสมควรเลย เพราะ Checkpoint 1 ไฟล์ก็ประมาณ 5GB แล้ว หึหึ…

โดยผมจะใช้ Model Checkpoint ตัวอย่าง 2 อัน ที่ต่างกันโดยสิ้นเชิงมาผสมกันนั่นคือ

หมายเหตุ : จริงๆ คุณจะเอา Checkpoint ไหนมาผสมกันก็ได้ ยิ่งทดลองยิ่งสนุก!

โดยเอาทั้ง 2 Model ไปไว้ใน Folder stable-diffusion-webui\models\Stable-diffusion ให้เรียบร้อยก่อนนะครับ

ผสม Model แบบ Basic

สำหรับการผสมแบบ Basic เราจะใช้เครื่องมือที่เรียกว่า Checkpoint Merger ที่มีมากับ Automatic1111 อยู่แล้วเลยครับ

ผสมแบบ Weighted SUM

โดยที่เราจะเลือกแต่ละ Model ขึ้นมาที่ Model A กับ B แล้ว เลือกอัตราส่วน Multiplier (M) ที่จะผสมซึ่งมีความหมายดังนี้

คือสูตรการผสมคือ A * (1 – M) + B * M
ดังนั้น Multiplier ก็คือ มองได้ว่า คือ อัตราส่วนของ B นะไม่ใช่ A

  • ใส่ 0 คือไปทาง A 100%
  • ใส่ 0.3 คือ ไปทาง A 70% (อันนี้เห็นชัด)
  • ใส่ 0.5 คือ ผสมอย่างละครึ่ง (50%)
  • ใส่ 1 คือ B 100%

Interpolation Method ผมเลือกแบบ Weighted Sum ก็คือให้มันเอามารวมแบบเฉลี่ยกัน และบันทึกไฟล์แบบ safetensor

แล้วผมจะตั้งชื่อไฟล์แบบนี้คือ ChillOut75MeinaMix25
แปลว่า มีChillOut75% Meina25%
ซึ่งเกิดจากการตั้ง ChillOut เป็น Model A โดยมี Multiplier เป็น 0.25 นะครับ

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 2

พอกด Merge แป๊ปเดียวก็จะเสร็จเลย ไม่นานครับ (ไม่ถึง 1 นาที)

แล้วผมทำอย่างนี้อีก 2 อัตราส่วน คือ

  • ChillOut50MeinaMix50 (Multiplier 0.5)
  • ChillOut25MeinaMix75 (Multiplier 0.75)

พอได้ไฟล์ครบแล้วเราจะมาทดสอบผลของการ Merge Model กันครับว่าออกมาเป็นยังไง

ทำการทดสอบ

ในการทดสอบ เราจะใช้ x/y/z plot มาช่วย โดยเลือกให้เปลี่ยน checkpoint เป็น 5 ตัว คือ Chillout100%(MeinaMix 0%), 75% 50% 25%, 0%(MeinaMix 100%) ตามลำดับ

หมายเหตุ : ใน x values พยายามอย่ากดขึ้นบรรทัดใหม่นะ ไม่งั้นมันจะเอ๋อ (สร้างรูปเกิน)

เช่น ผมใส่แบบนี้

chilloutmix_NiPrunedFp32Fix.safetensors [fc2511737a],ChillOut75MeinaMix25.safetensors [589c49a4e3],ChillOut50MeinaMix50.safetensors [ab59bbccc8],ChillOut25MeinaMix75.safetensors [49a76cdc3a],meinamix_meinaV9.safetensors [eac6c08a19]
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 3

ในบทความนี้ผมจะใช้ Negative Prompt เหมือนกันทุกครั้ง และเป็นคำกลางๆ ที่ใช้ได้ทั้งภาพสมจริงและภาพการ์ตูน คือ

(worst quality:2), (low quality:2), (lowres, normal quality:2)

และจะใช้ Sampling Method ผมใช้ DPM++SDE Karas, Steps 20, CFG 7 และ จะใช้ seed 1234 เท่ากันหมดก่อน เพื่อความ simple

และจะเปลี่ยน Prompt และ Model ไปเรื่อยๆ (แต่จะใส่คำกลางๆ เพื่อให้ใช้ได้ทุก Model) เช่น ตอนแรกจะใช้ Prompt นี้

(best quality:1.4), (ultra highres:1.2), highest quality, highres, 1girl, (beautiful thai girl), (long hair), (in red tank top, jeans),(sit on the sofa)
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 4

ปรากฏว่าภาพออกมา จะเห็นว่าภาพคล่อยๆ เปลี่ยนจากภาพสมจริงของ Chillout100% มาเป็นภาพการ์ตูนของ Meinamix 100% ตามน้ำหนักที่เราใส่ไว้นั่นเอง

ลองเปลี่ยน Prompt ที่ทำให้ 2 Model ต่างกันมากหน่อย

ผมจะพยายามทำให้ภาพทั้ง 2 ฝั่งอาจต่างกันพอสมควร เช่น ท่าทาง มุมกล้อง รายละเอียดฉากหลัง เพื่อที่จะได้เห้นอะไรชัดเจนขึ้นเวลา Merge Model แล้ว

โดยที่ผมทำ prompt ไว้ 4 ชุด แต่ละชุด Save เป็น Styles เอาไว้ก่อน (กดรูป icon Save ที่ใกล้ๆ ปุ่ม Generate) จะได้เรียกใช้ง่ายๆ

Style = S1_BASKETGIRL

(best quality:1.4), (ultra highres:1.2), highest quality, highres, 1girl, (beautiful thai girl),looking at viewer, (short hair), (in pe uniform), (in basketball stadium:1.1)

Style = S2_GAMERGIRL

(best quality:1.4), (ultra highres:1.2), highest quality, highres, 1girl, (beautiful thai girl:1.3),(looking at viewer:1.4), (portrait shot), (ponytail hair), (gaming headphone), (high tech gaming computer:1.3), (RGB, neon color light effect:1.2), (in gaming bed room in background)

Style = S3_COFFEEGIRL

(best quality:1.4), (ultra highres:1.2), highest quality, highres, (beautiful thai girl), (as a coffee barista:1.2), (casual cloth, apron:1.1), (in coffee shop:1.3)

Style = S4_KNIGHTGIRL

(best quality:1.4), (ultra highres:1.2), highest quality, highres, (beautiful thai girl), (using two hand knight sword:1.4),(in Europe middle age full plate knight armor:1.3), ( in the battle with large group of enemy army:1.4)

แล้วผมจะใช้ xyzplot เปลี่ยนทั้ง Checkpoint Name และ Style พร้อมกันเลย (Negative เดิม) เพื่อที่จะได้เห็นภาพทุกแบบพร้อมๆ กันง่ายๆ แบบนี้

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 5

ซึ่งจะ Gen รูปออกมาได้แบบนี้เลยทีเดียว

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 6

ก็จะเห็นว่า กรณีที่ผลของทั้ง 2 ฝั่งต่างกันพอสมควร ทั้งมุมกล้องก็ต่าง รายละเอียด accessory ต่างๆ เวลา Merge ระหว่างทาง ผลมันก็สามารถเกิดความแปลกใหม่มากๆ เลย…

ดังนั้นแปลว่า Model แต่ละอัน สามารถมีวิธีการตีความ Text Prompt ของเราแตกต่างกัน เช่น จะวาดอะไรบ้าง ตรงไหน แล้ววิธีในการสร้างภาพที่ต่างกันด้วย เช่น จะวาดไสตล์ไหน

ทั้งนี้ ถ้าเป็นการ Merge แบบ Basic ก็ง่ายๆ แค่นี้แหละ หลังจากนี้เราก็สามารถเลือกอัตราส่วนที่เราชอบไปใช้ได้เลย รวมถึงยังสามารถเอาไปผสมกับ Checkpoint อื่นต่อได้อีกเรื่อยๆ ไม่มีที่สิ้นสุดครับ

แต่ถ้าจะผสม 3 Model แบบ Weighted SUM เราไม่สามารถเลือก Model A, B, C แล้วผสมพร้อมกันด้วยเครื่องมือปกติได้ เพราะ Weighted SUM จะใช้สูตร A * (1 – M) + B * M ซึ่งไม่เกี่ยวกับ C เลย

ส่วนถ้าใช้ C จะเป็นกรณี Add Difference ซึ่งอันนั้นทำงานอีกแบบนึง คือ A + (B – C) * M

ผสมแบบ Add Difference

การผสมอันนี้ถึงจะมีการใช้ Model C นะ โดยผมใส่ Model C เป็น Model การ์ตูนอันนี้ https://civitai.com/models/4468/counterfeit-v30

ลองไล่ตามนี้

ChillOut | Meina | Counterfeit | M0.25 | M0.50 | M0.75 | M1.00

ภาพที่ได้ออกมาแบบนี้ (ขอ Censor หน่อยนะ ผสมแล้วมันโป๊เฉยเลย 555)

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 7

ซึ่งผลของการใช้ Add Difference ค่อนข้างทำความเข้าใจยาก แต่ตามหลักแล้วคือ หากว่า Model B กับ C ต่างกันตรงไหน แล้ว Add ความต่างนั้นเข้าไปใน A ครับ

สรุปแบบ Basic

ซึ่งถ้าสังเกตจะเห็นว่าการผสม Model แบบ Weighted Sum (Basic) มันก็จะเอา Model A กับ B มาผสมๆ กันในภาพรวมตามอัตราส่วนหรือน้ำหนักที่กำหนด แบบที่ควบคุมเฉพาะบางเรื่องไม่ได้

แต่จะใช้แบบ Add Difference ก็ควบคุมได้ยากอยู่ดี…

แต่ถ้าเราอยากจะกำหนดแบบเจาะจงว่าอยากเอาอะไรของ Model A มาผสมกับอะไรของ Model B อันนี้ต้องผสมแบบ Advance แล้ว ถ้าสนใจก็อ่านต่อได้เลย!

ผสม Model แบบ Advance

สำหรับการผสมแบบ Advance เราจะใช้ Extension Merge Block Weighted https://github.com/bbc-mc/sdweb-merge-block-weighted-gui มาช่วย ซึ่งมันมีความสามารถในการผสม Model แบบกำหนดได้อย่างละเอียดเลยว่า ส่วนผสม Block ไหนจะใช้ของ Model ตัวไหน ซึ่งจะมีประโยชน์คือ สามารถพลิกแพลงให้เกิดภาพผลลัพธ์ที่ Merge ปกติทำไม่ได้ (หรือยาก) เช่น ทำให้โครงสร้างของรูปมาจาก Model A แต่ว่ารายละเอียดวิธีวาดมาจาก Model B เป็นต้น

หมายเหตุ : จริงๆ มี Extension อีกตัว คือ SuperMerger ( https://github.com/hako-mikan/sd-webui-supermerger.git ) ซึ่งตัวนี้จะปรับแต่งได้เยอะมาก แต่ผมกลัวคนอ่านจะงง ขอเอาตัว Weight ปกติให้ดูก่อนนะ ไว้ตอนต่อๆ ไปจะเล่น Super Merger ให้ดูอีกที

บอกก่อนว่าสำหรับการผสมแบบ Merge Block นี้ผมเองก็ยังไม่ได้รู้อะไรลึกมาก แต่จะขอ “อาสาช่วยทำการทดสอบ” ลองผสม Model แล้ว Gen ออกมาให้ดูหลายๆ แบบ แล้วให้เพื่อนๆ ช่วยกันสังเกตแล้วกันว่ามันทำงานยังไงกันแน่ ถ้าใครได้ข้อสรุปอะไรดีก็ฝากบอกด้วยนะ

ก่อนอื่นให้ไปลง Extension ให้เรียบร้อยก่อน แล้วจะมี Tab Merge Block Weighted โผล่ขึ้นมา

แต่มันจะมีอะไรให้เลือกเยอะแยะไปหมดเลย อย่าเพิ่งตกใจ เราจะค่อยๆ มาทำความเข้าใจกระบวนการ Gen รูปกันให้ละเอียดขึ้นก่อน

ทบทวนกระบวนการ Gen รูปในเชิงเทคนิค

ภาพนี้สรุปกระบวนการ Gen รูปของ Stable Diffusion ไว้ดีมาก

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 8
https://jalammar.github.io/illustrated-stable-diffusion/
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 9
https://jalammar.github.io/illustrated-stable-diffusion/

เราจะพบว่ากระบวนการที่เปลี่ยน Noise ให้เป็นรูปนั้น จะค่อยๆ เปลี่ยนทีละ Step และในแต่ละ Step ก็จะมีสิ่งที่เรียกว่า U-Net ในการช่วยเปลี่ยนรูปที่มี Noise ให้เป็นรูปที่สมบูรณ์ (Noise น้อยลง) มากขึ้นเรื่อยๆ

ซึ่ง U-Net แต่ละตัว นั้นมีโครงสร้างประมาณนี้ (ซึ่งตามโครงสร้างแล้วมันเหมือนรูปตัว U ก็เลยเรียกว่า U-Net ไง)

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 10
รูปจาก https://brunch.co.kr/@advisor/43

อะไร คือ In-Out??

ก่อนอื่น เจ้า In-Out พวกนี้คือส่วนหนึ่งของสิ่งที่เรียกว่า U-Net (ผู้สร้างรูป)

โดยอยากให้ลองดูภาพนี้ก่อนว่า In-Out แต่ละตัว ความหมายคร่าวๆ หมายถึงอะไร?

ถ้าไล่จากซ้ายไปขวา

  • ช่วง In คือ การพยายามบีบอัด (Down Sampling) ให้ภาพอยู่ในรูปแบบที่เล็กลง (ตรงกลาง) นั่นคือมันพยายามเก็บข้อมูลจากรูปใน Step ก่อนหน้า
  • Middle (M00) คือ ข้อมูลที่ถูกเก็บไว้จนอยู่ในขนาดที่เล็กที่สุด
  • ช่วง Out ทำการแปลงรูปขึ้นมาใหม่จนใหญ่และละเอียดขึ้น (Up Sampling) ในตอนหลัง ซึ่งมองได้ว่าขั้นตอน Out มีหน้าที่หลักในการสร้างรูปขึ้นมานั่นเอง

สิ่งสำคัญคือ Step การทำงานมันวิ่งจากซ้ายไปขวาแล้วผ่านทุก Block นั่นคือ
Block IN00 -> IN01 -> IN02 -> … -> IN11 -> M00 -> OUT00 -> OUT01 -> OUT11

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 11
ภาพจาก https://rentry.org/BlockMergeExplained

ถ้าเรา Gen ภาพ 20 Steps แปลว่า มันผ่าน U-Net แบบนี้ 20 รอบ แต่ละรอบจะค่อยๆ มี Noise น้อยลงเรื่อยๆ นั่นเอง

อะไรคือ Base Alpha

Base_Alpha คือตัวตัดสินใจว่าจะใช้ Text Encoder ของ Model ไหน โดยที่มันคล้ายๆ กับเป็นคนแปลข้อมูลจาก Text Prompt, Tag ต่างๆ แล้วไปอธิบายให้กับนักวาด (U-Net) อีกที

  • 0 = ใช้ Model A 100%
  • 1 = ใช้ Model B 100%
  • ถ้าใส่เป็นอัตราส่วน ก็จะใช้ text encoder ผสมกัน (ผมลอง 0.5 ให้ดู)

ซึ่งในทางเทคนิค ข้อความใน Text Prompt จะถูกแปลงเป็น Text Embedding แล้วเอามาใช้ในการเหนี่ยวนำ Noise ที่เกิดขึ้น (เรียกว่าใส่ Attention เข้าไป) เพื่อให้มันสร้างรูปที่ตรงกับ prompt ที่เราสั่งอีกที คล้ายๆ แบบนี้

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 12
https://jalammar.github.io/illustrated-stable-diffusion/

เอาล่ะ พอเข้าใจภาพรวมแล้ว เรามาลองทำสอบกันว่าถ้าเปลี่ยน Base Alpha (Text Encoder) จะเกิดอะไรขึ้น?

ก่อนอื่น ผมจะลองผสม ChillOut กับ Meina แบบ 50:50 นั่นคือไม่ปรับ in-out เลย ให้มันเป็น 0.5 ทั้งหมด (กด Clear Values ได้)

และเลือก Base Alpha เป็น 0, 0.5 และ 1 ดูก่อนว่าผลเป็นยังไง (ในรูปเลือก 0)

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 13

จากนั้น ลองผสมเพิ่มแบบให้ base alpha ตรงข้ามกับตัวปกติ ซึ่งเราเลือก Preset ได้นะ ไม่ต้องไปเลื่อน in-put เอง

  • ผสม Model A กับ B แต่ให้มาทาง A100% (preset = All_A) แต่ Base Alphaเป็น 1 (กลับทิศ)
  • ผสม Model A กับ B แต่ให้มาทาง B100% (preset = All_B) แต่ Base Alphaเป็น 0 (กลับทิศ)
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 14

ลองใช้ xyz plot แบบนี้ คือลองทั้ง base alpha 0 กับ 1 สลับกันไป

chilloutmix_NiPrunedFp32Fix.safetensors [fc2511737a],ChillOut100MeinaMix0Alpha1.safetensors [8f99e17e7a],ChillOut50MeinaMix50Alpha0.safetensors [625d2d6c2e],ChillOut50MeinaMix50Alpha05.safetensors [9b6fa7bf57], ChillOut50MeinaMix50Alpha1.safetensors [589ccfafc8],ChillOut0MeinaMix100Alpha0.safetensors [afeb25b6f7],meinamix_meinaV9.safetensors [eac6c08a19]

เอามา Gen รูป จะได้แบบนี้

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 15

ซึ่งเอาตามตรง ผมก็ยังไม่เข้าใจ effect ของ base alpha มากนัก แต่ที่เห็น คือ

  • การใช้ base alpha 0.5 และทุกอย่างทั้ง in และ out เป็น 0.5 หมด จะได้ผลเหมือนกับ Basic Merge ที่ weight 0.5
  • การเลือกเอาทาง Model ซักอัน 100% แต่เอา base alpha จากอีก Model นึง ก็ได้ผลลัพธ์ที่เปลี่ยนไปเช่นกัน
  • ดังนั้นแค่ base alpha ที่เปลี่ยนไปก็มีผลต่อรูปที่ออกมาแล้ว ก็เป็นเรื่องที่น่าทดลองเล่นดูนะครับ (หลายๆ อันก็ออกมาน่าสนใจมาก)

ลองปรับ IN-Out แบบละเอียด

ที่นี้ความหมายของแต่ละ block นั้นคืออะไร? ก็มีคนพยายามจะทำการทดสอบและทำความเข้าใจ ซึ่งเค้าก็บอกกันว่ามันประมาณนี้

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 16
จาก https://rentry.co/Merge_Block_Weight_-china-_v1_Beta
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 17

ซึ่งจะเป็นจริงรึเปล่า ผมจะลองทดสอบให้ดูด้วยว่าผล (ในกรณีของผม) เป็นยังไงครับ

ลองใช้ Preset ที่มีอยู่แล้ว

แม้จะบอกว่าปรับละเอียด แต่เราสามารถจะเลือกใช้ Preset ที่มีมาให้ได้ครับ ความหมายของ Preset แต่ละตัวดูได้ที่นี่ (สีน้ำเงิน =Model A , สีแดง =Model B)

ผมขอลองนำเสนอ ตัวที่เรียกว่า กับ WRAP16 ให้ดูครับ

WRAP16

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 18

สมมติผมเลือก Preset Wrap16 แล้วใส่ A=ChillOut, B=MeinaxMix, Base alpha เป็น 0 ด้วยจะได้แบบนี้ (ผมตั้งชื่อ model ว่า ChillOutMeinaMixWrap16_Alpha0 )

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 19

พอเลือก Preset Wrap16 แล้ว Slider จะเปลี่ยนโดยอัตโนมัติ ตามรูป diagram ข้างบน (ผมเอามาแปะให้ดูจะได้ชัดๆ)

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 20
ถ้าเราเลือก WRAP16 แบบนี้ แล้วลองเปลี่ยน base alpha ให้ดูทั้ง 0, 0.5,1

โดยเปลี่ยน checkpoint แบบนี้

chilloutmix_NiPrunedFp32Fix.safetensors [fc2511737a],ChillOutMeinaMixWrap16Alpha0.safetensors [245b5ab42e],ChillOutMeinaMixWrap16Alpha05.safetensors [c17d50da91],ChillOutMeinaMixWrap16Alpha1.safetensors [107b4c09c6],meinamix_meinaV9.safetensors [eac6c08a19]

ผลที่ได้เป็นแบบนี้ คือจะเห็นว่าแทบจะสลับ Composition กับรายละเอียดวิธีวาดภาพกันเลย (แต่รูป Gamer ไม่เห็นผลเท่าไหร่)

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 21
ทดสอบ Rev_SmoothStep*2

คราวนี้ ผมลองใช้ Rev_SmoothStep*2 ว่าถ้าเป็นรูปแบบคล้ายกัน แต่มีการไล่ Weight ระหว่างทางด้วยผลจะเป็นแบบไหน?

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 22
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 23

จะได้ผลแบบนี้ ซึ่งผมมองว่ามีการผสมผสานบางอย่างกันมากขึ้น

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 24

จะเห็นว่า พอใช้ preset ที่มีการไล่ weight ภาพมันจะดูผสมผสานระหว่าง 2 model มากขึ้น เช่นในเคสที่เป็นภาพสมจริง + anime ผสมกันก็จะดูเป็น 2.5D มากขึ้น ถ้าใครชอบแบบนี้ก็น่าจะเล่นพวก preset ที่มีการไล่ weight ครับ

ทำการทดลองปรับ In-Out ทีละส่วน

หากเราปรับ In Out หลายเรื่องพร้อมกันมากเกินไป เราก็จะไม่เข้าใจว่าจริงๆ แล้วแต่ละอันมันทำอะไรกันแน่… ดังนั้นเราจะมาลองค่อยๆ ปรับทีละน้อยๆ ลงหน่อย ซึ่งมันมีทั้งหมด 25 block (ฝั่งละ 12×2 ฝั่ง + กลางอีก 1) ดังนั้นผมจะปรับทีละ 4 block แล้วกัน เพื่อที่จะได้ทำความเข้าใจได้มากขึ้น (ใครขยันจะลองทำทีละ Block เลยก็ได้นะ…)

ซึ่งเราจะทดลองให้ทุก Parameter เป็น 0 ให้หมด (คือเป็น A 100%) แล้วค่อยๆ ปรับทีละส่วนเป็น B 100% โดยที่ผมจะใช้ base alpha เป็น 0.5 แล้วกัน จะได้ไม่ต้อง Gen เยอะมากจนเกินไป (เพราะมันจะดูกลางๆ ระหว่าง 0 กับ 1) เอาล่ะ เริ่ม!

ปรับช่วงปลายทั้งสองข้างของ U-Net IN 00-03 และ OUT 08-11 เป็น B 100%

ผมมีลองใส่ M00 ไปด้วยอีกอัน ดูว่ามีผลหรือไม่ เรียงดังนี้

ChillOut | IN 00-03 | Out 08-11 |
IN 00-03 และ Out 08-11 | IN 00-03 และ M00 และ Out 08-11 | MeinaMix

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 25

สรุปความเห็น

เท่าที่ดูแล้ว โดยรวม ค่าช่วงปลายทั้งสองข้างของ U-Net (IN 00-03 และ OUT 08-11) ไม่เกี่ยวกับ Composition แน่นอน เพราะถึงแม้จะปรับเป็น B แล้ว ภาพยังค่อนข้าง Compose เหมือน Model A อยู่จริงๆ

ดังนั้นที่มีคนบอกว่าช่วงปลายทั้งสองข้างของ U-Net นี้มันเกี่ยวกับราบละเอียดของภาพก็น่าจะมีความถูกต้องอยู่

ปรับช่วง IN 04-07 และ OUT 04-07 เป็น B 100%

ChillOut | IN 04-07 | Out 04-07 |
IN 04-07 และ Out 04-07 | IN 04-07 และ M00 และ Out 04-07 | MeinaMix

กรณี Base Alpha เป็น 0

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 26
กรณี Base Alpha เป็น 0.5
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 27
กรณี Base Alpha เป็น 1
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 28

ปรับช่วง IN 08-11 และ OUT 00-03 เป็น B 100%

มันก็คือส่วนกลับของ Wrap16 นั่นเองครับ มาลองกัน

ChillOut | IN 08-11 | Out 00-03 |
IN 08-11 และ Out 00-03 | IN 08-11 และ M00 และ Out 00-03 | MeinaMix

กรณี Base Alpha เป็น 0
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 29
กรณี Base Alpha เป็น 0.5
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 30

แบบพิสดาร : กลุ่ม SmoothStep/3

ลองใช้ Preset = SmoothStep/3 และ Reverese Smooth Step/3 ดูครับ

ChillOut | SmoothStep/3 | Reverse SmoothStep/3 | MeinaMix

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 33

แบบพิสดาร : กลุ่ม True Cubic Hermite

ใช้ Preset = True Cubic Hermite และ True Reverse Cubic Hermite

ChillOut | True Cubic Hermite | True Reverse Cubic Hermite | MeinaMix

วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 36

ปรับช่วง OUT ทั้งหมด เป็น B 100%

คราวนี้เรามาทดสอบ IN เป็น A แต่ Out ทั้งแถบเป็น B กันบ้าง

ซึ่งจะคล้ายกับ Preset OUT12 กับ OUT12_5 แต่ผมจะทำให้ M00 เป็น B100% เพิ่มอีกอัน

กรณี Base Alpha เป็น 0
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 39
กรณี Base Alpha เป็น 0.5
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 40
กรณี Base Alpha เป็น 1
วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7] 41

ข้อสรุปแบบ Block Merge

เป็นการสรุปจากการสังเกต (จะมาเพิ่มเรื่อยๆ ถ้าผมได้ข้อสรุปที่ค่อนข้างชัดเจน เพื่อนๆ ก็ช่วยสังเกต ช่วยทดสอบ แล้วมาบอกกันได้นะ ^^)

  • IN เลขเยอะ เช่น IN08-11 เกี่ยวข้องกับ Composition โดยรวม
  • Out ช่วงกลาง เช่น Out04-07 เกี่ยวข้องกับการวาด subject หลัก เช่นตัวละคร

Resources


ใครสนใจอยากใช้ Excel ได้ดีขึ้น อัตโนมัติขึ้น แนะนำ ลองดู Workshop นี้ได้เลย ตอนนี้กำลังจะอบรมแล้ว

แนะนำ Power Query WORKSHOP 2025 🚀

โดย เทพเอ็กเซล พร้อมยกระดับทักษะการใช้ Excel ให้คุณทำงานได้เร็วและแม่นยำยิ่งขึ้น!

✅ รวบรวม+ดัดแปลง Data เพื่อเตรียมข้อมูลก่อน Pivot ให้พร้อมแบบอัตโนมัติ ด้วย Power Query
สอนตั้งแต่เบื้องต้น จนถึงแก้ไข M Code ด้วยตัวเองได้ 🔥

เลือกรูปแบบการเรียนที่สะดวกสำหรับคุณ:

1️⃣ ONSITE (2 วันเต็ม) – ได้เจอวิทยากรตัวจริง!

  • 📍 17-18 พ.ค. 68 | ⏰ 9:00 – 17:00 น. | 🏨 Sindhorn Midtown Hotel
  • 💰 ราคาพิเศษ 7,000 – 7,500 บาท/ท่าน (รวม VAT) (ปกติ 8,500 บาท)
  • ⭐ Early Bird ชำระก่อน 30 เม.ย. + ลูกค้าเก่า Workshop มีส่วนลดพิเศษ

2️⃣ LIVE ONLINE (6 วัน วันละ 2 ชม.) – เรียนจากที่ไหนก็ได้!

  • 📅 13-15 & 20-22 พ.ค. 68 | ⏰ 20:00 – 22:00 น. | 💻 ผ่าน Zoom
  • 💰 ราคาพิเศษ 4,000 – 4,500 บาท/ท่าน (รวม VAT) (ปกติ 5,500 บาท)
  • ⭐ Early Bird ชำระก่อน 30 เม.ย. + ลูกค้าเก่า Workshop มีส่วนลดพิเศษ

👉 สมัครเลย! ดูรายละเอียดเพิ่มเติมที่นี่ https://www.thepexcel.com/thepexcel-public-workshop-2025/

สอบถามเพิ่มเติม: LINE: @ThepExcelWorkshop ได้เลย


One response to “วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7]”

  1. […] ตรง Weight Type อันนี้ ถ้าจะให้เข้าใจจริงๆ จะ Advanced มาก เพราะมันคือการกำหนดว่าจะให้ภาพ Image Prompt ของเราเข้าไปแก้ไข Model ตรงไหนของ UNET ซึ่งมันจะมีองค์ประกอบคือ In-Middle-Out เหมือนที่ผมเคยเขียนเรื่องการ Merge Model ในบทความนี… […]

Leave a Reply

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

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

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