Diffusers documentation
IP-Adapter
IP-Adapter
IP-Adapter là một adapter nhẹ cho phép đưa prompt là hình ảnh vào mô hình khuếch tán. Phương pháp này tách rời các lớp cross-attention của đặc trưng hình ảnh và đặc trưng văn bản. Các đặc trưng hình ảnh được tạo ra từ một image encoder.
Tìm hiểu cách tải và sử dụng checkpoint và hình ảnh IP-Adapter trong hướng dẫn IP-Adapter.
IPAdapterMixin
Mixin để xử lý IP Adapters.
load_ip_adapter
< source >( pretrained_model_name_or_path_or_dict: str | list[str] | dict[str, torch.Tensor]subfolder: str | list[str]weight_name: str | list[str]image_encoder_folder: str | None = 'image_encoder'**kwargs )
Tham số
- pretrained_model_name_or_path_or_dict (
strhoặclist[str]hoặcos.PathLikehoặclist[os.PathLike]hoặcdicthoặclist[dict]) — Có thể là:- Một chuỗi, model id (ví dụ
google/ddpm-celebahq-256) của một mô hình được huấn luyện trước có sẵn trên Hub. - Đường dẫn đến một thư mục (ví dụ
./my_model_directory) chứa các trọng số mô hình đã được lưu bằng ModelMixin.save_pretrained(). - Một torch state dict.
- Một chuỗi, model id (ví dụ
- subfolder (
strhoặclist[str]) — Vị trí thư mục con của tệp mô hình bên trong một kho lưu trữ mô hình lớn hơn trên Hub hoặc cục bộ. Nếu một danh sách được truyền vào, nó phải có cùng độ dài vớiweight_name. - weight_name (
strhoặclist[str]) — Tên của tệp trọng số cần nạp. Nếu truyền vào một danh sách, danh sách đó phải có cùng độ dài vớisubfolder. - image_encoder_folder (
str, tuỳ chọn, mặc định làimage_encoder) — Vị trí của thư mục con chứa image encoder trong một kho mô hình lớn hơn trên Hub hoặc cục bộ. TruyềnNoneđể không nạp image encoder. Nếu image encoder nằm trong một thư mục bên trongsubfolder, bạn chỉ cần truyền tên của thư mục chứa trọng số image encoder, ví dụimage_encoder_folder="image_encoder". Nếu image encoder nằm trong một thư mục khác vớisubfolder, bạn nên truyền đường dẫn đến thư mục chứa trọng số image encoder, chẳng hạnimage_encoder_folder="different_subfolder/image_encoder". - cache_dir (
str | os.PathLike, tùy chọn) — Đường dẫn đến thư mục nơi cấu hình mô hình được huấn luyện trước đã tải xuống được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn. - force_download (
bool, tùy chọn, mặc định làFalse) — Có nên buộc tải lại (re-download) trọng số mô hình và các tệp cấu hình, ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không. - proxies (
dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu. - local_files_only (
bool, tùy chọn, mặc định làFalse) — Xác định có chỉ tải trọng số và tệp cấu hình của mô hình từ cục bộ hay không. Nếu đặt thànhTrue, mô hình sẽ không được tải xuống từ Hub. - token (
strhoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, token được tạo từdiffusers-cli login(được lưu trong~/.huggingface) sẽ được sử dụng. - revision (
str, tùy chọn, mặc định là"main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ, id commit, hoặc bất kỳ định danh nào được Git cho phép. - low_cpu_mem_usage (
bool, tùy chọn, mặc định làTruenếu phiên bản torch >= 1.9.0, ngược lại làFalse) — Tăng tốc quá trình tải mô hình bằng cách chỉ tải trọng số được huấn luyện trước mà không khởi tạo trọng số. Điều này cũng cố gắng không sử dụng nhiều hơn 1 lần kích thước mô hình trong bộ nhớ CPU (bao gồm bộ nhớ đỉnh) trong khi tải mô hình. Chỉ hỗ trợ cho PyTorch >= 1.9.0. Nếu bạn đang sử dụng phiên bản PyTorch cũ hơn, việc đặt tham số này thànhTruesẽ gây ra lỗi.
Đặt thang đo IP-Adapter cho từng khối transformer. Đầu vào scale có thể là một cấu hình duy nhất hoặc một danh sách các cấu hình để kiểm soát chi tiết hành vi của từng IP-Adapter. Một cấu hình có thể là một số float hoặc một từ điển.
Ví dụ:
# To use original IP-Adapter
scale = 1.0
pipeline.set_ip_adapter_scale(scale)
# To use style block only
scale = {
"up": {"block_0": [0.0, 1.0, 0.0]},
}
pipeline.set_ip_adapter_scale(scale)
# To use style+layout blocks
scale = {
"down": {"block_2": [0.0, 1.0]},
"up": {"block_0": [0.0, 1.0, 0.0]},
}
pipeline.set_ip_adapter_scale(scale)
# To use style and layout from 2 reference images
scales = [{"down": {"block_2": [0.0, 1.0]}}, {"up": {"block_0": [0.0, 1.0, 0.0]}}]
pipeline.set_ip_adapter_scale(scales)Gỡ tải trọng số IP Adapter
SD3IPAdapterMixin
Mixin để xử lý IP Adapters cho StableDiffusion 3.
is_ip_adapter_active
< source >( ) → bool
Trả về
bool
Đúng khi IP-Adapter được tải và bất kỳ lớp nào có scale > 0.
Kiểm tra xem IP-Adapter đã được tải và scale > 0 hay chưa.
IP-Adapter scale kiểm soát mức độ ảnh hưởng của prompt hình ảnh so với prompt văn bản. Khi giá trị này được đặt là 0, bối cảnh hình ảnh sẽ không còn liên quan.
load_ip_adapter
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]weight_name: str = 'ip-adapter.safetensors'subfolder: str | None = Noneimage_encoder_folder: str | None = 'image_encoder'**kwargs )
Tham số
- pretrained_model_name_or_path_or_dict (
strhoặcos.PathLikehoặcdict) — Có thể là:- Một chuỗi, model id (ví dụ
google/ddpm-celebahq-256) của một mô hình được huấn luyện trước có sẵn trên Hub. - Đường dẫn đến một thư mục (ví dụ
./my_model_directory) chứa các trọng số mô hình đã được lưu bằng ModelMixin.save_pretrained(). - Một torch state dict.
- Một chuỗi, model id (ví dụ
- weight_name (
str, mặc định là “ip-adapter.safetensors”) — Tên của tệp trọng số cần nạp. Nếu truyền vào một danh sách, danh sách đó phải có cùng độ dài vớisubfolder. - subfolder (
str, tùy chọn) — Vị trí thư mục con của tệp mô hình trong kho mô hình lớn hơn trên Hub hoặc cục bộ. Nếu một danh sách được truyền vào, nó phải có cùng độ dài vớiweight_name. - image_encoder_folder (
str, tuỳ chọn, mặc định làimage_encoder) — Vị trí của thư mục con chứa image encoder trong một kho mô hình lớn hơn trên Hub hoặc cục bộ. TruyềnNoneđể không nạp image encoder. Nếu image encoder nằm trong một thư mục bên trongsubfolder, bạn chỉ cần truyền tên của thư mục chứa trọng số image encoder, ví dụimage_encoder_folder="image_encoder". Nếu image encoder nằm trong một thư mục khác vớisubfolder, bạn nên truyền đường dẫn đến thư mục chứa trọng số image encoder, chẳng hạnimage_encoder_folder="different_subfolder/image_encoder". - cache_dir (
str | os.PathLike, tùy chọn) — Đường dẫn đến thư mục nơi cấu hình mô hình được huấn luyện trước đã tải xuống được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn. - force_download (
bool, tùy chọn, mặc định làFalse) — Có nên buộc tải lại (re-download) trọng số mô hình và các tệp cấu hình, ghi đè lên các phiên bản đã được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không. - proxies (
dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu. - local_files_only (
bool, tùy chọn, mặc định làFalse) — Xác định có chỉ tải trọng số và tệp cấu hình của mô hình từ cục bộ hay không. Nếu đặt thànhTrue, mô hình sẽ không được tải xuống từ Hub. - token (
strhoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, token được tạo từdiffusers-cli login(được lưu trong~/.huggingface) sẽ được sử dụng. - revision (
str, tùy chọn, mặc định là"main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ, id commit, hoặc bất kỳ định danh nào được Git cho phép. - low_cpu_mem_usage (
bool, tùy chọn, mặc định làTruenếu phiên bản torch >= 1.9.0, ngược lại làFalse) — Tăng tốc quá trình tải mô hình bằng cách chỉ tải trọng số được huấn luyện trước mà không khởi tạo trọng số. Điều này cũng cố gắng không sử dụng nhiều hơn 1 lần kích thước mô hình trong bộ nhớ CPU (bao gồm bộ nhớ đỉnh) trong khi tải mô hình. Chỉ hỗ trợ cho PyTorch >= 1.9.0. Nếu bạn đang sử dụng phiên bản PyTorch cũ hơn, việc đặt tham số này thànhTruesẽ gây ra lỗi.
set_ip_adapter_scale
< source >( scale: float )
Đặt IP-Adapter scale, tham số kiểm soát điều kiện của image prompt. Giá trị 1.0 có nghĩa là mô hình chỉ được điều kiện bởi image prompt, còn 0.0 chỉ được điều kiện bởi text prompt. Giảm giá trị này khuyến khích mô hình tạo ra các hình ảnh đa dạng hơn, nhưng chúng có thể không khớp với image prompt.
Gỡ tải trọng số của IP Adapter.
IPAdapterMaskProcessor
lớp diffusers.IPAdapterMaskProcessor
< source >( do_resize: bool = Truevae_scale_factor: int = 8resample: str = 'lanczos'do_normalize: bool = Falsedo_binarize: bool = Truedo_convert_grayscale: bool = True )
Tham số
- do_resize (
bool, tùy chọn, mặc định làTrue) — Có nên giảm kích thước chiều (chiều cao, chiều rộng) của ảnh xuống các bội số củavae_scale_factorhay không. - vae_scale_factor (
int, tùy chọn, mặc định là8) — Hệ số tỷ lệ của VAE. Nếudo_resizelàTrue, hình ảnh sẽ được tự động thay đổi kích thước thành bội số của hệ số này. - resample (
str, tùy chọn, mặc định làlanczos) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. - do_normalize (
bool, tùy chọn, mặc định làFalse) — Có nên chuẩn hóa ảnh về khoảng [-1,1] hay không. - do_binarize (
bool, tùy chọn, mặc định làTrue) — Có nên nhị phân hóa ảnh thành 0/1 hay không. - do_convert_grayscale (
bool, tùy chọn, mặc định làTrue) — Có chuyển đổi các hình ảnh sang định dạng đen trắng hay không.
Bộ xử lý ảnh cho mặt nạ ảnh IP Adapter.
downsample
< source >( mask: Tensorbatch_size: intnum_queries: intvalue_embed_dim: int ) → torch.Tensor
Thực hiện giảm mẫu (downsample) tensor mask được cung cấp để khớp với các kích thước mong đợi cho scaled dot-product attention. Nếu tỷ lệ khung hình (aspect ratio) của mask không khớp với tỷ lệ khung hình của ảnh đầu ra, một cảnh báo sẽ được phát ra.