ส่วนขยาย WebUI สำหรับ ControlNet และการควบคุม SD ที่ใช้การฉีดอื่นๆ
ส่วนขยายนี้มีไว้สำหรับ UI เว็บ Stable Diffusion ของ AUTOMATIC1111 อนุญาตให้ Web UI เพิ่ม ControlNet ให้กับโมเดล Stable Diffusion ดั้งเดิมเพื่อสร้างรูปภาพ การเพิ่มสามารถทำได้ทันที ไม่จำเป็นต้องทำการผสาน
https://github.com/Mikubill/sd-webui-controlnet.git
ไปที่ "URL สำหรับที่เก็บ git ของส่วนขยาย"คุณสามารถค้นหาลิงค์ดาวน์โหลดทั้งหมดได้ที่นี่: https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download
ตอนนี้เรามีการสนับสนุนที่สมบูรณ์แบบสำหรับรุ่นและโปรเซสเซอร์ล่วงหน้าที่มีอยู่ทั้งหมด รวมถึงการรองรับที่สมบูรณ์แบบสำหรับอะแดปเตอร์สไตล์ T2I และ ControlNet 1.1 Shuffle (ตรวจสอบให้แน่ใจว่าชื่อไฟล์ YAML และชื่อไฟล์โมเดลเหมือนกัน โปรดดูไฟล์ YAML ใน "stable-diffusion-webuiextensionssd-webui-controlnetmodels")
ตอนนี้ หากคุณเปิด High-Res Fix ใน A1111 แต่ละคอนโทรลเน็ตจะส่งออกอิมเมจควบคุมที่แตกต่างกันสองภาพ: ภาพเล็กและภาพใหญ่ อันเล็กมีไว้สำหรับการสร้างขั้นพื้นฐานของคุณ และอันใหญ่สำหรับการสร้าง High-Res Fix ของคุณ ภาพควบคุมทั้งสองภาพได้รับการคำนวณโดยอัลกอริธึมอัจฉริยะที่เรียกว่า "การสุ่มตัวอย่างภาพควบคุมคุณภาพสูงเป็นพิเศษ" ซึ่งจะเปิดไว้ตามค่าเริ่มต้น และคุณไม่จำเป็นต้องเปลี่ยนการตั้งค่าใดๆ
ขณะนี้ ControlNet ได้รับการทดสอบอย่างกว้างขวางกับมาสก์ประเภทต่างๆ ของ A1111 รวมถึง "Inpaint masked"/"Inpaint not masked" และ "Whole picture"/"Only masked" และ "Only masked padding"&"Mask blur" การปรับขนาดนั้นตรงกับ "เพียงปรับขนาด"/"ครอบตัดและปรับขนาด"/"ปรับขนาดและเติม" ของ A1111 อย่างสมบูรณ์แบบ ซึ่งหมายความว่าคุณสามารถใช้ ControlNet ได้ในเกือบทุกที่ใน A1111 UI ของคุณได้โดยไม่ยาก!
ตอนนี้ หากคุณเปิดโหมดพิกเซลสมบูรณ์แบบ คุณไม่จำเป็นต้องตั้งค่าความละเอียดของตัวประมวลผลล่วงหน้า (ตัวอธิบายประกอบ) ด้วยตนเอง ControlNet จะคำนวณความละเอียดของคำอธิบายประกอบที่ดีที่สุดสำหรับคุณโดยอัตโนมัติ เพื่อให้แต่ละพิกเซลตรงกับ Stable Diffusion อย่างสมบูรณ์แบบ
เราได้จัดระเบียบ UI ที่สับสนก่อนหน้านี้ เช่น "ความกว้าง/ความสูงของแคนวาสสำหรับแคนวาสใหม่" และตอนนี้ก็อยู่ในปุ่มแล้ว ขณะนี้ GUI การแสดงตัวอย่างถูกควบคุมโดยตัวเลือก "อนุญาตการแสดงตัวอย่าง" และปุ่มทริกเกอร์ ? ขนาดภาพตัวอย่างดีกว่าเมื่อก่อน และคุณไม่จำเป็นต้องเลื่อนขึ้นลง GUI a1111 ของคุณจะไม่เละเทะอีกต่อไป!
ตอนนี้ ControlNet 1.1 สามารถรองรับวิธีการ Upscaling/Tile ได้เกือบทั้งหมด ControlNet 1.1 รองรับสคริปต์ "Ultimate SD upscale" และส่วนขยายแบบไทล์อื่นๆ เกือบทั้งหมด โปรดอย่าสับสนระหว่าง "Ultimate SD upscale" กับ "SD upscale" เนื่องจากเป็นสคริปต์ที่แตกต่างกัน โปรดทราบว่าวิธีการอัปสเกลที่แนะนำมากที่สุดคือ "Tiled VAE/Diffusion" แต่เราทดสอบวิธีการ/ส่วนขยายให้ได้มากที่สุด โปรดทราบว่ารองรับ "SD upscale" ตั้งแต่ 1.1.117 และหากคุณใช้งาน คุณจะต้องปล่อยอิมเมจ ControlNet ทั้งหมดเป็นค่าว่าง (เราไม่แนะนำ "SD upscale" เนื่องจากค่อนข้างบั๊กและไม่สามารถดูแลรักษาได้ - ใช้ปุ่ม " สุดยอด SD upscale" แทน)
เราได้แก้ไขข้อบกพร่องมากมายในโหมดเดาของเวอร์ชัน 1.0 ก่อนหน้านี้ และตอนนี้เรียกว่าโหมดควบคุม
ตอนนี้คุณสามารถควบคุมได้ว่าด้านใดสำคัญกว่า (พร้อมท์หรือ ControlNet ของคุณ):
"Balanced": ControlNet ทั้งสองด้านของ CFG scale เช่นเดียวกับการปิด "Guess Mode" ใน ControlNet 1.0
"ข้อความแจ้งของฉันสำคัญกว่า": ControlNet ทั้งสองด้านของมาตราส่วน CFG โดยมีการฉีด SD U-Net ลดลงอย่างต่อเนื่อง (layer_weight*=0.825**I โดยที่ 0<=I <13 และ 13 หมายถึง ControlNet ฉีด SD 13 ครั้ง ). ด้วยวิธีนี้ คุณสามารถมั่นใจได้ว่าข้อความแจ้งของคุณจะแสดงอย่างสมบูรณ์แบบในภาพที่คุณสร้างขึ้น
"ControlNet มีความสำคัญมากกว่า": ControlNet เฉพาะด้านที่มีเงื่อนไขของมาตราส่วน CFG เท่านั้น (เงื่อนไขในชุดเงื่อนไขแบบชุดของ A1111) ซึ่งหมายความว่า ControlNet จะแข็งแกร่งขึ้น X เท่า หากมาตราส่วน cfg ของคุณคือ X ตัวอย่างเช่น หากมาตราส่วน cfg ของคุณคือ 7 แสดงว่า ControlNet จะแข็งแกร่งขึ้น 7 เท่า โปรดทราบว่าตรงนี้ X ที่แข็งแกร่งกว่านั้นแตกต่างจาก "น้ำหนักควบคุม" เนื่องจากน้ำหนักของคุณไม่ได้ถูกแก้ไข เอฟเฟกต์ที่ "แข็งแกร่งกว่า" นี้มักจะมีสิ่งแปลกปลอมน้อยกว่า และทำให้ ControlNet มีพื้นที่มากขึ้นในการคาดเดาสิ่งที่หายไปจากข้อความแจ้งของคุณ (และในเวอร์ชัน 1.0 ก่อนหน้านี้เรียกว่า "โหมดเดา")
อินพุต (ความลึก+แคนนี่+เฮด) | "สมดุล" | “คำสั่งของฉันสำคัญกว่า” | "ControlNet มีความสำคัญมากกว่า" |
ตอนนี้เรามีตัวประมวลผล reference-only
ซึ่งไม่ต้องการโมเดลการควบคุมใดๆ สามารถแนะนำการแพร่กระจายได้โดยตรงโดยใช้รูปภาพเป็นข้อมูลอ้างอิง
(แจ้งว่า "สุนัขวิ่งบนทุ่งหญ้า คุณภาพดีที่สุด ...")
วิธีนี้คล้ายกับการอ้างอิงแบบ inpaint แต่ไม่ทำให้ภาพของคุณไม่เป็นระเบียบ
ผู้ใช้ A1111 มืออาชีพหลายคนรู้เคล็ดลับในการกระจายภาพพร้อมข้อมูลอ้างอิงด้วย inpaint ตัวอย่างเช่น หากคุณมีรูปภาพสุนัขขนาด 512x512 และต้องการสร้างรูปภาพขนาด 512x512 อีกรูปที่มีสุนัขตัวเดียวกัน ผู้ใช้บางรายจะเชื่อมต่อรูปภาพสุนัขขนาด 512x512 และรูปภาพเปล่าขนาด 512x512 ให้เป็นรูปภาพขนาด 1024x512 แล้วส่งไปในภาพวาด และมาสก์เอาต์ออก ส่วนว่างขนาด 512x512 เพื่อกระจายสุนัขที่มีลักษณะคล้ายกัน อย่างไรก็ตาม วิธีการดังกล่าวมักจะไม่น่าพึงพอใจนักเนื่องจากมีการเชื่อมต่อภาพเข้าด้วยกัน และจะเกิดการบิดเบี้ยวมากมาย
ControlNet reference-only
นี้สามารถเชื่อมโยงเลเยอร์ความสนใจของ SD ของคุณกับรูปภาพอิสระใดๆ ได้โดยตรง เพื่อให้ SD ของคุณสามารถอ่านรูปภาพที่กำหนดเองเพื่อใช้อ้างอิงได้ คุณต้องมี ControlNet 1.1.153 เป็นอย่างน้อยจึงจะใช้งานได้
หากต้องการใช้ เพียงเลือก reference-only
เป็นตัวประมวลผลล่วงหน้าแล้วใส่รูปภาพ SD ของคุณจะใช้รูปภาพเป็นข้อมูลอ้างอิงเท่านั้น
โปรดทราบว่าวิธีนี้เป็นวิธีที่ "ไม่มีความเห็น" มากที่สุด ประกอบด้วยรหัสการเชื่อมต่อพื้นฐานเท่านั้น เพื่อเชื่อมโยงเลเยอร์ความสนใจกับรูปภาพอ้างอิงของคุณ โดยไม่มีการตั้งค่าส่วนตัวใดๆ อย่างไรก็ตาม แม้ว่าเราจะพยายามอย่างดีที่สุดที่จะไม่รวมโค้ดที่แสดงความคิดเห็นใดๆ ไว้ แต่เรายังคงจำเป็นต้องเขียนการใช้งานเชิงอัตวิสัยบางอย่างเพื่อจัดการกับการถ่วงน้ำหนัก สเกล cfg ฯลฯ - รายงานเทคโนโลยีกำลังดำเนินการอยู่
ตัวอย่างเพิ่มเติมที่นี่
ดูเอกสารของ ControlNet 1.1 ด้วย:
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-special
นี่คือการตั้งค่าของฉัน หากคุณประสบปัญหาใดๆ คุณสามารถใช้การตั้งค่านี้เป็นการตรวจสอบความสมบูรณ์ได้
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
คุณยังคงสามารถใช้รุ่นก่อนหน้าทั้งหมดใน ControlNet 1.0 ก่อนหน้าได้ ตอนนี้ "ความลึก" ก่อนหน้านี้เรียกว่า "deep_midas" "ปกติ" ก่อนหน้านี้เรียกว่า "normal_midas" "hed" ก่อนหน้าเรียกว่า "softedge_hed" และตั้งแต่ 1.1 เป็นต้นไป แผนที่เส้นทั้งหมด แผนที่ขอบ แผนที่เชิงเส้น แผนที่ขอบเขต จะมีพื้นหลังสีดำและเส้นสีขาว
(จาก TencentARC/T2I-อะแดปเตอร์)
วิธีใช้รุ่น T2I-Adapter:
โปรดทราบว่ายังไม่ได้ใช้ "CoAdapter"
ผลลัพธ์ด้านล่างมาจาก ControlNet 1.0
แหล่งที่มา | ป้อนข้อมูล | เอาท์พุต |
---|---|---|
(ไม่มีโปรเซสเซอร์ล่วงหน้า) | ||
(ไม่มีโปรเซสเซอร์ล่วงหน้า) | ||
ตัวอย่างด้านล่างนี้มาจาก T2I-Adapter
จาก t2iadapter_color_sd14v1.pth
:
แหล่งที่มา | ป้อนข้อมูล | เอาท์พุต |
---|---|---|
จาก t2iadapter_style_sd14v1.pth
:
แหล่งที่มา | ป้อนข้อมูล | เอาท์พุต |
---|---|---|
(เป็นคลิป ไม่ใช่รูปภาพ) |
--xformers
และโหมด Low VRAM
ถูกทำเครื่องหมายใน UI จะสูงถึง 768x832 ตัวเลือกนี้อนุญาตให้มีอินพุต ControlNet หลายรายการสำหรับรุ่นเดียว หากต้องการเปิดใช้งานตัวเลือกนี้ ให้เปลี่ยน Multi ControlNet: Max models amount (requires restart)
ในการตั้งค่า โปรดทราบว่าคุณจะต้องรีสตาร์ท WebUI เพื่อให้การเปลี่ยนแปลงมีผล
ที่มา ก | ที่มา บี | เอาท์พุต |
น้ำหนักคือน้ำหนักของ "อิทธิพล" ของเครือข่ายควบคุม มันคล้ายคลึงกับการกระตุ้นความสนใจ/เน้นย้ำ เช่น (myprompt: 1.2) ในทางเทคนิคแล้ว นี่เป็นปัจจัยในการคูณเอาต์พุต ControlNet ก่อนที่จะรวมเข้ากับ SD Unet ดั้งเดิม
การเริ่มต้น/สิ้นสุดของการนำทางคือเปอร์เซ็นต์ของขั้นตอนทั้งหมดที่เครือข่ายควบคุมใช้ (ความแรงของการนำทาง = สิ้นสุดของการนำทาง) มันคล้ายคลึงกับการแก้ไข / การเปลี่ยนแปลงทันที เช่น [myprompt::0.8] (ใช้ตั้งแต่เริ่มต้นจนถึง 80% ของขั้นตอนทั้งหมด)
ใส่หน่วยใด ๆ เข้าสู่โหมดแบทช์เพื่อเปิดใช้งานโหมดแบทช์สำหรับทุกหน่วย ระบุไดเร็กทอรีแบตช์สำหรับแต่ละหน่วย หรือใช้กล่องข้อความใหม่ในแท็บแบตช์ img2img เป็นทางเลือก แม้ว่ากล่องข้อความจะอยู่ในแท็บแบตช์ img2img แต่คุณสามารถใช้เพื่อสร้างรูปภาพในแท็บ txt2img ได้เช่นกัน
โปรดทราบว่าคุณลักษณะนี้มีเฉพาะในส่วนต่อประสานผู้ใช้ gradio เท่านั้น เรียกใช้ API ได้บ่อยเท่าที่คุณต้องการสำหรับการจัดกำหนดการแบบแบตช์แบบกำหนดเอง
ส่วนขยายนี้สามารถรับงาน txt2img หรือ img2img ผ่าน API หรือการเรียกส่วนขยายภายนอก โปรดทราบว่าคุณอาจต้องเปิดใช้งานการ Allow other scripts to control this extension
ในการตั้งค่าสำหรับการโทรภายนอก
หากต้องการใช้ API ให้เริ่ม WebUI ด้วยอาร์กิวเมนต์ --api
และไปที่ http://webui-address/docs
เพื่อดูเอกสารหรือตัวอย่างการชำระเงิน
วิธีใช้การโทรภายนอก: Checkout Wiki
ส่วนขยายนี้จะเพิ่มอาร์กิวเมนต์บรรทัดคำสั่งเหล่านี้ให้กับ webui:
--controlnet-dir ADD a controlnet models directory
--controlnet-annotator-models-path SET the directory for annotator models
--no-half-controlnet load controlnet models in full precision
--controlnet-preprocessor-cache-size Cache size for controlnet preprocessor results
--controlnet-loglevel Log level for the controlnet extension
--controlnet-tracemalloc Enable malloc memory tracing
ทดสอบด้วย pytorch ทุกคืน: #143 (ความคิดเห็น)
หากต้องการใช้ส่วนขยายนี้กับ mps และ pytorch ปกติ ในปัจจุบันคุณอาจต้องเริ่ม WebUI ด้วย --no-half
เวอร์ชันก่อนหน้า (sd-webui-controlnet 1.0) ถูกเก็บถาวรแล้ว
https://github.com/lllyasviel/webui-controlnet-v1-archived
การใช้เวอร์ชันนี้ไม่ใช่การหยุดการอัปเดตชั่วคราว คุณจะหยุดการอัปเดตทั้งหมดตลอดไป
โปรดพิจารณาเวอร์ชันนี้หากคุณทำงานกับสตูดิโอมืออาชีพที่ต้องการสร้างผลลัพธ์ก่อนหน้าทั้งหมด 100% แบบพิกเซลต่อพิกเซล
การใช้งานนี้ได้รับแรงบันดาลใจจาก kohya-ss/sd-webui- allowance-networks