บทความนี้จะเป็น “การทดลองทำความเข้าใจ” AI วาดรูปที่ชื่อว่า MidJourney (ใช้งานผ่าน Discord) โดยเป็นสิ่งที่ผมได้เรียนรู้มาจากการอ่านและการทดลองทำด้วยตัวเองนะครับ หวังว่าจะมีประโยชน์กับคนที่กำลังเรียนรู้การสั่งการให้ตรงใจมากขึ้นนะ
ในบทความนี้จะไม่มีการสอนการเรียกใช้งานทั่วไปซึ่งตอนนี้เรื่องพวกนี้น่าจะสามารถหาดู Tutorial ได้ง่ายๆ แล้ว แต่บทความนี้จะเน้นไปที่การเจาะลึกไปที่ Prompts หรือตัวคำสั่งที่เราสั่งหลังจาก /imagine นี่แหละ
สารบัญ
ข้อมูลเบื้องต้นที่ควรศึกษาก่อน
เบื้องต้น ผมแนะนำให้เพื่อนๆ ที่ยังไม่เคยใช้งานไปหัดใช้งานเบื้องต้นก่อนนะครับ เพราะผมจะไม่ได้พูดถึงเรื่องพื้นฐานทั่วไปในบทความนี้นะ ใครอยากรู้จัก Parameter ต่างๆ ว่าส่งผลยังไงให้ไปอ่าน บทความหลักอันนี้ในเว็บของ MidJourney อันนี้ได้เลย มีรูปประกอบดีอยู่แล้ว
สรุปองค์ประกอบของ Prompt ที่ใช้สั่งงาน
ซึ่งถ้าไปอ่านจะพบว่าโครงสร้างหลักของ Prompts จะมีอยู่ 3 ส่วนดังรูปนี้

- ส่วนแรก คือ Image Prompt สามารถใช้เป็น “แรงบันดาลใจ” ให้กับ MidJourney ได้
- ซึ่งเราสามารถใส่เป็น URL (ที่อยู่เว็บ) ที่ Link ไปหารูป (
.png
หรือ.jpg
) - โดยสามารถใส่หลายรูปก็ได้ด้วยนะครับ แค่เว้นวรรคแล้วใส่ URL ไปเรื่อยๆ
- ถ้ามีแต่รูปในเครื่องคอมพ์ ก็ให้ Upload ขึ้น Discord ก่อนแล้วคลิ๊กขวา copy link เอา URL มาก็ได้
- อย่างไรก็ตาม มันไม่ได้เอารูปมาสร้างต่อตรงๆ แต่เป็น “แรงบันดาลใจ” แค่ส่วนหนึ่งของคำสั่งรวมกับ Text Prompts เท่านั้น
- ปกติ Image จะมี Weight ที่ 0.25 เมื่อเทียบกับ Text Prompt ปกติที่มี Weight 1 นั่นคือ Image Prompt จะส่งผลที่ 20% เท่านั้น แต่เราสามารถปรับ Image Weights ได้ ด้วย parameter –iw number นะครับ
- ซึ่งเราสามารถใส่เป็น URL (ที่อยู่เว็บ) ที่ Link ไปหารูป (
- ส่วนที่สอง คือ Text Prompt ตรงนี้สามารถใส่คำบรรยายต่างๆ ได้มากที่สุด 60 คำ และไม่เกิน 6000 อักขระ ตัวพิมพ์เล็กพิมพ์ใหญ่ไม่มีผลใดๆ ทั้งสิ้น ซึ่งในส่วนนี้เราสามารถใส่ตัวคั่นต่างๆ ได้มากมายหลายแบบด้วย เช่น , + :: ซึ่งผมจะพูดในรายละเอียดต่อไปอีกที เพราะส่วนนี้แหละที่มีรายละเอียดเยอะมาก โดยเฉพาะการกำหนด Weights หรือน้ำหนักให้กับคำสั่งแต่ละชุด
- ส่วนสุดท้าย คือ Parameters พวกนี้จะขึ้นต้นด้วยเครื่องหมาย — ซึ่งมีหลายคำสั่งมากๆ ซึ่งอันนี้ไม่ใช่ List ที่ครบทั้งหมด แต่ผมเอามาแค่ที่ใช้ให้ดูในบทความนี้นะครับ ถ้าอยากรู้ทั้งหมดให้ไปอ่านในบทความหลักอันนี้ในเว็บของ MidJourney เองนี้เอานะครับ
- –stop number ให้หยุดการ gen รูปที่ percent ที่กำหนด (เพื่อที่จะได้รูปที่ไม่ละเอียดเกินไป)
- –seed number กำหนดเลข seed ที่ใช้ในการ Random รูปออกมา ซึ่งจะทำให้การ Gen แต่ละรอบ ค่อนข้างได้รูปที่ไม่ต่างจากเดิมมาก
- –sameseed number กำหนดเลข seed ตอนที่สร้างรูป 4 รูป ให้เป้นอันเดียวกัน ดังนั้นรูป 4 รูปจะออกมาคล้ายกันมากๆ
- –ar h:w กำหนดสัดส่วน Aspect Ratio ของรูป (ใช้แทน –w กับ –h ได้)
- –no xxx yyy คือการกำหนดให้ในรูปไม่มีสิ่งที่ระบุ (ทำให้รูปตรงใจมากขึ้น แต่ว่าใช้กับคำต้องห้ามไม่ได้ เช่น –no dress ไม่ได้)
- –iw number (ถ้าไม่กำหนด สัดส่วนของ image prompt จะอยู่ที่ 0.25 หรือ 25%)
- –video คือ สั่งให้มันบันทึกการ Gen รูปเป็น Video ไว้ด้วย และถ้าเราส่ง Emoji จดหมายหามัน มันจะส่งคลิปวีดีโอกลับมาให้
เทคนิคพิมพ์ Parameter สำหรับ iPhone
ใน iPhone ถ้าเราพิมพ์ — (ขีด 2 ทีติดกัน) บางทีมันมักจะแปลงให้เป็น ขีดเดียวยาวๆ ให้โดยอัตโนมัติ (ซึ่งใช้ไม่ได้) ให้เราไปปรับค่าใน Setting –> General –> Keyboards –> ปิด Smart Punctuations ซะ จะสะดวกขึ้นมากๆ

ทำไมสั่งด้วย Prompts ที่เหมือนกัน แต่ให้ผลลัพธ์ไม่เหมือนกัน?
เพื่อนๆ งงมั๊ยว่า สมมติเราไปรู้ Prompt เจ๋งๆ ของคนอื่นมา เช่น ผมไปแอบดูรูปที่คนอื่นทำใน Community Feed (ที่รวมผลงานเจ๋งๆ แต่เราต้องเป็นสมาชิกเสียเงินถึงจะดูได้นะ ) แล้วชอบ ก็เลยจะจิ๊ก Prompt หรือแม้แต่ Command ที่เค้าใช้มาลองบ้าง
เช่น ผมชอบรูปนี้ (จาก Link นี้) เลย Copy Command โดยกด … แล้ว Copy Command มาแบบนี้

แล้วได้คำสั่งนี้มา
sui ishida art manga, female Samurai, Symatrical, dark atmospheric lighting, volumetrics, manga style, artstation, symetric, lineart --ar 9:16
แต่พอเอาไปสั่งเอง ได้รูปอะไรไม่รู้ ไม่เห็นจะมีความคล้ายรูปนั้นเลย? แถมลองรันตั้งหลายรอบก็ยังไม่ได้ (แถมไม่เหมือนกันซักรอบ)



ค่อยๆ ทำความเข้าใจ
ผมจะอธิบายหลักการทำงานของมันให้ฟัง ว่าทำไมเราถึงไม่ได้รูปเหมือนของเค้า (ที่เราก๊อปมา) ขอเอาตัวอย่างที่ Simple มากๆ ก่อน เช่น สีแดงกับเหลือง
สมมติว่าผมส่ง MidJourney ด้วย Promt ง่ายๆ เช่น
red , yellow
แต่ผลลัพธ์แต่ละครั้งที่มัน Gen จะไม่เหมือนกัน เช่น จะได้ 2 ชุดนี้ออกมา


ที่เราได้ผลลัพธ์ไม่เหมือนกัน เป็นเพราะการ Gen แต่ละครั้งนั้นมีจุดเริ่มต้นของการ Random ที่เรียกว่า “seed” ที่แตกต่างกัน
ถ้าใครอ่านวิธีการสั่ง parameter จะพบว่าเราสามารถกำหนดเลข seed ของการ Gen ได้ สมมติผมสั่งให้เป็น –seed 1 ทั้งสองรอบ เราจะได้รูปที่คล้ายกันขึ้นมาก ดังนี้
red, yellow --seed 1


เราจะเห็นได้ว่าลักษณะการวางสีแทบจะเหมือนกัน มันต่างกันที่รายละเอียด ดังนั้นถ้าเราสั่งให้หยุดการ Gen ไว้ก่อนจบ จะเห็นได้ชัดเลยว่าตอนแรกมัน Random ออกมาเหมือนกัน เช่น อันนี้ผมสั่งหยุดที่ 20% จะพบว่าการ Gen 2 รอบคล้ายกันมากๆ
red, yellow --seed 1 --stop 20


ซึ่งถ้าดูเป็นภาพเคลื่อนไหว โดยใส่ –video แล้วสุดท้ายให้ dm หา bot มันจะส่งวีดีโอกลับมาให้ จะเห็นผลเป็นดังนี้
อันหลังใช้ –sameseed จะเห็นว่า แม้จุดเริ่มต้นแทบจะเหมือนกัน 100% แต่ผลตอนจบก็สามารถแตกต่างกันได้อยู่ดี (ดังนั้นผลก็ขึ้นกับโชคด้วยในระดับนึง)
red, yellow --seed 1 --video
แปลว่าเราควรจะ Gen หลายๆ รอบ จนกว่าจะได้รูปที่ใกล้เคียงกับสิ่งที่ต้องการ แล้วพยายามหาเลข Seed ของมันให้ได้ เพื่อที่จะ Gen ให้ได้ตัวที่ใกล้เคียงภาพชุดนั้นอีกรอบ (ซึ่งเท่าที่ผมลอง มัน Work กว่าการกด V มากๆ เพราะ V ชอบออกมาเบี้ยวๆ บูดๆ)
วิธีหาเลข seed
เราสามารถรู้เลข seed ของรูปใดๆ ที่เราทำก็ได้ ด้วยการส่ง DM ไปหา MidJourney Bot ในรูปที่มันต้องการ มันจะส่งเลข Seed กลับมาให้ทาง Message ครับ
เช่น ผม gen ด้วย prompt แบบนี้ 2 รอบ แบบไม่กำหนด seed เลย
woman , wolf
ปรากฎว่าผมได้ 2 set นี้มา (ซึ่งคนละ seed กันแน่นอน)


ทีนี้ถ้าผมอยากรู้ว่าภาพชุดแรก seed อะไร ผมสามารถส่ง Emoji รูปจดหมายไปหา MJ Bot ได้ แบบนี้


ทีนี้ถ้าผมลอง Gen ด้วย seed ที่มันส่งให้มา ผมจะได้ผลลัพธ์ใกล้เคียงอันแรกมากๆ ลองเทียบกันได้


สรุปสาระ…
การ Gen ภาพ ด้วย MidJourney แต่ละครั้งจะไม่มีทางได้ผลลัพธ์เหมือนกัน 100% แม้จะใช้คำสั่งเดิมเป๊ะๆๆๆ มันจะมีการ Random อยู่ในระดับนึงเสมอ แม้จะใช้ seed เดียวกันก็ตามนะครับ แต่ว่าเราก็สามารถทำให้มันคล้ายเดิมมากๆ ด้วยการ Gen หลายๆ ที จนกว่าเราจะเจอ Seed ที่เราค่อนข้างชอบ แล้วสั่งให้รัน Seed นั้นอีกหลายๆ รอบได้เลย จนกว่ามันจะ Perfect
สรุป เรื่อง Text Prompts
- ตัวพิมพ์เล็กพิมพ์ใหญ่ไม่มีผลใดๆ ทั้งสิ้น (มีระบุในคู่มือ)
- ตัวคั่นแต่ละตัว ให้ผลไม่ต่างกันมากในการ Gen ภาพตั้งต้น เช่น space comma + – หรือ :: (อันนี้จากการทดสอบ)
- ยกเว้นคำว่า and (อาจรวมถึง &) อันนี้ค่อนข้างให้ผลต่างมากๆ คิดว่ามันตีความว่าไม่ใช่ตัวคั่น แต่เป็นการบังคับให้มีวัตถุหลายอัน
ลองดูผลการทดลองข้างล่างนี้ได้ครับ ว่าเห็นด้วยกับที่ผมสรุปหรือไม่?…
ผลของการใช้ตัวคั่นแบบต่างๆ (Gen อย่างละ 2 รอบ)
Space (เว้นวรรคเฉยๆ)
woman wolf --seed 1 --video
comma
woman , wolf --seed 1 --video
เครื่องหมาย +
woman + wolf --seed 1 --video
เครื่องหมาย :: (hard break)
woman :: wolf --seed 1 --video
เครื่องหมาย &
woman & wolf --seed 1 --video
คำว่า and
(อันนี้ต่างจากตัวคั่นอื่นๆ อยากชัดเจน ว่าให้แยกออกมา 2 สิ่ง)
woman and wolf --seed 1 --video
ทดลองเล่นๆ
ผลลัพธ์ของการ Gen ด้วยตัวคั่นต่างๆ แล้วให้ Stop ที่ 10% ตอนแรกจะแทบไม่ต่างกันเลย






ผลลัพธ์ของการ Gen ด้วยตัวคั่นต่างๆ แล้วให้ Stop ที่ 20% จะเริ่มเห็นความต่างแล้ว (โดยเฉพาะ & กับ and ที่จะไม่เหมือนตัวอื่น)






ผลลัพธ์ของการ Gen ด้วยตัวคั่นต่างๆ แล้วให้ Stop ที่ 50% อันนี้จะมีบางตัวต่างออกมาชัดเจน






ผลลัพธ์ของการ Gen ด้วยตัวคั่นต่างๆ แล้วให้ Stop ที่ 80%






ผลลัพธ์ของการ Gen ด้วยตัวคั่นต่างๆ แล้วปล่อยให้สำเร็จ 100%






การใช้ Image Prompt
เราสามารถใช้ Image Prompt มาช่วยให้เกิดผลลัพธ์ที่ตรงใจมากขึ้นได้ ซึ่งใน Community Feed หลายๆ อันก็เป็นแบบนั้น เช่น
รูปซ้ายสุดนี้ (จาก link นี้ ) ถ้าเราไล่ที่มาไปเรื่อยๆ เราจะพบว่ามีการใช้ Image Prompt ช่วยด้วยเช่นกัน



ซึ่งคำสั่งที่ทำให้ได้ 4 รูปกลางคืออันนี้ (เราจะพบว่าใน Code กำหนด Weight ของรูป Image Prompt เป็น 1 ซึ่งจะมีอธิบายอีกที)
<https://s.mj.run/emIdpdisrpM> a 2d illustration of a female warrior in armor, full body character concept, anime style, by hideo minaba, pixiv, artstation, granblue fantasy --iw 1 --ar 10:16 --q 2
ถ้าผมเอาไปรันบ้างจะได้แบบนี้ เทียบกันจะๆ แบบมี Image Prompt กับไม่มี ซึ่งจะพบว่าถ้าผมไม่ได้ใช้ Image Prompt นี่ผลลัพธ์ออกมาเป็นคนละคนกันเลย 555


สรุปการใช้ Advance Text Weights ด้วย ::
แม้ว่าเนื้อหาข้างบนผมบอกว่าตัวคั่นแต่ละตัวจะให้ผลคล้ายๆ กัน อย่างไรก็ตาม ตัวคั่น Hard Break คือ :: (Colon 2 อันติดกัน) จะมีความสามารถพิเศษ คือ เป็นตัวช่วยกำหนด Weights หรือน้ำหนักความสำคัญของ keyword ได้ ซึ่งถ้าเรียนรู้ตัวนี้ดีๆ จะช่วยให้สร้างภาพที่ตรงใจมากขึ้นได้ ดังนี้
ใน Text Prompts เราสามารถใส่ตัวคั่น Hard Break ได้หลายตัว โดยเราสามารถกำหนดความสำคัญให้แต่ละคำ แยกกันได้ โดย ใส่เลข weights ลง หลังเครื่องหมาย :: (แบบห้ามเว้นวรรค) เช่น
word1 ::weight1 word2 ::weight2 word3 ::weight3
แต่ถ้าไม่ใส่เลขใดๆ จะได้ Weights 1 โดยอัตโนมัติ
woman :: wolf :: tree
จะได้ผลลัพธ์แบบนี้ เพราะทุกตัว Weight 1 เท่ากันหมด มันจะดูปนๆ กันนัวๆ หน่อย (ลองรัน 2 รอบ)
แต่ถ้าเราระบุเลข Weight ตัวอย่างเช่น
woman :: wolf ::5 tree ::4
แปลว่า จากน้ำหนักรวม 1+5+4 =10…
- woman ไม่ระบุ = ได้น้ำหนัก 1 นั่นคือ 1/10 = 10%
- wolf ได้น้ำหนัก 5 นั่นคือ 5/10 = 50%
- tree ได้น้ำหนัก 4 นั่นคือ 4/10 = 40%
woman :: wolf ::5 tree ::4
woman ::5 wolf ::1 tree ::4
แปลว่า จากน้ำหนักรวม 5+1+4 =10…
- woman ได้น้ำหนัก 5 นั่นคือ 5/10 = 50%
- wolf ได้น้ำหนัก 1 นั่นคือ 1/10 = 10%
- tree ได้น้ำหนัก 4 นั่นคือ 4/10 = 40%
woman ::5 wolf ::1 tree ::4
ซึ่งน้ำหนักสามารถใส่เลขทศนิยมได้ และติดลบได้ด้วย (ติดลบ คือ ในภาพไม่ควรมีสิ่งนั้น ) เช่น moon ::-0.5 มีผลเท่ากับ –no moon
woman :: wolf :: tree :: moon ::-0.5 --seed 1 --video
woman :: wolf :: tree :: moon ::-0.5 ground::-0.5 --seed 1 --video
อย่างไรก็ตาม Weights รวมทั้งหมดของ Prompts ทุกอัน ห้ามติดลบนะครับ เช่นใส่ว่า xxx ::0.2 yyy ::-0.5 แบบนี้ไม่ได้นะ เพราะรวมกันได้ -0.3
ถ้ามี Image Prompt ด้วย
และถ้ามี Image Prompt ด้วย ก็จะมีผลกับ Weight เช่นกัน ซึ่งกำหนดได้โดยค่า –iw เช่น
เราสามารถกดปุ่ม + เพื่อ Upload Image เข้า Discord เพื่อเอามาเป็น Image Prompt ได้นะ จากนั้นให้คลิ๊กขวาแล้ว Copy Link



ผลที่ได้คือแบบนี้
https://cdn.discordapp.com/attachments/1004932439333928981/1009096482529489016/seal-4923333_1920.jpg woman :: wolf ::5 tree ::4 --iw 10 --seed 1 --video
อันนี้เน้นรูปแมวน้ำ และ หมาป่า และต้นไม้
แปลว่า จากน้ำหนักรวม 1+5+4+10 =20…
- woman ได้น้ำหนัก 1 นั่นคือ 1/20 = 5%
- wolf ได้น้ำหนัก 1 นั่นคือ 5/20 = 25%
- tree ได้น้ำหนัก 4 นั่นคือ 4/20 = 20%
- image prompt = ได้น้ำหนัก –iw 10 นั่นคือ 10/20 = 50%
https://cdn.discordapp.com/attachments/1004932439333928981/1009096482529489016/seal-4923333_1920.jpg woman ::5 wolf ::1 tree ::4 --iw 5 --seed 1 --video
อันนี้เน้นรูปแมวน้ำ และ ผู้หญิง และต้นไม้
แปลว่า จากน้ำหนักรวม 5+1+4+5 =15…
- woman ได้น้ำหนัก 5 นั่นคือ 5/15 = 33.33%
- wolf ได้น้ำหนัก 1 นั่นคือ 1/15 = 6.67%
- tree ได้น้ำหนัก 4 นั่นคือ 4/15 = 26.67%
- image prompt = ได้น้ำหนัก –iw 5 นั่นคือ 5/15 = 33.33%
Tips: วิธี Copy Link รูปกรณีที่ใช้มือถือ
ให้จิ้มที่รูปค้างไว้ แล้วเลือก Copy Media Link ได้เลยครับ

สัดส่วนรูปมีผลยังไง?
สัดส่วน Aspect Ratio ของรูป นั้นส่งผลต่อผลลัพธ์สุดท้ายอย่างชัดเจน (แม้ตอนแรกจะดูคล้ายกัน) เรามารถดูได้จากคลิปนี้
ดังนั้นเราต้องคิดให้ดีว่าผลลัพธ์สุดท้ายเราต้องการรูปแนวไหนมากกว่ากัน เช่น แนวนอนจะเหมาะกับภาพที่มีวิวเยอะๆ แนวตั้งเหมาะกับภาพคนหรือตัวละครมากกว่า เป็นต้น
จะสมัครแบบจ่ายตังทำไง?
อ่านมาถึงตรงนี้หลายคนคงเริ่มรู้ตัวแล้วว่า ยังไงการใช้แบบฟรีมันไม่มีทาง Gen รูปได้ถึงระดับที่เราพอใจได้แน่ๆ เพราะมันมีปัจจัยเรื่องโชคและการ Random อยู่พอสมควร ดังนั้นถ้าใครสนใจสมัครแบบจ่ายเงิน กดสามารถพิมพ์คำสั่งนี้ได้
/subscribe
มันจะมี Link พาไปเว็บที่มีรายละเอียดการจ่ายเงินเลยครับ ซึ่งหลักๆ ถ้าเป็นของคนปกติจะมี 2 แบบ
- Basic : 10$ ต่อเดือน
- ได้เวลา gpu-minutes 200 นาที ต่อเดือน
- นั่นคือ gen ได้ “ประมาณ” 200 ครั้ง (โดยเฉลี่ยมัน Gen รูปนึงใช้เวลา 1 นาที) เพราะโควต้ามันไม่ได้นับเป็นรูป แต่นับเป็นเวลา
- Standard : 30$ ต่อเดือน
- ได้เวลา gpu-minutes 15 ชั่วโมง ต่อเดือน (โหมด Fast) แต่ถ้าสลับเป็นโหมด Relax จะใช้ได้ Unlimited ครับ
- อย่างไรก็ตาม Max Upscale ต้องใช้ Fast Mode เท่านั้น
- ถ้าใช้ Fast Mode จนหมดโควต้า สามารถจ่ายซื้อเพิ่มเป็นรายชั่วโมงได้
เราสามารถดูสถานะปัจจุบันได้ด้วยคำสั่งนี้
/info
เช่นอันนี้ของผม ณ ตอนนี้ (ใช้มาตั้งแต่ 5 สค. – 17 สค. 2022 นั่นคือประมาณ 11 วัน Gen ไปพันกว่ารูป)

จะเห็นว่ามีโควต้า Fast ทั้งหมด 15 ชม. จริงๆ และตอนนี้เหลือ 7 ชม. กว่าๆ เอง (เพราะตอนแรกไม่รู้ว่ามีโควต้านี้ และควรปรับเป็นโหมด /relax ถ้าไม่รีบ 555)
ดังนั้นถ้าไม่ติดขัดเรื่องเงินมากนัก แบบ 30$ คุ้มกว่ามากๆๆๆ ครับ ถ้าใช้แบบ 10$ นี่คือหมดไปเป็นชาติแล้ว
ก่อนจากลา
สุดท้ายนี้ สำหรับบทความนี้ผมขอจบเท่านี้ก่อน แม้ว่าผมก็ยังต้องทดลองต่อไปอีกหลายอย่างจึงจะเข้าใจมันลึกซึ้งมากขึ้น แต่อยากรีบเอามาแชร์ก่อนเผื่อจะเป็นประโยชน์กับเพื่อนๆ ครับ ถ้าผมรู้อะไรดีๆ เพิ่มจะเอามาพิมพ์เพิ่มให้เรื่อยๆ นะ
ถ้าใครรู้เทคนิคอะไรดีๆ ก็ Comment บอกได้เลยนะ
Leave a Reply to สอนใช้ ComfyUI EP01 : วิธีการติดตั้งและสร้างรูป AI แรก – aixmarketing.net Cancel reply