Buckets:

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

UNetMotionModel

El modelo UNet fue introducido originalmente por Ronneberger et al para la segmentación de imágenes biomédicas, pero también se utiliza comúnmente en 🤗 Diffusers porque genera imágenes del mismo tamaño que la entrada. Es uno de los componentes más importantes de un sistema de difusión, ya que facilita el proceso de difusión propiamente dicho. Existen varias variantes del modelo UNet en 🤗 Diffusers, dependiendo de su número de dimensiones y de si es un modelo condicional o no. Este es un modelo UNet 2D.

El resumen del artículo es:

Existe un amplio consenso de que el entrenamiento exitoso de redes profundas requiere miles de muestras de entrenamiento anotadas. En este artículo, presentamos una red y una estrategia de entrenamiento que se basa en el uso intensivo de aumentación de datos para utilizar las muestras anotadas disponibles de manera más eficiente. La arquitectura consiste en una ruta contractiva para capturar el contexto y una ruta expansiva simétrica que permite una localización precisa. Demostramos que una red de este tipo puede entrenarse de extremo a extremo a partir de muy pocas imágenes y supera al mejor método anterior (una red convolucional de ventana deslizante) en el desafío ISBI para la segmentación de estructuras neuronales en pilas de microscopía electrónica. Utilizando la misma red entrenada con imágenes de microscopía de luz transmitida (contraste de fase y DIC), ganamos el desafío de seguimiento celular ISBI 2015 en estas categorías por un amplio margen. Además, la red es rápida. La segmentación de una imagen de 512x512 toma menos de un segundo en una GPU reciente. La implementación completa (basada en Caffe) y las redes entrenadas están disponibles en 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)

Fuente

Un modelo de UNet 2D condicional modificado que toma una muestra con ruido, un estado condicional y un paso de tiempo y devuelve una salida con forma de muestra.

Este modelo hereda de ModelMixin. Consulta la documentación de la superclase para sus métodos genéricos implementados para todos los modelos (como la descarga o el guardado).

disable_freeu[[diffusers.UNetMotionModel.disable_freeu]]

disable_freeu()

Fuente

Desactiva el mecanismo FreeU.

enable_forward_chunking[[diffusers.UNetMotionModel.enable_forward_chunking]]

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

Fuente

Parámetros:

chunk_size (int, opcional) : El tamaño de bloque de las capas feed-forward. Si no se especifica, se ejecutará la capa feed-forward de forma individual sobre cada tensor con dim=dim.

dim (int, opcional, valor predeterminado 0) : La dimensión sobre la cual se debe dividir en bloques el cálculo de la red feed-forward. Elija entre dim=0 (lote) o dim=1 (longitud de la secuencia).

Establece el procesador de atención para usar feed forward chunking.

enable_freeu[[diffusers.UNetMotionModel.enable_freeu]]

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

Fuente

Parámetros:

s1 (float) : Factor de escala para la etapa 1 para atenuar las contribuciones de las características de salto. Esto se hace para mitigar el "efecto de sobre-almohadillado" en el proceso de desruido mejorado.

s2 (float) : Factor de escala para la etapa 2 para atenuar las contribuciones de las características de salto. Esto se hace para mitigar el "efecto de sobre-almohadillado" en el proceso de desruido mejorado.

b1 (float) : Factor de escala para la etapa 1 para amplificar las contribuciones de las características del backbone.

b2 (float) : Factor de escala para la etapa 2 para amplificar las contribuciones de las características del backbone.

Activa el mecanismo FreeU de https://huggingface.co/papers/2309.11497.

Los sufijos después de los factores de escalado representan los bloques de etapa en los que se están aplicando.

Consulte el repositorio oficial para conocer las combinaciones de valores que funcionan bien en diferentes pipelines, como Stable Diffusion v1, v2 y 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)

Fuente

Parámetros:

sample (torch.Tensor) : El tensor de entrada con ruido con la siguiente forma (batch, num_frames, channel, height, width.

timestep (torch.Tensor o float o int) : El número de pasos de tiempo para desruidar una entrada.

encoder_hidden_states (torch.Tensor) : Los estados ocultos del codificador con forma (batch, sequence_length, feature_dim).

timestep_cond : (torch.Tensor, opcional, valor predeterminado None): Incrustaciones condicionales para el paso de tiempo. Si se proporcionan, las incrustaciones se sumarán con las muestras que pasan por la capa self.time_embedding para obtener las incrustaciones del paso de tiempo.

attention_mask (torch.Tensor, opcional, valor predeterminado None) : Una máscara de atención de forma (batch, key_tokens) se aplica a encoder_hidden_states. Si es 1, la máscara se conserva; en caso contrario, si es 0, se descarta. La máscara se convertirá en un sesgo, que añade valores negativos grandes a las puntuaciones de atención correspondientes a los tokens "descartados".

cross_attention_kwargs (dict, opcional) : Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define bajo self.processor en diffusers.models.attention_processor.

added_cond_kwargs (dict, opcional) : Un diccionario de embeddings adicionales (p. ej., embeddings de texto y tiempo) utilizados para condicionar el modelo.

down_block_additional_residuals : (tuple de torch.Tensor, opcional): Una tupla de tensores que, si se especifica, se suma a los residuos de los bloques down del unet.

mid_block_additional_residual : (torch.Tensor, opcional): Un tensor que, si se especifica, se suma al residual del bloque intermedio de unet.

return_dict (bool, opcional, valor predeterminado True) : Indica si se debe devolver un UNetMotionOutput en lugar de una tupla simple.

Devuelve: UNetMotionOutput o tuple

Si return_dict es True, se devuelve un UNetMotionOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es el tensor de la muestra.

El método forward de UNetMotionModel.

freeze_unet2d_params[[diffusers.UNetMotionModel.freeze_unet2d_params]]

freeze_unet2d_params()

Fuente

Congela los pesos solo del UNet2DConditionModel y deja los módulos de movimiento sin congelar para el ajuste fino.

fuse_qkv_projections[[diffusers.UNetMotionModel.fuse_qkv_projections]]

fuse_qkv_projections()

Fuente

Habilita las proyecciones QKV fusionadas. Para los módulos de autoatención, todas las matrices de proyección (es decir, consulta, clave y valor) se fusionan. Para los módulos de atención cruzada, las matrices de proyección de clave y valor se fusionan.

> Esta API es 🧪 experimental.

set_default_attn_processor[[diffusers.UNetMotionModel.set_default_attn_processor]]

set_default_attn_processor()

Fuente

Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.

unfuse_qkv_projections[[diffusers.UNetMotionModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Fuente

Desactiva la proyección QKV fusionada si está habilitada.

> Esta API es 🧪 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)

Fuente

Parámetros:

sample (torch.Tensor de forma (batch_size, num_channels, num_frames, height, width)) : Los estados ocultos de salida condicionados a la entrada encoder_hidden_states. Salida de la última capa del modelo.

La salida de UNet3DConditionModel.

Xet Storage Details

Size:
12 kB
·
Xet hash:
97c52d7e2fc29b32ffb3e3f5ef967e28f22db410c166291c315f2130c025c6d2

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