ในตอนที่แล้วเราได้สามารถเทรนหน้าตัวเองเป็น LoRA ได้แล้ว ในตอนนี้เราจะลองเอาหน้าตัวเองมา Gen ยืนคู่กับสาวด้วย Stable Diifusion กันครับ หรือจริงๆ บทความนี้ก็คือการสอน Gen ตัวละครมากกว่า 1 ตัวแบบเรากำหนดหน้าตาแต่ละตัวได้นั่นเองครับ ซึ่งเราจะมีการใช้เครื่องมือ Latent Couple และ Composable LoRA มาช่วยด้วยครับ
สมมติว่าตัวผมเองอยากยืนคู่กับ Lucy ใน Cyber Punk Edge Runner ที่ชายหาด ซึ่งเราสามารถไปโหลด LoRA ของ Lucy มาได้ที่นี่
สารบัญ
รวมบทความ Stable Diffusion
- วิธีใช้งาน AI สร้างรูปสุดเจ๋งและฟรีด้วย Stable Diffusion ฉบับมือใหม่ [ตอนที่1]
- วิธีเรียกใช้งาน Model เจ๋งๆ ใน Stable Diffusion [ตอนที่2]
- วิธีสั่ง Prompt และตั้งค่าใน Stable Diffusion ให้รูปสวยโดนใจ [Part3]
- วิธีกำหนดท่าทางแบบให้ได้ดั่งใจด้วย ControlNet ใน Stable Diffusion [Part4]
- สอน Train Model ตัวเองใน Stable Diffusion [Part5]
- สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6]
- วิธีผสม Model สูตรผสมแบบโดนใจใน Stable Diffusion [Part7]
- เจาะลึก ControlNet ใน Stable Diffusion [Part8]
- วิธีสร้างผลงานอันน่าทึ่งด้วย Krita AI และเทคนิคต่อ iPad
- สอนใช้ ComfyUI EP01 : วิธีการติดตั้งและสร้างรูป AI แรก
- สอนใช้ ComfyUI EP02 : กระบวนการสร้างภาพ AI และ Node พื้นฐาน
- สอนใช้ ComfyUI EP04 : Image to Image และเทคนิค Smart Inpaint
- สอนใช้ ComfyUI EP05 : การ Upscale ภาพให้ใหญ่และชัดขึ้น
- สอนใช้ ComfyUI EP06 : เพิ่มพลังควบคุมภาพ AI ด้วย ControlNet
- สอนใช้ ComfyUI EP07 : ปรับปรุง Model ด้วย LoRA
- สอนใช้ ComfyUI EP08 : ยกระดับไปสู่ SDXL + เทคนิค Gen เร็วสายฟ้าแลบ
- สอนใช้ ComfyUI EP09 : IPAdapter สุดยอดเครื่องมือสั่งงานด้วยภาพ [ฉบับปรับปรุง]
- สอนใช้ ComfyUI EP10 : เปลี่ยนเสื้อผ้าให้ได้ดั่งใจ
- สอนใช้ ComfyUI EP11 : กำหนดหน้าตาแบบให้ได้ดั่งใจ
ลอง Generate แบบตรงๆ
หากเราพยายามจะ Generate รูปแบบตรงไปตรงมา เช่น เขียนว่าต้องการ ผู้ชาย 1 คน ผู้หญิง 1 คน แต่ละคนเป็นยังไง…
prompts
(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (Beautiful beach and blue sky), (1man+1girl),
(SiraEkabut Man with red brown hair), (smile), (slim body), (white collar shirt:1.3) <lora:SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003:0.71>,
(lucy \(cyberpunk\):1.2),(eyes looking at viewer:1.4), black tight suit, black leotard, black pants, (detached sleeves), pouch, (white hair), (asymmetric hair), (short hair), (multicolor hair), (bang:1.2), (beautiful detailed hair) , red eyeliners, short shorts<lora:lucyCyberpunk_35Epochs:0.8>
negative prompts
paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, ((monochrome)), ((grayscale))
ก็จะได้ผลลัพธ์ประมาณว่า มัน Generate หน้าผมไปใส่ชุด ใส่ทรงผมของ Lucy รวมแล้วกลายเป็นสิ่งมีชีวิตที่น่ากลัวสุดๆ ไปเลย 555 (ขออนุญาตไม่เอารูปเต็มมาใส่นะ รับไม่ได้ 555)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 2](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-006-1024x360.png)
ดังนั้นเราจะพบว่ามัน Generate แบบตรงไปตรงมาไม่ได้!! เพราะมันจะเอา LoRA 2 อันปนกัน แถมตัวละครก็ยังปนกันด้วย
สมมติว่าผมพยายามจะใช้ ControlNet มาช่วย เพื่อให้เกิดการแยกเป็น 2 คน โดยใช้รูปต้นแบบประมาณนี้ (เอามาจาก https://www.pexels.com/photo/brunette-woman-posing-with-man-in-suit-15149359/) (ถ้าไม่มีรูปต้นแบบ คุณ Gen รูป AI ตัวละครทั่วไปมาเป็นต้นแบบอีกทีก็ได้)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 3](https://www.thepexcel.com/wp-content/uploads/2023/04/pexels-javiercaptures-theworld-15149359-1.jpg)
จากนั้นเอามาใช้ ControlNet Open Pose (ผมอัปเดท ControlNet เป็น V1.1 แล้วนะ ใครมีอันเดิมอย่าลืมอัปเดทและโหลด Model มาใหม่ด้วยล่ะ เจ๋งขึ้นเยอะเลย)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 4](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-001.png)
ผลที่ได้จะยิ่งแย่กว่าเดิมอีก! เพราะแม้ว่าจะมี 2 คนออกมาแล้วจริงๆ แต่มันกลายเป็นว่าทั้ง 2 คนมีหน้าคล้ายๆ ผมทั้งคู่ แล้วรายละเอียดของชุดทุกอย่างก็ปนกันมั่วซั่วไปหมด ไม่ใช่แบบที่ผมสั่งเลย
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 5](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-007-1024x363.png)
วิธีที่ถูกต้องในการ Generate หลายตัวละคร
แนวทางแก้ไขก็คือ ดราจะต้องใช้ Extension มาช่วย ซึ่งผมแนะนำว่าควรจะโหลดมาเพิ่ม 2 ตัว เพื่อให้ได้ผลลัพธ์ดั่งใจมากที่สุด
- Latent Couple : https://github.com/ashen-sensored/stable-diffusion-webui-two-shot (เอาไว้ Generate แบบกำหนดแยกพื้นที่
- Composable LoRA : https://github.com/opparco/stable-diffusion-webui-composable-lora (เอาไว้กำหนด LoRA ให้ทำงานแยกกันได้)
ก็ให้เข้าไปโหลด Extension ตามปกติใน Tab Extension -> Install from URL แล้ว Install ให้เรียบร้อย จะเป็นดังนี้
จากนั้นให้เราไป Enable Extension ตามนี้
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 6](https://www.thepexcel.com/wp-content/uploads/2023/04/SDpart6-004.png)
เราจะพบว่าพอกด Visualize แล้ว ตรง Region จะถูกแบ่งเป็น 3 ก้อน (จาก Division 3 ค่าที่คั่นด้วย comma ) ซึ่งเกิดจากการตั้งค่าไล่จากซ้ายไปขวา คือ
- ก้อนเต็มพื้นที่ (ขนาด 1:1 แปลว่า 1 เท่าของพื้นที่รวม ) โดยสีขาวจางมาก (เพราะน้ำหนัก Weights 0.2) [position 0:0]
- ก้อนฝั่งซ้าย (ขนาด 1:2 แปลว่า 1/2 ของพื้นที่รวม) โดยสีขาวค่อนข้างเยอะ (เพราะน้ำหนัก Weights 0.8) [position 0:0]
- ก้อนฝั่งขวา (ขนาด 1:2 แปลว่า 1/2 ของพื้นที่รวม) โดยสีขาวค่อนข้างเยอะ (เพราะน้ำหนัก Weights 0.8) [position 0:1]
ซึ่งแปลว่าเราจะต้องแบ่ง Prompt เป็น 3 ส่วน โดยคั่นแต่ละส่วนด้วยคำว่า AND และอย่าลืมใส่คำว่า (1man+1girl) เข้าไปทุกส่วนด้วย (ถ้าเป็นผู้หญิง 2 คนก็ 2girls)
- โดยที่ส่วนแรกสำหรับภาพรวมทั้งหมด
- ส่วนสองสำหรับภาพฝั่งซ้าย และ
- ส่วนสามสำหรับภาพฝั่งขวา
ดังนั้นผมจะแก้ Prompt เป็นดังนี้ แล้วจะลอง Generate ใหม่โดยยังไม่ใช้ ControlNet
(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (Beautiful beach and blue sky), (1man+1girl),
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (SiraEkabut Man with red brown hair), (smile), (slim body), (white collar shirt:1.3) <lora:SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003:0.71>,
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (lucy \(cyberpunk\):1.2),(eyes looking at viewer:1.4), black tight suit, black leotard, black pants, (detached sleeves), pouch, (white hair), (asymmetric hair), (short hair), (multicolor hair), (bang:1.2), (beautiful detailed hair) , red eyeliners, short shorts<lora:lucyCyberpunk_35Epochs:0.8>
ผลลัพธ์จะออกมาได้หลอนสุดๆ คือมีการแบ่งครึ่งพื้นที่แล้ว Generate แยกกัน ฝั่งซ้ายจะเป็นผมมากกว่า ฝั่งขวาจะดูเป็น Lucy มากกว่า ซึ่งแย่สุดๆ เพราะบางทีมันกลายเป็นมนุษย์ครึ่งซีกไปเลย 555
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 7](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-004-1024x439.png)
ทีนี้ผมลองเกิดใช้ ControlNet Openpose เหมือนเดิม เพื่อบังคับแยกเป็น 2 คน
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 8](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-003-1024x421.png)
ผลที่ได้ก็ยังหลอนอยู่ดี! เพราะว่าแม้จะ Gen แยกกันครั้งซีกแล้ว แยก 2 คนแล้ว แต่เหมือนว่า Effect ของ LoRA 2 ตัวมันยังปนๆ กันอยู่นั่นเอง ทำให้หน้าผมไปอยู่บนหน้า Lucy ด้วย ทุเรศมากๆๆๆ
ทำยังไงให้ LoRA ไม่ปนกัน?
วิธีที่จะทำให้ LoRA มันส่งผลแยกกัน เราจะต้องเปิดใช้ Extension อีกตัวด้วย นั่นคือ Composable LoRA นั่นเอง โดยติ๊กตามนี้ แล้วลอง Generate ใหม่
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 9](https://www.thepexcel.com/wp-content/uploads/2023/04/SDpart6-007.png)
ผลที่ได้ดีกว่าเดิมมากมาย คราวนี้ตัวละครแยกกันอย่างชัดเจนแล้ว
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 10](https://www.thepexcel.com/wp-content/uploads/2023/04/00367-3328604264.png)
หมายเหตุ : แต่ถ้าเราไม่เปิด controlnet (หรือมันเอ๋อไป) ผลก็อาจออกมาแปลกๆ แบบนี้ได้ (คือ Gen แยกกัน และ LoRA ก็แยกกัน เหมือนภาพตัดแปะห่วยๆ)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 11](https://www.thepexcel.com/wp-content/uploads/2023/04/SD-Part6-new2-002-1024x442.png)
จัดการ Background ที่ผิด
ซึ่งผมต้องจัดการเรื่อง Background ที่มันยังไม่ใช่ชายหาดอย่างที่ต้องการ แต่กลับเป็น background อะไรไม่รู้ เหมือน 2 ฝั่งมาจากคนละโลกกัน
ผมจะลองใส่คำว่า Beautiful Beach เข้าไปทั้ง part ซ้ายขวาด้วย ดูว่าจะดีขึ้นหรือไม่
(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (Beautiful beach and blue sky), (1man+1girl),
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (SiraEkabut Man with red brown hair), (smile), (slim body), (white collar shirt:1.3) , standing on Beautiful beach and blue sky <lora:SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003:0.71>,
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (lucy \(cyberpunk\):1.2), (eyes looking at viewer:1.4), black tight suit, black leotard, black pants, (detached sleeves), pouch, (white hair), (asymmetric hair), (short hair), (multicolor hair), (bang:1.2), (beautiful detailed hair) , red eyeliners, short shorts, standing on Beautiful beach and blue sky <lora:lucyCyberpunk_35Epochs:0.8>
ผลออกมาเป็นทะเลแล้ว เย้!
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 12](https://www.thepexcel.com/wp-content/uploads/2023/04/00365-940575966-1.png)
หลังจากนั้น เราสามารถลอง Gen หลายๆ รอบเพื่อให้ได้ภาพที่ใกล้เคียงกับที่ต้องการมากที่สุด รวมถึงปรัย Prompt เพื่อให้ได้สิ่งที่ต้องการมากขึ้นได้
แล้วสามารถลองมา Hires-Fix กัน (เพราะ ControlNet 1.1 รองรับ Hires-Fix ได้ดีขึ้นแล้ว)
โดย ผมปรับ prompt เป็นแบบนี้ คือเจาะจงหน้า lucy ให้สวยขึ้นด้วย (เพื่อรับรับการ Hires-fix) โดยใส่คำเพิ่ม เช่น beautiful young girl, (ulzzang-6500:0.5)
(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (Beautiful beach and blue sky), (1man+1girl),
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (SiraEkabut Man with red brown hair), (smile), (slim body), (white collar shirt:1.3) , standing on Beautiful beach and blue sky <lora:SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003:0.71>,
AND (1man+1girl),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (lucy \(cyberpunk\):1.2), beautiful young girl, (ulzzang-6500:0.5), little smile, (eyes looking at viewer:1.4), black tight suit, black leotard, black pants, (detached sleeves), pouch, (white hair), (asymmetric hair), (short hair), (multicolor hair), (bang:1.2), (beautiful detailed hair) , red eyeliners, short shorts, ( making a fist:1.5), standing on Beautiful beach and blue sky <lora:lucyCyberpunk_35Epochs:0.8>
ก่อน Hi-res fix
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 13](https://www.thepexcel.com/wp-content/uploads/2023/04/00372-940575966.png)
หลัง Hi-res fix
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 14](https://www.thepexcel.com/wp-content/uploads/2023/04/00371-940575966-683x1024.png)
ผลที่ได้ค่อนข้าง ok แค่มีมือเพี้ยนนิดหน่อย ดังนั้นเราสามารถ Inpaint แก้รายละเอียดได้อีกถ้าต้องการครับ
ผลลัพธ์หลังจาก Inpaint
หลังจาก Inpaint แก้จุดต่างๆ ที่อาจจะผิดพลาดไป (ใครถนัด Photoshop ก็เชิญได้เลย) ในที่สุด ผมก็สามารถยืนคู่กับ Lucy ได้แล้วล่ะ 555
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 15](https://www.thepexcel.com/wp-content/uploads/2023/04/00375-1228992597-683x1024.png)
ถ้าไม่ใช้ Control Net ได้หรือไม่?
หลายคนอาจจะสงสัยว่า แล้วถ้าไม่ใช้ ControlNet จะบังคับให้ออกมาเป็น 2 คนได้หรือไม่? อันนี้ก็ต้องบอกว่าได้แน่นอนครับ เพียงแต่ว่า ผมแนะนำว่าควรจะทำรูปเป็นแนวนอน “จะมีโอกาส” ออกมา 2 คนง่ายกว่า (แปลว่ามันก็อาจยังออกมาเป็นมนุษย์ครึ่งซีกได้อีก) และควรปรับ Prompt นิดหน่อย ชัดๆว่าจะให้ยืนคู่กันด้วย เช่น แบบนี้
(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (Beautiful beach and blue sky), (1man+1girl standing next to each other:1.4),
AND (1man+1girl standing next to each other:1.4),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (portrait shot:1.4), (SiraEkabut Man with red brown hair), (smile), (slim body), (white collar shirt:1.3) , standing on Beautiful beach and blue sky <lora:SiraEkabutV4-crop768-512-128-50-clip1-chillout-000003:0.71>,
AND (1man+1girl standing next to each other:1.4),(best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), (8k, RAW photo:1.2), (portrait shot:1.4), (lucy \(cyberpunk\):1.2), beautiful young girl, (ulzzang-6500:0.5), little smile, (eyes looking at viewer:1.4), black tight suit, black leotard, black pants, (detached sleeves), pouch, (white hair), (asymmetric hair), (short hair), (multicolor hair), (bang:1.2), (beautiful detailed hair) , red eyeliners, short shorts, ( making a fist:1.5), standing on Beautiful beach and blue sky <lora:lucyCyberpunk_35Epochs:0.8>
ซึ่งผมจะได้รูปก่อน Hires-fix แบบนี้ ซึ่งดู ok เลย (ต้องไป inpaint อีกหน่อยนะ)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 16](https://www.thepexcel.com/wp-content/uploads/2023/04/00376-864876648.png)
![สอนทำรูปตัวเองคู่กับสาว ใน Stable Diffusion [Part6] 17](https://www.thepexcel.com/wp-content/uploads/2023/04/00377-2393688170.png)
อย่างไรก็ตาม ผลลัพธ์จะออกมาดีหรือแย่ ถ้าไม่ใช้ ControlNet ช่วย หลายๆ เรื่องจะขึ้นอยู่กับดวงพอสมควร ดังนั้นถ้าใช้ ControlNet ได้ก็จะดีกว่าครับ (ถ้าไม่มีรูปต้นแบบ คุณ Gen รูป AI ตัวละครทั่วไปมาเป็นต้นแบบก็ได้)
ตอนต่อไป
ในตอนต่อไปผมจะมาพูดถึงแนวทางในการที่เราจะผสม Model หลัก หรือ CheckPoint ขึ้นมาเองครับ รับรองว่าสนุกแน่นอน ติดตามได้เลย
Leave a Reply