Buckets:

mishig's picture
|
download
raw
9.38 kB

UNet2DModel

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.

UNet2DModel[[diffusers.UNet2DModel]]

diffusers.UNet2DModel[[diffusers.UNet2DModel]]

diffusers.UNet2DModel(sample_size: int | tuple[int, int] | None = None, in_channels: int = 3, out_channels: int = 3, center_input_sample: bool = False, time_embedding_type: str = 'positional', time_embedding_dim: int | None = None, freq_shift: int = 0, flip_sin_to_cos: bool = True, down_block_types: tuple[str, ...] = ('DownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D'), mid_block_type: str | None = 'UNetMidBlock2D', up_block_types: tuple[str, ...] = ('AttnUpBlock2D', 'AttnUpBlock2D', 'AttnUpBlock2D', 'UpBlock2D'), block_out_channels: tuple[int, ...] = (224, 448, 672, 896), layers_per_block: int = 2, mid_block_scale_factor: float = 1, downsample_padding: int = 1, downsample_type: str = 'conv', upsample_type: str = 'conv', dropout: float = 0.0, act_fn: str = 'silu', attention_head_dim: int | None = 8, norm_num_groups: int = 32, attn_norm_num_groups: int | None = None, norm_eps: float = 1e-05, resnet_time_scale_shift: str = 'default', add_attention: bool = True, class_embed_type: str | None = None, num_class_embeds: int | None = None, num_train_timesteps: int | None = None)

Fuente

Parámetros:

sample_size (int o tuple[int, int], opcional, valor predeterminado None) : Altura y ancho de la muestra de entrada/salida. Las dimensiones deben ser un múltiplo de 2 ** (len(block_out_channels) - 1).

in_channels (int, opcional, valor predeterminado 3) : Número de canales en la muestra de entrada.

out_channels (int, opcional, valor predeterminado 3) : Número de canales en la salida.

center_input_sample (bool, opcional, por defecto False) : Si se debe centrar la muestra de entrada.

time_embedding_type (str, opcional, por defecto "positional") : Tipo de incrustación temporal a utilizar.

freq_shift (int, opcional, valor predeterminado 0) : Desplazamiento de frecuencia para la incrustación temporal de Fourier.

flip_sin_to_cos (bool, opcional, valor predeterminado True) : Si se debe cambiar sin a cos para la incrustación temporal de Fourier.

down_block_types (tuple[str], opcional, por defecto ("DownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D")) : tupla de tipos de bloques de muestreo descendente.

mid_block_type (str, opcional, valor predeterminado "UNetMidBlock2D") : Tipo de bloque para la parte media de UNet, puede ser UNetMidBlock2D o None.

up_block_types (tuple[str], opcional, por defecto ("AttnUpBlock2D", "AttnUpBlock2D", "AttnUpBlock2D", "UpBlock2D")) : tupla de tipos de bloques de remuestreo ascendente.

block_out_channels (tuple[int], opcional, valor predeterminado (224, 448, 672, 896)) : tupla de canales de salida de bloques.

layers_per_block (int, opcional, valor predeterminado 2) : El número de capas por bloque.

mid_block_scale_factor (float, opcional, valor predeterminado 1) : El factor de escala para el bloque intermedio.

downsample_padding (int, opcional, valor predeterminado 1) : El relleno para la convolución de muestreo descendente.

downsample_type (str, opcional, por defecto conv) : El tipo de downsampling para las capas de downsampling. Elija entre "conv" y "resnet"

upsample_type (str, opcional, por defecto conv) : El tipo de upsample para las capas de upsampling. Elija entre "conv" y "resnet"

dropout (float, opcional, valor predeterminado 0.0) : La probabilidad de dropout a utilizar.

act_fn (str, opcional, por defecto "silu") : La función de activación a utilizar.

attention_head_dim (int, opcional, valor predeterminado 8) : La dimensión de la cabeza de atención.

norm_num_groups (int, opcional, valor predeterminado 32) : El número de grupos para la normalización.

attn_norm_num_groups (int, opcional, valor predeterminado None) : Si se establece en un entero, se creará una capa de group norm en la capa Attention del bloque intermedio con el número de grupos indicado. Si se deja como None, la capa de group norm solo se creará si resnet_time_scale_shift está establecido en default, y, si se crea, tendrá norm_num_groups grupos.

norm_eps (float, opcional, valor predeterminado 1e-5) : El epsilon para la normalización.

resnet_time_scale_shift (str, opcional, valor predeterminado "default") : Configuración de desplazamiento de escala temporal para los bloques ResNet (ver ResnetBlock2D). Elija entre default o scale_shift.

class_embed_type (str, opcional, valor predeterminado None) : El tipo de embedding de clase que se utilizará y que finalmente se suma a los embeddings de tiempo. Elija entre None, "timestep" o "identity".

num_class_embeds (int, opcional, valor predeterminado None) : Dimensión de entrada de la matriz de incrustación aprendible que se proyectará a time_embed_dim al realizar condicionamiento por clase con class_embed_type igual a None.

Un modelo UNet 2D que toma una muestra con ruido 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).

forward[[diffusers.UNet2DModel.forward]]

forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], class_labels: 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, channel, height, width).

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

class_labels (torch.Tensor, opcional, valor predeterminado None) : Etiquetas de clase opcionales para la condición. Sus incrustaciones se sumarán con las incrustaciones del paso de tiempo.

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

Devuelve: UNet2DOutput o tuple

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

El método forward de UNet2DModel.

UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]]

diffusers.models.unets.unet_2d.UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]]

diffusers.models.unets.unet_2d.UNet2DOutput(sample: Tensor)

Fuente

Parámetros:

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

La salida de UNet2DModel.

Xet Storage Details

Size:
9.38 kB
·
Xet hash:
82cfb24aa2ee9e437c283e2cf3003e1d10888f7baa632b2f76daaaccecb43f51

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