Diffusers documentation
UNet1DModel
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
< source >( 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ãoFalse) — 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ãoNone) — Bloco de processamento de saída opcional do UNet. - act_fn (
str, opcional, padrãoNone) — 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ãoFalse) — 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
< source >( 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.Tensoroufloatouint) — O número de timesteps para desruidar uma entrada. - return_dict (
bool, opcional, padrãoTrue) — 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
< source >( sample: Tensor )
A saída de UNet1DModel.