Diffusers documentation
UVit2DModel
UVit2DModel
Модель U-ViT представляет собой UNet на основе vision transformer (ViT). Эта модель объединяет элементы ViT (рассматривает все входные данные, такие как время, условия и зашумленные патчи изображения, в качестве токенов) и UNet (длинные skip-соединения между поверхностными и глубокими слоями). Skip-соединение важно для предсказания пиксельных признаков. Перед финальным выводом применяется дополнительный свёрточный блок 3x3 для улучшения качества изображения.
Аннотация из статьи:
В настоящее время применение диффузионных моделей в пиксельном пространстве изображений высокого разрешения затруднено. Вместо этого существующие подходы фокусируются на диффузии в пространствах меньшей размерности (латентная диффузия) или используют несколько уровней супер-разрешения генерации, называемых каскадами. Недостатком этих подходов является добавление дополнительной сложности в диффузионный фреймворк. Данная статья направлена на улучшение денуайзинговой диффузии для изображений высокого разрешения при сохранении максимально простой модели. Статья сосредоточена на исследовательском вопросе: как обучить стандартные модели денуайзинговой диффузии на изображениях высокого разрешения и при этом получить производительность, сопоставимую с альтернативными подходами? Четыре основных вывода: 1) расписание шума должно быть скорректировано для изображений высокого разрешения, 2) достаточно масштабировать только определённую часть архитектуры, 3) dropout следует добавлять в конкретных местах архитектуры, и 4) даунсемплинг является эффективной стратегией для избежания карт признаков высокого разрешения. Сочетая эти простые, но эффективные техники, мы достигли наилучших результатов в генерации изображений среди диффузионных моделей без модификаторов выборки на ImageNet.
UVit2DModel
класс diffusers.UVit2DModel
< source >( hidden_size: int = 1024use_bias: bool = Falsehidden_dropout: float = 0.0cond_embed_dim: int = 768micro_cond_encode_dim: int = 256micro_cond_embed_dim: int = 1280encoder_hidden_size: int = 768vocab_size: int = 8256codebook_size: int = 8192in_channels: int = 768block_out_channels: int = 768num_res_blocks: int = 3downsample: bool = Falseupsample: bool = Falseblock_num_heads: int = 12num_hidden_layers: int = 22num_attention_heads: int = 16attention_dropout: float = 0.0intermediate_size: int = 2816layer_norm_eps: float = 1e-06ln_elementwise_affine: bool = Truesample_size: int = 64 )
forward
< source >( input_idsencoder_hidden_statespooled_text_embmicro_condscross_attention_kwargs = None ) → torch.Tensor
Параметры
- input_ids (
torch.LongTensor) — Идентификаторы токенов замаскированных латентных изображений, с формой(batch_size, height, width). - encoder_hidden_states (
torch.Tensor) — Условные эмбеддинги (эмбеддинги, вычисленные на основе входных условий, таких как промпты), которые следует использовать. - pooled_text_emb (
torch.Tensor) — Средневзвешенные текстовые эмбеддинги, используемые для дополнительного обусловливания. - micro_conds (
torch.Tensor) — Значения микроусловий, которые встраиваются и комбинируются сpooled_text_emb. - cross_attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor.
Возвращает
torch.Tensor
Логиты по кодовой книге для каждого токена изображения, с формой (batch_size, codebook_size, height, width).
Отключает пользовательские обработчики внимания и устанавливает реализацию внимания по умолчанию.
UVit2DConvEmbed
класс diffusers.models.unets.uvit_2d.UVit2DConvEmbed
< source >( in_channelsblock_out_channelsvocab_sizeelementwise_affineepsbias )
UVitBlock
класс diffusers.models.unets.uvit_2d.UVitBlock
< source >( channelsnum_res_blocks: inthidden_sizehidden_dropoutln_elementwise_affinelayer_norm_epsuse_biasblock_num_headsattention_dropoutdownsample: boolupsample: bool )
ConvNextBlock
класс diffusers.models.unets.uvit_2d.ConvNextBlock
< source >( channelslayer_norm_epsln_elementwise_affineuse_biashidden_dropouthidden_sizeres_ffn_factor = 4 )
ConvMlmLayer
класс diffusers.models.unets.uvit_2d.ConvMlmLayer
< source >( block_out_channels: intin_channels: intuse_bias: boolln_elementwise_affine: boollayer_norm_eps: floatcodebook_size: int )