วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 1

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2]

จากที่ผมได้อธิบายวิธีใช้งาน AI สร้างรูปสุดเจ๋งและฟรีด้วย Stable Diffusion ฉบับมือใหม่ ในบทความที่แล้ว ผมได้ทิ้งท้ายไว้ว่า การที่จะทำให้รูปออกมาสวยได้ มันมีหลายปัจจัย เช่น ตัว Model หลัก/ Model เสริม / Text Prompt /Negative Prompt ที่ใส่เข้าไป/ Setting ต่างๆ ในหน้าจอ / ส่วนเสริม Extension เจ๋งๆ / รวมถึงโชค !!

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

Model คืออะไร?

สำหรับ Section นี้อาจดู Nerd หน่อยๆ แต่ผมอยากให้ลองอ่านดูจะได้เข้าใจหลักการคร่าวๆ ของ AI ด้วย ซึ่งถ้าเข้าใจเรื่องนี้ คุณจะตั้งค่า parameter ต่างๆ รวมถึงกำหนด Prompt ได้ดีขึ้นด่วยนะ

ปกติแล้วการทำงานของ AI วาดรูป หลักการโดยทั่วไปคือ การเปลี่ยน Noise ตั้งต้น (จุดๆ ที่ดูไม่รู้เรื่อง) ให้กลายเป็นรูปสิ่งต่างๆ ที่เราระบุได้

แล้ว Noise ตั้งต้นที่ว่าเนี่ย ปกติจะถูกกำหนดด้วยเลข Seed ด้วย ซึ่งค่า Default ใน Stable Diffusion ตั้งเป็นเลข -1 (ติดลบ 1) ซึ่งเป็นการ Random แต่เราสามารถกำหนดเป็นเลขอะไรก็ได้

นั่นแปลว่า ถ่า seed เหมือนกัน และใส่ prompt (คำบรรยาย) เดียวกัน แล้วส่งเข้า Model AI ตัวเดียวกันเราก็จะได้ภาพออกมาเหมือนกันเลย (แต่ที่หลายคนสร้างภาพออกมาไม่เหมือนคนอื่น เพราะเลข Seed ปกติจะ Random ไง)

หลักการทำงานของ AI (คร่าวๆ)

แล้ว AI มันเปลี่ยน Noise ให้กลายเป็นรูปได้ยังไง? หลักการใหญ่คือ สิ่งที่เรียกว่า Diffusion Model ซึ่งขออธิบายแบบง่ายๆ ว่า ปกติ Computer มันใส่ Noise เพิ่มเข้าไปในรูปได้อยู่แล้ว เราจึงสามารถ Train มันให้ปลด Noise ออกจากรูปได้เช่นกัน

ค่อยๆ ปลดออกทีละ Steps เดี๋ยวจนในที่สุด ปลด Noise ไปเรื่อยๆ ก็จะกลายเป็นรูปปกติได้ เจ๋งง

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 2

อย่างไรก็ตามไอ้จุด Noise ตั้งต้นมันเละจนดูไม่รู้เรื่องหรอก (ดู noise ขวาสุดในรูปบนดิ) ดังนั้นตอนมันจะปลดกลับมา มันอาจจะได้กลับคืนออกมาเป็นรูปอะไรก็ได้ทั้งนั้น ซึ่งขึ้นอยู่กับ Prompt หรือคำบรรยายของเรา (เพราะ Model ไม่ได้ถูกเทรนแค่รูปแมวอันนี้ แต่มันเทรนจากคลังรูปมหาศาล อย่างน้อยก็ตัวนี้ https://laion.ai/blog/laion-5b/ ซึ่ง 5b คือ 5 billion หรือ 5 พันล้านรูป!! )

ไอ้ความสามารถในการปลด Noise ออก แล้วกลายเป็นรูปตาม Prompt หรือคำบรรยายของเราเนี่ยแหละ รวมถึงการที่มันจะรู้จัก keyword คำว่าอะไร รู้จักรูปอะไรบ้าง วาดสไตล์ไหนได้บ้าง มันถูกฝึกฝนแล้วเก็บไว้ในสิ่งที่เรียกว่า Model หมดแล้ว

หลักการจริงๆ มันซับซ้อนกว่านี้เยอะ เช่น ข้อความที่เราใส่ มันจะถูกตีความในแบบที่ AI เข้าใจก่อน คือมันรู้ด้วยว่าคำไหนใกล้เคียงกันกับคำไหนในเชิงความหมายจริงๆ (ไม่ใช่แค่จำตัวอักษร)

แถมหลักการเทรนรูปของ AI มันล้ำมากนะ คือคล้ายๆ ว่ามันจะแบ่ง AI เป็น 2 ตัวแข่งกัน ตัวนึงพยายามสร้างรูปให้เหมือนตาม Prompt มากที่สุด ส่วนอีกตัวจะต้องจับผิดให้ได้ว่ารูปที่ได้มา มาจาก AI ทำหรือคือภาพเฉลยจริง ดังนั้นพอมันแข่งไปเรื่อยๆ จนมันเริ่มแยกภาพไม่ออกว่าอันไหนจริงอันไหนปลอม สุดท้ายเราจะได้ AI ที่ Gen ภาพเก่งมากๆ ออกมานั่นก็คือ AI วาดรูปนี่แหละ

รวมถึงใน Stable diffusion เองก็มีเทคนิคเพิ่มจาก AI วาดรูปทั่วไปอีก นั่นคือเทคนิคที่เรียกว่า Latent Diffusion Model การแปลงรูปให้อยู่ในรูปแบบที่เล็กลงจนจัดการง่าย (Encode) แล้วสามารถแปลงรูปที่ถูกดัดแปลงให้กลับมาใหญ่เหมือนภาพดั้งเดิมได้อย่างน่าอัศจรรย์ (Decode)

Stable Diffusion จึงเป็น AI วาดรูปที่สามารถรันได้บนคอมพิวเตอร์คนทั่วไปได้ (แทนที่จะต้องรันใน Server โหดๆ แบบ Dall-E หรือ Midjourney) ประกอบกับความ Open Source อีกทำให้คนจำนวนมากเข้าถึงมันได้ ซึ่งนี่แหละคือปัจจัยพลิกเกม ที่ทำให้ Stable Diffusion พัฒนาเร็วและมี Model หลากหลายมากๆ ในปัจจุบัน (และน่าจะพัฒนาแบบเร็วโหดมากๆ ต่อไปด้วย)

ทั้งหมดนี้น่าจะเป็นหลักการสำคัญเบื้องต้นที่คุณควรจะรู้ไว้ว่า AI มันวาดรูปได้ยังไง ซึ่งแน่ๆ คือ มันไม่ได้ Copy รูปของใครเก็บไว้ตรงๆ มันแค่เรียนรู้วิธีสร้างรูปขึ้นมาจาก Noise หรือจุดที่ดูไม่รู้เรื่องเท่านั้น (ถ้าใครอยากรู้หลักการของ AI ละเอียดกว่านี้ จะพยายามสรุปให้อีกที )

สำหรับประเด็นที่ว่า การเทรน AI นั้นเอารูปมาจากไหน ต้องบอกว่าอันนี้แล้วแต่ Model ที่ใข้เลย บาง Model ก็อาจเอารูป Public ที่ถูกต้องมา บาง Model ก็อาจไปเอารูปศิลปินมาใช้ทื่อๆ (ซึ่งอันนี้ไม่ควร) ผมจะขอไม่พูดถึงประเด็นทางกฎหมายและศีลธรรมตอนนี้ละกันนะครับ

พอเข้าใจหลักการคร่าวๆ แล้วเราไปดูวิธีโหลด Model กันดีกว่า

ที่โหลด Model ของ Stable Diffusion

ผมแนะนำ 2 ที่ คือ

เดี๋ยวในบทความนี้เราจะเน้นโหลดจาก CivitAi นะครับ เพราะมี Model สวยๆ เพียบเลย (แต่ถ้าใครอยากโหลดจาก Hugging Face ผมมีวิธีแปะไว้ท้ายบทความนะ)

Model หลัก (Checkpoints)

  • Model หลัก เราจะเรียกมันว่าไฟล์ Checkpoints
    • Model แบบนี้ Train มาจากเครื่องมือที่ชื่อว่า Dreambooth ซึ่งจะเทรนแบบนี้ได้ต้องมี GPU ที่ทรงพลังมากๆ ถ้าคอมพ์เราทำไม่ไหว อาจต้องไปเช่า GPU บน Cloud เอา
    • อย่างไรก็ตาม เราสามารถเอา Model ที่มีอยู่ มาผสมผสานกันตามน้ำหนักที่เราระบุ เพื่อสร้างเป็น Model ใหม่ได้ด้วย เรียกว่าการ Merge Checkpoints ซึ่งอันนี้เครื่องคอมพ์ปกติสามารถทำได้ไม่ยากเลย (เครื่องผมก็กดได้)
  • โดยหลักการคือ Train ทั้ง Model ให้รู้จักเรื่องที่เราอยากสอน ทำให้วิธีนี้ไฟล์ใหญ่มากๆ แต่คุณภาพรูปที่ได้จะถือว่าดีที่สุดเลย
  • ไฟล์ Model หลัก 1 อันอาจใหญ่ประมาณ 3-7 GB ได้เลย ถ้าใครเน็ตไม่แรงก็ต้องรอหน่อย
  • เราจะ Download Model จากที่ไหนก็ได้ มันจะเป็นไฟล์ นามสกุล .SafeTensor หรือ .Ckpt (ถ้ามีให้เลือกทั้งคู่ให้เลือกนามสกุล SafeTensor เพราะปลอดภัยมากกว่า เพราะอีกตัวมีสิทธิ์ที่จะถูกฝัง Script แปลกๆ มาได้ )
  • ไม่ว่าจะโหลด Model จากที่ไหนมา ให้เอาไปไฟล์ที่โหลดเสร็จแล้วไปไว้ที่ Folder ที่ชื่อว่า stable-diffusion-webui\models\Stable-diffusion

Model เสริม

ในส่วนของ Model เสริมนั้น หน้าที่คือ เป็นเหมือน Model ที่เป็น Add in ที่สามารถใช้เสริมเข้าไปใช้ร่วมกับ Model หลักได้ โดยสามารถใช้ Model เสริมหลายๆ ตัวร่วมกันได้ด้วย!!

แต่เจ้า Model เสริมเนี่ยจะมีหลายแบบพอสมควร แต่ผมจะแนะนำแค่ 2 แบบที่เจ๋งสุดดังนี้

  • LoRA (Low-Rank Adaptation) :
    • เป็น Model เสริมที่ให้คุณภาพดีมากๆ ถึงมากที่สุด โดยที่ขนาดไฟล์จะอยู่ที่ประมาณ 100 MB ++ ซึ่งเล็กมากเมื่อเทียบกับ Checkpoints
    • ตัวนี้คือเทคโนโลยีใหม่สุด จิ๋วแต่แจ๋ว
    • โหลดเอาไปไว้ใน stable-diffusion-webui\models\Lora
  • Textual Inversions :
    • เป็น Model เสริมที่ขนาดเล็กสุดๆ (ขนาด 10-100 KB) แต่คุณภาพสู้ LoRA ไม่ได้
    • โหลดเอาไว้ใน stable-diffusion-webui\embeddings

ที่เจ๋งสุดๆ คือ Model เสริมทั้ง 2 ตัวนี้ เราสามารถใช้ Computer ตัวเอง เทรนมันขึ้นมาใช้งานเองได้ เช่น เอารูปหน้าตัวเองใส่เข้าไปเยอะๆ มันก็จะสามารถ Generate หน้าของเราได้เลย แถมเอาไปใช้กับ Model หลักอื่นๆ ได้อีก เช่น จะเป็นภาพแนวการ์ตูน แต่หน้าเป็นหน้าเราก็ได้ สุดยอดมั้ยล่ะ!!

ถ้าใครอยากรู้วิธีเทรน สามารถดูคลิปพวกนี้ได้ (คลิป Eng นะ แต่ทำตามได้เลย ผทก็ดูคลิปนี้แล้วทำได้เลย)

วิธีโหลดจาก Civitai

  • เข้าเว็บ https://civitai.com/ แล้ว Sign Up/Login ให้เรียบร้อย
  • จากนั้น Filter หา Model ประเภทที่ต้องการ เช่น Model หลักเลือก Checkpoint Model เสริมก็อาจจะเลือก LoRA
วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 3
  • ปกติอันที่อยู่บนๆ ดาวเยอะๆ รีวิวเยอะๆ ก็มักจะดี
  • แต่ควรเข้าไปสำรวจรูปประกอบทั้งจากคนสร้าง Model และ คนที่มา Review Model นั้นๆ ด้วยว่าใช่แบบที่ชอบหรือไม่
  • ถ้าอยากจะโหลดตัวไหน ให้กดปุ่ม Download ด้านขวา

ลองโหลด Model มาทดสอบเล่น

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 4

อย่างไรก็ตาม แต่ละ Model อาจมีเรื่อง license ที่แตกต่างกัน ยังไงลองดูด้วยนะครับ ว่าเค้ายอมให้ใช้ Model เค้าทำอะไรบ้าง?

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 5
License ของ ChilloutMix

วิธีการเรียกใช้งาน Model

พอเรา Copy Model ลงใน Folder ตามที่ผมแนะนำแล้ว คือ เอาไว้ใน Folder เหล่านี้

  • Checkpoints (หลัก) : stable-diffusion-webui\models\Stable-diffusion
  • LoRA : stable-diffusion-webui\models\Lora
  • Textual Inversion : stable-diffusion-webui\embeddings

จากนั้น Run ไฟล์ webui-user.bat แล้วเข้า http://127.0.0.1:7860/ เพื่อเข้าหน้า Web UI ตามปกติเลย

ลอง Prompt แบบปกติก่อน

โดยใช้ Model มาตรฐานที่เราโหลดมาแต่แรก คือ sd-v1-4.ckpt

ให้เราลองใส่ Prompt ดังนี้

beautiful thai girl wearing thai university uniform

โดยให้ลองเลือก seed เป็นเลข 123456 เพื่อทำให้ภาพได้เหมือนของผมเป๊ะๆ (แล้วจะได้ไม่เกิดการ Random ภาพไปเรื่อยๆ ไม่เชื่อลอง Generate อีกรอบดูได้ จะได้อันเดิม)

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 6

จะพบว่าภาพที่ได้มันแย่มาก… ทีนี้เราลองมาเปลี่ยน Model กัน

วิธีเลือก Model หลัก

ที่มุมซ้ายบนของหน้าจอ ให้กดปุ่มสีฟ้าเพื่อ Refresh Checkpoint จากนั้นเลือกตัวที่ต้องการ เช่น ผมเลือก chilloutmix_NiPrunedFp32Fix.safetensors

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 7

พอเลือกแล้วต้องรอมันโหลดแป๊ปนึง แล้วลอง Generate ใหม่ โดย prompt เดิม seed เดิม

เราจะพบว่าภาพที่ได้ดูดีขึ้นมาหน่อยแล้ว และนี่ก็จะเริ่มมีความ Sexy โผล่มานิดๆ ละ (เพราะ ChillOutMix มันถูกเทรนมาแบบนั้น) ดังนั้นการเลือก Model นั้นมีผลต่อภาพอย่างแน่นอน

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 8

ถ้าสังเกต การเลือก Model จะเป็น Drop Down List แปลว่า เราเลือก Model หลักได้ตัวเดียวนะ

วิธีเรียกใช้ LoRA

ให้กดที่ Show Extra Networks แล้วเลือก Lora ที่ต้องการ (Search ได้) ดังนี้

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 9

โปรแกรมจะเพิ่ม Text Prompt ให้เราเอง โดยจะมี <lora:ชื่อไฟล์:multipler> โผล่มา
ซึ่ง multipler คือ เลข 0-1 ที่เรากำหนดได้ว่าจะให้ LoRA ส่งผลแค่ไหน

กลายเป็น

beautiful thai girl wearing thai university uniform <lora:thaiUniversity_v10:1>

ถ้าลอง Generate ดู จะได้แบบนี้

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 10

ภาพเปลี่ยนไปเล็กน้อย แต่ยังไม่ได้ชุดนักศึกษาโผล่มา ทั้งนี้อาจเป็นเพราะ LoRA นั้นๆ ต้องทำการเรียก Trigger ด้วย Keywords บางอย่างด้วย เช่น ของ Thai University Uniform จะมี Trigger Words ประมาณนี้

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 11

ดังนั้นเราอาจลองใส่ Trigger Words เข้าไปด้วยในวงเล็บ เพื่อเพิ่มความสำคัญนิดๆ นั่นคือ น้ำหนักเท่ากับค่า 1.1 ซึ่ง

  • การใส่ (keyword) มีค่าเท่ากับ (keyword:1.1)
  • 1.1 ในนี้คือน้ำหนักในการตีความ ซึ่งเกิน 1 ได้ (ไม่เหมือน LoRA ที่ได้แค่ 1 นะ)
  • การใส่ ((keyword)) มีค่าเท่ากับ (keyword:1.21) เกิดจาก 1.1*1.1

แต่เราไว้ลงรายละเอียดพวกนี้ในบทความถัดไปนะ

beautiful thai girl wearing thai university uniform, (white shirt short sleeve), (black tight skirt) <lora:thaiUniversity_v10:1>

ผลจะได้แบบนี้ ซึ่งจะเริ่มมีชุดนักศึกษาโผล่มาแล้ว

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 12

และแน่นอนว่าเราสามารถเรียกใช้ LoRA หลายๆ อันใน Prompt เดียวกันได้ในรูปแบบต่อไปนี้

<lora:ชื่ออันแรก:น้ำหนักแรก>,<lora:ชื่ออันสอง:น้ำหนักสอง>,...

วิธีเรียกใช้ Textual Inversion

เราแค่เรียกใช้โดยใส่ Trigger Words เช่นกัน

เช่น ใส่ว่า ulzzang-6500-v1.1 หรือ (ulzzang-6500-v1.1) ก็ได้ ในที่นี้ผมใส่เป็น (ulzzang-6500-v1.1)

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 13

นี่มันอะไรกัน??? เอิ๊กกกก…

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 14
มี Model แต่ตั้งค่าไม่ดี = ไม่รอด

และเราก็เรียกใช้ Textual Inversion หลายๆ อันใน Prompt เดียวกันได้เช่นกันนะ ก็ Comma คั่นแต่ละตัวไป

ใส่ Model ครบแล้วทำไมยังไม่สวย?

แม้ว่าจะเรียกใช้ Model หลักและรองจนครบแล้ว แต่ทำไมภาพก็ยังออกมาไม่สวย? ทั้งนี้ก็เป็นเพราะยังมีปัจจัยเรื่องอื่นนอกจาก Model อยู่อีกยังไงล่ะ? เช่น

  • การกำหนด Negative Prompt
  • การกำหนดน้ำหนักความสำคัญ เช่น (Keyword:น้ำหนัก)
  • การกำหนด Sampling Methods
  • การกำหนด Sampling Steps
  • และอื่นๆ อีกพอสมควร

เดี๋ยวผมจะลองปรับให้ดูคร่าวๆ ว่าถ้าใส่สิ่งต่างๆ พวกนี้ (โดยลองไม่เปลี่ยนเพิ่ม Prompt ปกติ ยกเว้นเรื่อง Weight) ผลลัพธ์จะเป็นยังไง?

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 15

เราจะพบว่าผลลัพธ์ออกมาดีขึ้นเยอะเลยครับ (ถ้าปรับรายละเอียด Prompt ดีๆ ก็จะสวยกว่านี้อีก)

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 16
มี Model และตั้งค่าเหมาะสม = สวย

อย่างไรก็ตาม ถึงเราตั้งค่าพวกนี้ทั้งหมด แต่ไม่ได้มีการโหลด Model อะไรมาเพิ่มเลย ก็จะผลลัพธ์ก็จะเป็นประมาณนี้ ซึ่งไม่ค่อยสวยเลย และนี่แหละคือความสำคัญของ Model ครับ

วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 17
ไม่มี มี Model แต่ตั้งค่าเหมาะสม = ก็ไม่รอด

ตอนต่อไป

สำหรับตอนต่อไป ผมจะพูดถึงปัจจัยที่เหลือ เพื่อที่จะสร้างรูปให้สวยได้ดั่งใจต่อไปครับ โดยเฉพาะเรื่องการของการเขียน Prompt และการตั้งค่าต่างๆ รวมถึงการใช้ Extension เข้าช่วยเหลือ ใครที่อยากรู้วิธีทำให้ภาพสวยขึ้น พลาดไม่ได้!!

รวมบทความ Stable Diffusion

Model ที่อยากแนะนำ

(ไว้จะมาเพิ่มให้เรื่อยๆ นะครับ)

Civitai

Model หลัก

  • ChilloutMix : เหมาะกับภาพแนวสมจริง สาวหน้าตาน่ารักสไตล์เน็ตไอดอลเอเชีย ซึ่งเป็นหนึ่งใน Model ที่ฮิตสุดๆ เพราะ Gen รูปได้สวยมากๆ (ต้องเปิดโหมด 18+)
  • Protogen x3.4 (Photorealism) เป็นภาพแนวสมจริงนิดๆ ทำรูปได้หลากหลาย
  • Realistic Vision V1.3 : เหมาะกับภาพแนวสมจริง หน้าตาแบบคนทั่วไปในชีวิตจริง ไม่ได้สวยน่ารักแบบ ChillOutMix
  • Deliberate : ทำได้หลายแนว ค่อนข้างยืดหยุ่น
  • Openjourney : รูปภาพสไตล์ของ MidJourney
  • RPG : รูปแนว Fantasy สมจริง

LoRA

(พยายามอย่าเอาไป Gen ให้ผิดลิขสิทธิ์/กฏหมาย/ศีลธรรมนะ)

มีเฉพาะใน Hugging Face

  • anything-v4.0 : Model ที่สามารถ Gen ภาพแนวการ์ตูน Anime ญี่ปุ่นได้ค่อนข้างดี

วิธีโหลดจาก Hugging Face

  • เข้าเว็บ https://huggingface.co/models?other=stable-diffusion
  • เลือก Model ที่ต้องการ แล้วไปที่ Tab ชื่อ Files & Version
  • กดโหลดไฟล์นามสกุล .SafeTensor เพื่อความปลอดภัย
วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2] 18
อบรม In-House Training

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