Buckets:

hf-doc-build/doc / diffusers /main /pt /api /models /unet-motion.md
mishig's picture
|
download
raw
11.7 kB

UNetMotionModel

O modelo UNet foi originalmente introduzido por Ronneberger et al para segmentação de imagens biomédicas, mas também é comumente usado no 🤗 Diffusers porque ele gera imagens com o mesmo tamanho da entrada. Ele é um dos componentes mais importantes de um sistema de difusão, pois facilita o processo de difusão em si. Existem várias variantes do modelo UNet no 🤗 Diffusers, dependendo do número de dimensões e de se trata de um modelo condicional ou não. Este é um modelo UNet 2D.

O resumo do artigo é:

Há amplo consenso de que o treinamento bem-sucedido de redes profundas requer milhares de amostras de treinamento anotadas. Neste artigo, apresentamos uma rede e uma estratégia de treinamento que dependem do uso intenso de aumento de dados para utilizar as amostras anotadas disponíveis de forma mais eficiente. A arquitetura consiste em um caminho contrativo para capturar o contexto e um caminho expansivo simétrico que permite a localização precisa. Mostramos que uma rede como essa pode ser treinada de ponta a ponta a partir de muito poucas imagens e supera o melhor método anterior (uma rede convolucional de janela deslizante) no desafio ISBI para segmentação de estruturas neuronais em pilhas de microscopia eletrônica. Usando a mesma rede treinada em imagens de microscopia de luz transmitida (contraste de fase e DIC), vencemos o desafio de rastreamento celular ISBI 2015 nessas categorias por uma grande margem. Além disso, a rede é rápida. A segmentação de uma imagem de 512x512 leva menos de um segundo em uma GPU recente. A implementação completa (baseada em Caffe) e as redes treinadas estão disponíveis em http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.

UNetMotionModel[[diffusers.UNetMotionModel]]

diffusers.UNetMotionModel[[diffusers.UNetMotionModel]]

diffusers.UNetMotionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, down_block_types: tuple[str, ...] = ('CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'DownBlockMotion'), up_block_types: tuple[str, ...] = ('UpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion'), block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280), layers_per_block: int | tuple[int] = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1280, transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, transformer_layers_per_mid_block: int | tuple[int] | None = None, temporal_transformer_layers_per_mid_block: int | tuple[int] | None = 1, use_linear_projection: bool = False, num_attention_heads: int | tuple[int, ...] = 8, motion_max_seq_length: int = 32, motion_num_attention_heads: int | tuple[int, ...] = 8, reverse_motion_num_attention_heads: int | tuple[int, ...] | tuple[tuple[int, ...], ...] | None = None, use_motion_mid_block: bool = True, mid_block_layers: int = 1, encoder_hid_dim: int | None = None, encoder_hid_dim_type: str | None = None, addition_embed_type: str | None = None, addition_time_embed_dim: int | None = None, projection_class_embeddings_input_dim: int | None = None, time_cond_proj_dim: int | None = None)

Fonte

Um modelo de UNet 2D condicional modificado que recebe uma amostra com ruído, um estado condicional e um passo de tempo e retorna uma saída com a forma da amostra.

Este modelo herda de ModelMixin. Consulte a documentação da superclasse para seus métodos genéricos implementados para todos os modelos (como download ou salvamento).

disable_freeu[[diffusers.UNetMotionModel.disable_freeu]]

disable_freeu()

Fonte

Desativa o mecanismo FreeU.

enable_forward_chunking[[diffusers.UNetMotionModel.enable_forward_chunking]]

enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)

Fonte

Parâmetros:

chunk_size (int, opcional) : O tamanho do bloco das camadas feed-forward. Se não for especificado, a camada feed-forward será executada individualmente sobre cada tensor com dim=dim.

dim (int, opcional, padrão 0) : A dimensão sobre a qual o cálculo feed-forward deve ser dividido em blocos. Escolha entre dim=0 (lote) ou dim=1 (comprimento da sequência).

Define o processador de atenção para usar feed forward chunking.

enable_freeu[[diffusers.UNetMotionModel.enable_freeu]]

enable_freeu(s1: float, s2: float, b1: float, b2: float)

Fonte

Parâmetros:

s1 (float) : Fator de escala para a etapa 1 para atenuar as contribuições dos recursos de skip. Isso é feito para mitigar o "efeito de sobre-suavização" no processo de desruidamento aprimorado.

s2 (float) : Fator de escala para a etapa 2 para atenuar as contribuições dos recursos de skip. Isso é feito para mitigar o "efeito de sobre-suavização" no processo aprimorado de remoção de ruído.

b1 (float) : Fator de escala para a etapa 1 para amplificar as contribuições dos recursos do backbone.

b2 (float) : Fator de escala para a etapa 2 para amplificar as contribuições dos recursos do backbone.

Ativa o mecanismo FreeU de https://huggingface.co/papers/2309.11497.

Os sufixos após os fatores de escala representam os blocos de estágio em que eles estão sendo aplicados.

Consulte o repositório oficial para combinações de valores que são conhecidas por funcionar bem em diferentes pipelines, como Stable Diffusion v1, v2 e Stable Diffusion XL.

forward[[diffusers.UNetMotionModel.forward]]

forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, added_cond_kwargs: dict[str, torch.Tensor] | None = None, down_block_additional_residuals: tuple[torch.Tensor] | None = None, mid_block_additional_residual: typing.Optional[torch.Tensor] = None, return_dict: bool = True)

Fonte

Parâmetros:

sample (torch.Tensor) : O tensor de entrada com ruído, com a seguinte forma (batch, num_frames, channel, height, width.

timestep (torch.Tensor ou float ou int) : O número de timesteps para desruidar uma entrada.

encoder_hidden_states (torch.Tensor) : Os estados ocultos do codificador com a forma (batch, sequence_length, feature_dim).

timestep_cond : (torch.Tensor, opcional, padrão None): embeddings condicionais para o timestep. Se fornecidos, os embeddings serão somados às amostras passadas pela camada self.time_embedding para obter os embeddings de timestep.

attention_mask (torch.Tensor, opcional, padrão None) : Uma máscara de atenção com forma (batch, key_tokens) é aplicada a encoder_hidden_states. Se 1, a máscara é mantida; caso contrário, se 0, ela é descartada. A máscara será convertida em um viés, que adiciona valores negativos grandes às pontuações de atenção correspondentes aos tokens "descartados".

cross_attention_kwargs (dict, opcional) : Um dicionário de kwargs que, se especificado, é passado para o AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.

added_cond_kwargs (dict, opcional) : Um dicionário de embeddings adicionais (por exemplo, embeddings de texto e de tempo) usados para condicionar o modelo.

down_block_additional_residuals : (tuple de torch.Tensor, opcional): Uma tupla de tensores que, se especificada, é adicionada aos resíduos dos blocos down do unet.

mid_block_additional_residual : (torch.Tensor, opcional): Um tensor que, se especificado, é adicionado ao residual do bloco unet intermediário.

return_dict (bool, opcional, padrão True) : Se deve ou não retornar um UNetMotionOutput em vez de uma tupla simples.

Retorna: UNetMotionOutput ou tuple

Se return_dict for True, um UNetMotionOutput é retornado; caso contrário, uma tuple é retornada, em que o primeiro elemento é o tensor da amostra.

O método forward do UNetMotionModel.

freeze_unet2d_params[[diffusers.UNetMotionModel.freeze_unet2d_params]]

freeze_unet2d_params()

Fonte

Congele os pesos apenas do UNet2DConditionModel e deixe os módulos de movimento sem congelamento para o ajuste fino.

fuse_qkv_projections[[diffusers.UNetMotionModel.fuse_qkv_projections]]

fuse_qkv_projections()

Fonte

Ativa as projeções QKV fundidas. Para os módulos de autoatenção, todas as matrizes de projeção (ou seja, query, key, value) são fundidas. Para os módulos de atenção cruzada, as matrizes de projeção de key e value são fundidas.

> Esta API é 🧪 experimental.

set_default_attn_processor[[diffusers.UNetMotionModel.set_default_attn_processor]]

set_default_attn_processor()

Fonte

Desativa os processadores de atenção personalizados e define a implementação padrão de atenção.

unfuse_qkv_projections[[diffusers.UNetMotionModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Fonte

Desativa a projeção QKV fundida, se estiver habilitada.

> Esta API é 🧪 experimental.

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)

Fonte

Parâmetros:

sample (torch.Tensor de forma (batch_size, num_channels, num_frames, height, width)) : Os estados ocultos de saída condicionados à entrada encoder_hidden_states. Saída da última camada do modelo.

A saída de UNet3DConditionModel.

Xet Storage Details

Size:
11.7 kB
·
Xet hash:
547fb4906af0bdc613721348f074c89cb9ca9e8271f4da51030d594918145577

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.