Diffusers documentation

UNet1DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet1DModel

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 1D.

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.

UNet1DModel

classe diffusers.UNet1DModel

< >

( sample_size: int = 65536sample_rate: int | None = Nonein_channels: int = 2out_channels: int = 2extra_in_channels: int = 0time_embedding_type: str = 'fourier'time_embedding_dim: int | None = Noneflip_sin_to_cos: bool = Trueuse_timestep_embedding: bool = Falsefreq_shift: float = 0.0down_block_types: tuple = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D')up_block_types: tuple = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip')mid_block_type: str = 'UNetMidBlock1D'out_block_type: str = Noneblock_out_channels: tuple = (32, 32, 64)act_fn: str = Nonenorm_num_groups: int = 8layers_per_block: int = 1downsample_each_block: bool = False )

Parâmetros

  • sample_size (int, opcional) — Comprimento padrão da amostra. Deve ser adaptável em tempo de execução.
  • in_channels (int, opcional, padrão 2) — Número de canais na amostra de entrada.
  • out_channels (int, opcional, padrão 2) — Número de canais na saída.
  • extra_in_channels (int, opcional, padrão 0) — Número de canais adicionais a serem adicionados à entrada do primeiro bloco de down. Útil para casos em que os dados de entrada possuem mais canais do que o modelo foi inicialmente projetado para.
  • time_embedding_type (str, opcional, padrão "fourier") — Tipo de incorporação de tempo a ser usado.
  • freq_shift (float, opcional, padrão 0.0) — Deslocamento de frequência para incorporação temporal de Fourier.
  • flip_sin_to_cos (bool, opcional, padrão False) — Se deve inverter sin para cos na incorporação de tempo de Fourier.
  • down_block_types (tuple[str], opcional, padrão ("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — tupla de tipos de blocos de downsampling.
  • up_block_types (tuple[str], opcional, padrão ("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — tupla de tipos de blocos de upsample.
  • block_out_channels (tuple[int], opcional, padrão (32, 32, 64)) — tupla de canais de saída dos blocos.
  • mid_block_type (str, opcional, padrão "UNetMidBlock1D") — Tipo de bloco para o meio do UNet.
  • out_block_type (str, opcional, padrão None) — Bloco de processamento de saída opcional do UNet.
  • act_fn (str, opcional, padrão None) — Função de ativação opcional nos blocos do UNet.
  • norm_num_groups (int, opcional, padrão 8) — O número de grupos para normalização.
  • layers_per_block (int, opcional, padrão 1) — O número de camadas por bloco.
  • downsample_each_block (int, opcional, padrão False) — Recurso experimental para usar uma UNet sem upsampling.

Um modelo UNet 1D que recebe uma amostra com ruído e um timestep 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).

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple

Parâmetros

  • sample (torch.Tensor) — O tensor de entrada com ruído, com a seguinte forma (batch_size, num_channels, sample_size).
  • timestep (torch.Tensor ou float ou int) — O número de timesteps para desruidar uma entrada.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um UNet1DOutput em vez de uma tupla simples.

Retorna

UNet1DOutput ou tuple

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

O método forward do UNet1DModel.

UNet1DOutput

classe diffusers.models.unets.unet_1d.UNet1DOutput

< >

( sample: Tensor )

Parâmetros

  • sample (torch.Tensor de forma (batch_size, num_channels, sample_size)) — Os estados ocultos de saída da última camada do modelo.

A saída de UNet1DModel.

Update on GitHub