LoRA (Low-Rank Adaptation) คือ AI model ขนาดเล็กที่ใช้เสริมเข้าไปใน model หลักเพื่อให้สร้างภาพในลักษณะเฉพาะที่ต้องการได้ เช่น สร้างภาพตัวละครที่มีลักษณะเสื้อผ้าหรือท่าทางแบบใหม่ๆ ที่ model หลักไม่เคยถูก train มาก่อน ทำให้ขยายความสามารถของ model หลักได้มากขึ้น
มองซะว่า Model หลักเหมือนศิลปินที่เก่งมาก แล้ว LoRA คือการให้ศิลปินไปฝึกวาดตัวละคร เสื้อผ้า หรือสไตล์ภาพใหม่ๆ มาเพิ่มนั่นเอง แต่จะวาดได้ก็ต่อเมื่อมีการเรียกใช้ LoRA ด้วยเท่านั้น ไม่ได้ฝังการฝึกเข้าไปในโมเดลหลักโดยตรง
โหลด LoRA มาใช้
เราสามารถโหลด LoRA จาก https://civitai.com/models แล้ว Filter หา LoRA ได้
ซึ่ง LoRA นั้นมีหลายแบบมาก ตั้งแต่ตัวละคร เสื้อผ้า ท่าทาง หรือแม้แต่ style ของภาพ
เช่น ในบทความนี้ผมจะใช้ตัวละคร เอลฟ์สาว(แก่) สุดฮิต อย่าง Frieren อันนี้
Frieren (4 Outfits) | Frieren: Beyond Journey’s End : https://civitai.com/models/190315
ให้โหลด LoRA ไว้ที่ …\ComfyUI_windows_portable\ComfyUI\models\loras นะครับ
จะเห็นว่า LoRA มันจะมี Trigger Words ที่เป็น Keyword ที่ถูก Train มาคู่กับการทำ LoRA นั้นๆ เพื่อใช้เรียกลักษณะเด่นของ LoRA นั้นออกมา
สมมติว่าผม Copy Prompt จากตัวอย่างมาใช้เลย ดังนี้
masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
ให้เอาไปใส่ที่ Node ที่เราจะ Prompt เพื่อเรียกลักษณะเด่นออกมา ปกติจะบอกไว้ในคำอธิบาย
แต่จะเห็นว่า Model ที่เราใช้ก็ยังไม่สามารถ Gen ภาพ Frieren ออกมาได้
จะแก้ Prompt ให้ตาย ให้ชัดเจนขึ้นยังไงก็ได้แค่นี้…
portrait shot, masterpiece, best quality, absurdres, 1girl, asian japanese chinese idol 20 yrs old, white purple hair, (FrierenBase:1.25), long hair, (twintails:1.2), earrings,( white capelet, striped shirt:1.15), horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, outdoors, forest
คือไม่มีความเป็น Frieren เลย เพราะ Model หลักของเรามันยังไม่รู้จัก Frieren นั่นเอง
วิธีเรียกใช้ LoRA
จะให้มันรู้จัก Frieren ได้ เราจะต้องเรียกใช้ LoRA ที่โหลดมาก่อน โดยใช้ Node ชื่อ Load LoRA มาต่อจากการ Load Checkpoint นั่นเอง
อันนี้ผมจะกลับมาใช้ Prompt เดิมจากหน้า LoRA คืออันนี้
masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
เมื่อเราโหลด LoRA ที่ต้องการมาแล้ว ขั้นตอนต่อไปคือต้องบอกให้ AI model รู้จักและเรียกใช้ LoRA นั้น ยกตัวอย่างเช่น หากเราต้องการใช้ LoRA ของตัวละคร Frieren ให้ทำตามขั้นตอนดังนี้
- เริ่มจากการโหลด base model หลักที่ต้องการก่อน ด้วย Node “Load Checkpoint”
- ต่อด้วย Node “Load LoRA” โดยเชื่อมเอาท์พุต (output) ของ Load Checkpoint เข้ากับอินพุต (input) ของ Load LoRA แล้วเชื่อมจาก LoRA ไปยัง CLIP Text Encode ต่อ
- ที่ Node Load LoRA ให้เลือกไฟล์ LoRA ที่โหลดมา (Frieren) จากเมนู Select LoRA และปรับค่า Strength ตามต้องการ
- ที่ Node “Prompt” ให้ใส่ keyword ของ LoRA ที่ต้องการเรียกใช้ ปกติจะมีบอกไว้ในคำอธิบายของไฟล์ LoRA ยกตัวอย่างเช่น
- masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
- โดยคำสำคัญที่สุดคือ “FrierenBase” ซึ่งจะเรียกลักษณะเด่นต่างๆ ของ Frieren ใน LoRA ออกมา
- ปรับแต่ง Prompt, Negative Prompt หรือพารามิเตอร์อื่นๆ เพิ่มเติม เพื่อให้ได้ภาพที่ต้องการ เช่น เพิ่มคำอธิบายฉาก, ท่าทาง ฯลฯ
- เมื่อกดปุ่ม Generate จาก Node ใดๆ (ปกติมักเป็น KSampler) model หลักก็จะถูกใช้ร่วมกับ LoRA ที่โหลดไว้ เพื่อสร้างภาพที่มีลักษณะของตัวละคร Frieren ตามที่กำหนดใน prompt
ภาพที่ได้ก็จะมีความเป็น Frieren มากขึ้น แต่ออกมาโคตรน่ากลัวอยู่ 555
ทำไมภาพที่ได้ยังไม่ใช่แบบที่ต้องการ?
บางครั้งเมื่อเราใช้ LoRA ร่วมกับ model หลักแล้ว แต่ภาพที่ได้ยังไม่มีลักษณะตามที่เราต้องการ เช่น ยังไม่เหมือนตัวละคร Frieren เท่าที่ควร ทั้งๆ ที่ใส่ keyword ของ LoRA ลงไปใน prompt แล้ว สาเหตุอาจเกิดจากหลายปัจจัย เช่น
- Model หลักที่ใช้อาจไม่เหมาะสมกับลักษณะของ LoRA เช่น ใช้ model แนว realistic กับ LoRA ที่เป็นอนิเมะ ทำให้ออกมาไม่เข้ากัน
- ค่า Strength ของ LoRA อาจต่ำหรือสูงเกินไป ต้องลองปรับเพิ่มหรือลดดู
- Prompt ยังไม่ชัดเจนพอที่จะบอกลักษณะที่ต้องการ
เบื้องต้น ถ้าเรายังไม่อยากเปลี่ยนโมเดลหลัก ก็ให้ลองปรับ Weight และปรับ Prompt ต่างๆ ดูก่อนว่า Work ไหม ? และอาจลอง ใส่เรื่อง CLIP Skip โดยใช้ Node CLIP Set Last Layer เป็น -2 แบบที่เจ้าของ LoRA แนะนำไว้ด้วยก็ดี
หลังจากลองปลุกปล้ำดู ก็ทำได้มากสุดประมาณนี้ (แบบฝืนๆ) มีการปรับ weight, ปรับ prompt แบบนี้
portrait shot, masterpiece, best quality, absurdres, 1girl, asian japanese chinese idol 20 yrs old, white purple hair, elf ear,(FrierenBase:1.25), long hair, (twintails:1.2), earrings,( white capelet, striped shirt:1.15), horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, outdoors, forest
ผลลัพธ์ก็ออกมาดีขึ้นพอสมควร
ถ้าอยากให้สวยกว่านี้
ต้องใช้ Model หลักที่เหมาะสม
เนื่องจาก LoRA ที่เราใช้เป็น LoRA แบบอนิเมะ เดี๋ยวเราจะลองเปลี่ยนไปใช้ Model อนิเมะไปเลย หรือ Model พวก Semi Realistic ก็จะได้ผลลัพธ์ดีขึ้นกว่าเดิมมาก
เช่น ผมลองใช้ Dream Shaper 8 ที่เป็น Semi Realistic ถ้าไม่มี LoRA จะได้แบบนี้ (เพื่อพิสูจน์ว่า Dream Shaper ไม่รู้จัก ตัวละคร Frieren)
แต่ถ้าเราเรียกใช้ LoRA ด้วย ก็จะได้ผลลัพธ์ออกมาสวยขึ้น และเหมือน Frieren ขึ้นมากเลย
ใช้หลาย Model ต่อเนื่องกัน
ซึ่งถ้าอยากให้สมจริงขึ้น Upscale แล้ว Gen แก้ด้วย Model Realistic อีกรอบ เช่น อาจเอาไปเข้า NN Latent Upscale นิดหน่อยแล้ว ส่งเข้า K-Sampler ที่ต่อกับ DreamShaper ก็ได้แล้ว (ผมเริ่มใช้ความรู้บทก่อนๆ มาประยุกต์แล้วนะ) เช่น
แค่นี้ก็จะได้ Frieren แบบสมจริงละ
Gen เล่นอย่างสนุกสนาน
ตอนนี้มันรู้จักตัวละคร Frieren แล้ว ดังนั้นเราจะ Gen อะไรเล่นอะไรก็เล่นต่อไปได้ แต่ว่าต้องนำไปใช้ให้ถูกต้อง แบบ Fair use เพราะตัวละครนี้มีลิขสิทธิ์ครับ ห้ามนำไปใช้เชิงพาณิชย์นะ
ถ้าใช้ Model แนวอนิเมะ อย่าง MeinaMix ก็จะสวยไปอีกแบบเลย
ใช้ LoRA หลายตัวร่วมกัน
ถ้าเราอยากใช้ LoRA หลายตัวร่วมกัน เราสามารถใช้ Node Load LoRA ต่อกันหลายๆ ทอดก็ได้ หรือจะใช้ Custom Node พวกที่มี LoRA Stacker ก็ได้
เช่น Lora Loader Stack ตัวนี้ ก็จะใส่ได้ทีเดียว 4 ตัวใน Custom Node กล่องเดียวไปเลย แต่เราก็ต้องใส่ Strength ของแต่ละ LoRA ให้เหมาะสมด้วย เพราะถ้าใส่แรงมากทุกตัว รูปอาจจะออกมาพังได้
คลิปสอน
เทคนิคการใช้ LoRA ให้ได้ภาพที่ดี
- เลือกใช้ model หลักที่เหมาะสมกับ LoRA เช่น LoRA อนิเมะควรใช้กับ model อนิเมะหรือ semi realistic
- ถ้ารูปออกมาแปลกๆ ลองปรับลด Strength ของ LoRA ลง หรือเพิ่ม Prompt ให้ชัดเจนขึ้น
- สามารถใช้ LoRA หลายอันร่วมกันได้ โดยต่อ Node “Load LoRA” ไปเรื่อยๆ หรือใช้ Custom Node อย่าง “Lora Loader Stack” เพื่อ Load หลาย LoRA พร้อมกัน
- หลังจากได้ภาพแล้ว สามารถเอาไป upscale หรือ generate ต่อด้วย model อื่นๆ เพื่อเพิ่มความสมจริงได้อีก
การใช้ LoRA อาจต้องอาศัยการลองผิดลองถูกบ้าง ปรับค่าไปเรื่อยๆ จนกว่าจะเจอภาพที่ถูกใจ ไม่มีสูตรสำเร็จตายตัว ต้องใช้ความชำนาญและความเข้าใจในการทำงานของมันพอสมควร โดยเราสามารถศึกษาเพิ่มเติมจากตัวอย่างผลงานหรือ prompt ต่างๆ ที่มีคนแชร์ไว้ในชุมชนได้
สรุป + ตอนต่อไป
LoRA เป็นตัวช่วยเสริมที่ทรงพลังให้กับ AI model ทำให้สร้างภาพในแบบที่หลากหลายและตรงใจผู้ใช้มากขึ้น แถมยังปรับใช้ได้ง่าย ลองนำไปใช้กับงานของคุณดูนะครับ รับรองว่าสนุกและได้ภาพสวยๆ แน่นอน
หากชอบบทความนี้ อย่าลืมติดตามตอนต่อไปที่จะพูดถึงการใช้งาน SDXL ซึ่งเป็น model ที่มีความสามารถสูงกว่า SD 1.5 มาก และสามารถใช้ร่วมกับ LoRA บางตัวเพื่อเร่งความเร็วในการสร้างภาพได้ด้วย
ถ้าใครอยากรู้ก็รอติดตามตอนต่อไปได้เลยครับ ในตอนหลังๆ เมื่อรู้จักพวก IP Adapter แล้วคุณจะมีความรู้พอที่จะเอานางแบบคุณไปใส่ชุดแบบนี้เลยก็ได้