Buckets:
UNet3DConditionModel
Модель UNet была первоначально представлена Ronneberger et al. для сегментации биомедицинских изображений, однако она также широко используется в 🤗 Diffusers, поскольку на выходе она генерирует изображения того же размера, что и входные. Это один из ключевых компонентов диффузионной системы, так как именно он обеспечивает непосредственный процесс диффузии. В 🤗 Diffusers существует несколько вариантов модели UNet, которые различаются количеством измерений и тем, является ли модель условной. Здесь представлена условная 3D-модель UNet.
Аннотация из статьи:
Существует широкое согласие в том, что успешное обучение глубоких сетей требует тысяч размеченных обучающих примеров. В данной статье мы представляем сеть и стратегию обучения, которые опираются на активное использование аугментации данных для более эффективного использования доступных размеченных примеров. Архитектура состоит из сжимающего пути для захвата контекста и симметричного расширяющего пути, обеспечивающего точную локализацию. Мы показываем, что такая сеть может быть обучена end-to-end по очень малому количеству изображений и превосходит предыдущий лучший метод (сверточная сеть со скользящим окном) на конкурсе ISBI по сегментации нейронных структур в электронных микроскопических стопках. Используя ту же сеть, обученную на изображениях, полученные с помощью световой микроскопии (фазовый контраст и DIC), мы с большим отрывом выиграли конкурс ISBI по отслеживанию клеток 2015 года в этих категориях. Кроме того, сеть работает быстро. Сегментация изображения 512x512 занимает менее секунды на современном GPU. Полная реализация (на основе Caffe) и обученные сети доступны по адресу http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
UNet3DConditionModel[[diffusers.UNet3DConditionModel]]
diffusers.UNet3DConditionModel[[diffusers.UNet3DConditionModel]]
diffusers.UNet3DConditionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, down_block_types: tuple[str, ...] = ('CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'DownBlock3D'), up_block_types: tuple[str, ...] = ('UpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D'), block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280), layers_per_block: int = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1024, attention_head_dim: int | tuple[int] = 64, num_attention_heads: int | tuple[int] | None = None, time_cond_proj_dim: int | None = None)
Параметры:
sample_size (int или tuple[int, int], необязательный, по умолчанию None) : Высота и ширина входного/выходного образца.
in_channels (int, необязательный, по умолчанию 4) : Количество каналов во входном образце.
out_channels (int, необязательный, по умолчанию 4) : Количество каналов на выходе.
down_block_types (tuple[str], optional, по умолчанию ("CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "DownBlock3D")) : Кортеж блоков downsampling, которые следует использовать.
up_block_types (tuple[str], optional, по умолчанию ("UpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D")) : Кортеж блоков апсемплинга, которые следует использовать.
block_out_channels (tuple[int], optional, по умолчанию (320, 640, 1280, 1280)) : Кортеж количества выходных каналов для каждого блока.
layers_per_block (int, необязательный, по умолчанию 2) : Количество слоёв в каждом блоке.
downsample_padding (int, optional, по умолчанию 1) : Отступ, используемый для свёртки при уменьшении разрешения.
mid_block_scale_factor (float, необязательный, по умолчанию 1.0) : Коэффициент масштабирования для среднего блока.
act_fn (str, необязательный, по умолчанию "silu") : Функция активации, которую следует использовать.
norm_num_groups (int, optional, по умолчанию 32) : Количество групп, используемых для нормализации. Если None, слои нормализации и активации пропускаются на этапе постобработки.
norm_eps (float, необязательный, по умолчанию 1e-5) : Эпсилон, используемый для нормализации.
cross_attention_dim (int, optional, по умолчанию 1024) : Размерность признаков кросс-внимания.
attention_head_dim (int, необязательный, по умолчанию 64) : Размерность головок внимания.
num_attention_heads (int, необязательный) : Количество головок внимания.
time_cond_proj_dim (int, необязательный, по умолчанию None) : Размерность слоя cond_proj во вложении временного шага.
Условная 3D UNet-модель, которая принимает зашумленный образец, условное состояние и шаг времени и возвращает вывод той же формы.
Эта модель наследуется от ModelMixin. См. документацию суперкласса для его универсальных методов, реализованных для всех моделей (например, загрузка или сохранение).
disable_freeu[[diffusers.UNet3DConditionModel.disable_freeu]]
disable_freeu()
Отключает механизм FreeU.
enable_forward_chunking[[diffusers.UNet3DConditionModel.enable_forward_chunking]]
enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)
Параметры:
chunk_size (int, optional) : Размер блока для полносвязных слоёв. Если не указан, полносвязный слой будет выполняться отдельно для каждого тензора с dim=dim.
dim (int, optional, по умолчанию 0) : Размерность, по которой вычисления в feed-forward слое должны быть разбиты на блоки. Выберите dim=0 (batch) или dim=1 (длина последовательности).
Устанавливает процессор внимания для использования feed forward chunking.
enable_freeu[[diffusers.UNet3DConditionModel.enable_freeu]]
enable_freeu(s1, s2, b1, b2)
Параметры:
s1 (float) : Коэффициент масштабирования для этапа 1, ослабляющий вклад признаков пропуска. Это делается для смягчения «эффекта чрезмерного сглаживания» в процессе улучшенного шумоподавления.
s2 (float) : Коэффициент масштабирования для этапа 2, ослабляющий вклад признаков пропуска. Это делается для смягчения «эффекта чрезмерного сглаживания» в процессе улучшенного шумоподавления.
b1 (float) : Коэффициент масштабирования для этапа 1, усиливающий вклад признаков базовой модели.
b2 (float) : Коэффициент масштабирования для этапа 2, усиливающий вклад признаков базовой модели.
Включает механизм FreeU из https://huggingface.co/papers/2309.11497.
Суффиксы после коэффициентов масштабирования обозначают блоки стадий, в которых они применяются.
Сочетания значений, которые хорошо работают для различных пайплайнов, таких как Stable Diffusion v1, v2 и Stable Diffusion XL, приведены в официальном репозитории.
forward[[diffusers.UNet3DConditionModel.forward]]
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, down_block_additional_residuals: tuple[torch.Tensor] | None = None, mid_block_additional_residual: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
Параметры:
sample (torch.Tensor) : Шумовой входной тензор со следующей формой (batch, num_channels, num_frames, height, width.
timestep (torch.Tensor или float или int) : Количество шагов для удаления шума из входных данных.
encoder_hidden_states (torch.Tensor) : Скрытые состояния энкодера с формой (batch, sequence_length, feature_dim).
class_labels (torch.Tensor, необязательный, по умолчанию None) : Необязательные классы меток для условного формирования. Их эмбеддинги будут сложены с эмбеддингами временного шага.
timestep_cond : (torch.Tensor, необязательный, по умолчанию None): Условные эмбеддинги для временного шага. Если переданы, эмбеддинги будут сложены с сэмплами, прошедшими через слой self.time_embedding, чтобы получить эмбеддинги временного шага.
attention_mask (torch.Tensor, необязательный, по умолчанию None) : маска внимания формы (batch, key_tokens) применяется к encoder_hidden_states. Если значение равно 1, маска сохраняется, иначе, если равно 0, она отбрасывается. Маска преобразуется в смещение (bias), которое добавляет большие отрицательные значения к оценкам внимания, соответствующим токенам, подлежащим отбрасыванию.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
down_block_additional_residuals : (tuple из torch.Tensor, необязательный): Кортеж тензоров, которые при указании добавляются к остаткам (residuals) блоков down unet.
mid_block_additional_residual : (torch.Tensor, необязательный): тензор, который при указании добавляется к остаточному соединению среднего блока unet.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли UNet3DConditionOutput вместо обычного кортежа.
cross_attention_kwargs (dict, необязательный) : Словарь kwargs, который при указании передается в AttnProcessor.
Возвращает: UNet3DConditionOutput или tuple
Если return_dict равно True, возвращается UNet3DConditionOutput, иначе возвращается tuple, где первый элемент — это тензор сэмпла.
Метод forward модели UNet3DConditionModel.
fuse_qkv_projections[[diffusers.UNet3DConditionModel.fuse_qkv_projections]]
fuse_qkv_projections()
Включает объединённые проекции QKV. Для модулей само-внимания все матрицы проекций (т. е. запрос, ключ, значение) объединяются. Для модулей кросс-внимания объединяются матрицы проекций ключа и значения.
> Этот API 🧪 экспериментальный.
set_attention_slice[[diffusers.UNet3DConditionModel.set_attention_slice]]
set_attention_slice(slice_size: str | int | list[int])
Параметры:
slice_size (str или int или list(int), необязательный, по умолчанию "auto") : Если указано "auto", вход для головок внимания уменьшается вдвое, и внимание вычисляется в два этапа. Если указано "max", экономится максимальное количество памяти за счёт обработки только одного среза за раз. Если указано число, используется столько срезов, сколько получается от attention_head_dim // slice_size. В этом случае attention_head_dim должно быть кратным slice_size.
Включить вычисление внимания с нарезкой.
Когда эта опция включена, модуль внимания разбивает входной тензор на фрагменты, чтобы вычислять внимание в несколько шагов. Это полезно для экономии памяти ценой небольшого снижения скорости.
set_default_attn_processor[[diffusers.UNet3DConditionModel.set_default_attn_processor]]
set_default_attn_processor()
Отключает пользовательские обработчики внимания и устанавливает реализацию внимания по умолчанию.
unfuse_qkv_projections[[diffusers.UNet3DConditionModel.unfuse_qkv_projections]]
unfuse_qkv_projections()
Отключает объединенную проекцию QKV, если она включена.
> Этот API 🧪 экспериментальный.
UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput(sample: Tensor)
Параметры:
sample (torch.Tensor формы (batch_size, num_channels, num_frames, height, width)) : Выходные скрытые состояния, обусловленные входом encoder_hidden_states. Выход последнего слоя модели.
Вывод UNet3DConditionModel.
Xet Storage Details
- Size:
- 19.3 kB
- Xet hash:
- 3c00b178775f7f586f24e3c9b29dc87d8b509a5603697810e9b9a1ea5f07d339
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.