- Diffusers เป็นห้องสมุดไปสู่สำหรับแบบจำลองการแพร่กระจายที่ทันสมัยสำหรับการสร้างภาพเสียงและแม้กระทั่งโครงสร้าง 3 มิติของโมเลกุล ไม่ว่าคุณจะกำลังมองหาวิธีแก้ปัญหาการอนุมานที่เรียบง่ายหรือฝึกอบรมแบบจำลองการแพร่ของคุณเอง? Diffusers เป็นกล่องเครื่องมือแบบแยกส่วนที่รองรับทั้งสอง ห้องสมุดของเราได้รับการออกแบบโดยเน้นการใช้งานมากกว่าประสิทธิภาพง่ายกว่าง่ายและปรับแต่งได้มากกว่า abstractions
- diffusers มีสามองค์ประกอบหลัก:
เราขอแนะนำให้ติดตั้ง? diffusers ในสภาพแวดล้อมเสมือนจริงจาก PYPI หรือ conda สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการติดตั้ง Pytorch และ Flax โปรดดูเอกสารอย่างเป็นทางการของพวกเขา
ด้วย pip
(แพ็คเกจอย่างเป็นทางการ):
pip install --upgrade diffusers[torch]
กับ conda
(ดูแลโดยชุมชน):
conda install -c conda-forge diffusers
ด้วย pip
(แพ็คเกจอย่างเป็นทางการ):
pip install --upgrade diffusers[flax]
โปรดดูวิธีการใช้การแพร่กระจายที่มั่นคงในคู่มือ Apple Silicon
การสร้างเอาต์พุตเป็นเรื่องง่ายมาก? diffusers ในการสร้างภาพจากข้อความให้ใช้วิธี from_pretrained
เพื่อโหลดรูปแบบการแพร่กระจายที่ผ่านมา (เรียกดูฮับสำหรับจุดตรวจ 30,000+ จุด):
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline . from_pretrained ( "stable-diffusion-v1-5/stable-diffusion-v1-5" , torch_dtype = torch . float16 )
pipeline . to ( "cuda" )
pipeline ( "An image of a squirrel in Picasso style" ). images [ 0 ]
นอกจากนี้คุณยังสามารถขุดลงในกล่องเครื่องมือแบบจำลองและกำหนดตารางเวลาเพื่อสร้างระบบการแพร่กระจายของคุณเอง:
from diffusers import DDPMScheduler , UNet2DModel
from PIL import Image
import torch
scheduler = DDPMScheduler . from_pretrained ( "google/ddpm-cat-256" )
model = UNet2DModel . from_pretrained ( "google/ddpm-cat-256" ). to ( "cuda" )
scheduler . set_timesteps ( 50 )
sample_size = model . config . sample_size
noise = torch . randn (( 1 , 3 , sample_size , sample_size ), device = "cuda" )
input = noise
for t in scheduler . timesteps :
with torch . no_grad ():
noisy_residual = model ( input , t ). sample
prev_noisy_sample = scheduler . step ( noisy_residual , t , input ). prev_sample
input = prev_noisy_sample
image = ( input / 2 + 0.5 ). clamp ( 0 , 1 )
image = image . cpu (). permute ( 0 , 2 , 3 , 1 ). numpy ()[ 0 ]
image = Image . fromarray (( image * 255 ). round (). astype ( "uint8" ))
image
ตรวจสอบ QuickStart เพื่อเปิดการเดินทางของคุณวันนี้!
เอกสาร | ฉันเรียนรู้อะไรได้บ้าง? |
---|---|
การสอน | หลักสูตรความผิดพลาดขั้นพื้นฐานสำหรับการเรียนรู้วิธีการใช้คุณสมบัติที่สำคัญที่สุดของห้องสมุดเช่นการใช้โมเดลและตัวกำหนดเวลาเพื่อสร้างระบบการแพร่กระจายของคุณเองและฝึกอบรมรูปแบบการแพร่กระจายของคุณเอง |
การโหลด | คู่มือสำหรับวิธีการโหลดและกำหนดค่าส่วนประกอบทั้งหมด (ท่อ, โมเดลและตารางเวลา) ของไลบรารีรวมถึงวิธีการใช้ตารางเวลาที่แตกต่างกัน |
ท่อสำหรับการอนุมาน | คู่มือสำหรับวิธีการใช้ท่อสำหรับงานการอนุมานที่แตกต่างกันการสร้างแบบแบตช์การควบคุมเอาต์พุตที่สร้างขึ้นและการสุ่มและวิธีการมีส่วนร่วมไปป์ไลน์ไปยังห้องสมุด |
การเพิ่มประสิทธิภาพ | คู่มือสำหรับวิธีการเพิ่มประสิทธิภาพของโมเดลการแพร่ของคุณให้ทำงานเร็วขึ้นและใช้หน่วยความจำน้อยลง |
การฝึกอบรม | คู่มือสำหรับวิธีการฝึกอบรมแบบจำลองการแพร่กระจายสำหรับงานที่แตกต่างกันด้วยเทคนิคการฝึกอบรมที่แตกต่างกัน |
เรามีส่วนร่วมจากชุมชนโอเพ่นซอร์ส! หากคุณต้องการมีส่วนร่วมในห้องสมุดนี้โปรดตรวจสอบคู่มือการบริจาคของเรา คุณสามารถมองหาปัญหาที่คุณต้องการแก้ไขเพื่อมีส่วนร่วมในห้องสมุด
นอกจากนี้ในช่องทาง Discord สาธารณะของเรา เราหารือเกี่ยวกับแนวโน้มที่ร้อนแรงที่สุดเกี่ยวกับรูปแบบการแพร่กระจายช่วยเหลือซึ่งกันและกันด้วยการมีส่วนร่วมโครงการส่วนบุคคลหรือเพียงแค่ออกไปเที่ยว☕
งาน | ท่อส่ง | - ศูนย์กลาง |
---|---|---|
การสร้างภาพที่ไม่มีเงื่อนไข | DDPM | Google/DDPM-EMA-Church-256 |
ข้อความเป็นภาพ | ข้อความกระจายไปยังภาพที่เสถียร | เสถียร -Diffusion-V1-5/เสถียร -Diffusion-V1-5 |
ข้อความเป็นภาพ | ปลดปล่อย | Kakaobrain/Karlo-V1-Alpha |
ข้อความเป็นภาพ | deepfloyd ถ้า | Deepfloyd/IF-I-XL-V1.0 |
ข้อความเป็นภาพ | Kandinsky | Kandinsky-Community/Kandinsky-2-2-2-Decoder |
ภาพที่นำไปใช้กับภาพ | การควบคุม | lllyasviel/sd-controlnet-canny |
ภาพที่นำไปใช้กับภาพ | cordspix2pix | Timbrooks/Instruct-Pix2pix |
ภาพที่นำไปใช้กับภาพ | ภาพการแพร่กระจายไปยังภาพที่เสถียร | เสถียร -Diffusion-V1-5/เสถียร -Diffusion-V1-5 |
ภาพที่นำด้วยข้อความ | การแพร่กระจายที่เสถียรในการทาสี | RunwayML/Stable-Diffusion-Inpainting |
รูปแบบของภาพ | รูปแบบการแพร่กระจายของภาพที่เสถียร | Lambdalabs/SD-Image-Variations-Diffusers |
ความละเอียดสุดยอด | การแพร่กระจายที่เสถียร | เสถียรภาพ |
ความละเอียดสุดยอด | การแพร่กระจายที่มีเสถียรภาพแฝง | ความเสถียร/SD-X2-latent-upscaler |
ขอบคุณที่ใช้เรา❤
ห้องสมุดนี้เป็นรูปธรรมก่อนหน้านี้โดยผู้เขียนหลายคนและจะเป็นไปไม่ได้หากไม่มีการวิจัยและการใช้งานที่ยอดเยี่ยม เราขอขอบคุณโดยเฉพาะอย่างยิ่งการใช้งานต่อไปนี้ซึ่งช่วยเราในการพัฒนาของเราและหากไม่มี API ที่ไม่สามารถขัดได้ในวันนี้:
นอกจากนี้เรายังต้องการขอบคุณ @heejkoo สำหรับภาพรวมที่เป็นประโยชน์ของเอกสารรหัสและทรัพยากรในรูปแบบการแพร่กระจายที่นี่รวมถึง @CrowsonKB และ @Rromb สำหรับการอภิปรายและข้อมูลเชิงลึกที่เป็นประโยชน์
@misc { von-platen-etal-2022-diffusers ,
author = { Patrick von Platen and Suraj Patil and Anton Lozhkov and Pedro Cuenca and Nathan Lambert and Kashif Rasul and Mishig Davaadorj and Dhruv Nair and Sayak Paul and William Berman and Yiyi Xu and Steven Liu and Thomas Wolf } ,
title = { Diffusers: State-of-the-art diffusion models } ,
year = { 2022 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/huggingface/diffusers} }
}