Diffusers documentation
UNet1DModel
UNet1DModel
Модель UNet была первоначально представлена Ronneberger et al. для сегментации биомедицинских изображений, однако она также широко используется в 🤗 Diffusers, поскольку на выходе формирует изображения того же размера, что и входные. Это один из ключевых компонентов диффузионной системы, так как именно он обеспечивает непосредственный процесс диффузии. В 🤗 Diffusers существует несколько вариантов модели UNet в зависимости от её размерности и того, является ли она условной моделью. Здесь представлена одномерная модель UNet.
Аннотация из статьи:
Существует широкое согласие в том, что успешное обучение глубоких сетей требует тысяч размеченных обучающих примеров. В данной статье мы представляем сеть и стратегию обучения, которые опираются на активное использование аугментации данных для более эффективного использования доступных размеченных примеров. Архитектура состоит из сжимающего пути для захвата контекста и симметричного расширяющего пути, обеспечивающего точную локализацию. Мы показываем, что такая сеть может быть обучена end-to-end по очень малому количеству изображений и превосходит предыдущий лучший метод (сверточная сеть со скользящим окном) на конкурсе ISBI по сегментации нейронных структур в электронных микроскопических стопках. Используя ту же сеть, обученную на изображениях, полученные с помощью световой микроскопии (фазовый контраст и DIC), мы с большим отрывом выиграли конкурс ISBI по отслеживанию клеток 2015 года в этих категориях. Кроме того, сеть работает быстро. Сегментация изображения 512x512 занимает менее секунды на современном GPU. Полная реализация (на основе Caffe) и обученные сети доступны по адресу http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
UNet1DModel
класс 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 )
Параметры
- sample_size (
int, необязательный) — Длина выборки по умолчанию. Должна быть настраиваемой во время выполнения. - in_channels (
int, необязательный, по умолчанию 2) — Количество каналов во входном образце. - out_channels (
int, необязательный, по умолчанию 2) — Количество каналов на выходе. - extra_in_channels (
int, необязательный, по умолчанию 0) — Количество дополнительных каналов, добавляемых на вход первого down-блока. Полезно в случаях, когда входные данные содержат больше каналов, чем было предусмотрено при первоначальном проектировании модели. - time_embedding_type (
str, необязательный, по умолчанию"fourier") — Тип используемого временного эмбеддинга. - freq_shift (
float, необязательный, по умолчанию 0.0) — Сдвиг частоты для временного встраивания Фурье. - flip_sin_to_cos (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли заменять sin на cos во временном вложении Фурье. - down_block_types (
tuple[str], необязательный, по умолчанию("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — кортеж типов блоков понижающего дискретизирования. - up_block_types (
tuple[str], необязательный, по умолчанию("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — кортеж типов блоков апсэмплинга. - block_out_channels (
tuple[int], необязательный, по умолчанию(32, 32, 64)) — кортеж количества выходных каналов блоков. - mid_block_type (
str, необязательный, по умолчанию"UNetMidBlock1D") — Тип блока для средней части UNet. - out_block_type (
str, необязательный, по умолчаниюNone) — Необязательный блок обработки вывода UNet. - act_fn (
str, необязательный, по умолчаниюNone) — Необязательная функция активации в блоках UNet. - norm_num_groups (
int, необязательный, по умолчанию 8) — количество групп для нормализации. - layers_per_block (
int, необязательный, по умолчанию 1) — Количество слоев в каждом блоке. - downsample_each_block (
int, необязательный, по умолчаниюFalse) — Экспериментальная функция для использования UNet без апсемплинга.
Модель 1D UNet, которая принимает зашумленный образец и шаг времени и возвращает вывод той же формы.
Эта модель наследуется от ModelMixin. См. документацию суперкласса для его универсальных методов, реализованных для всех моделей (например, загрузка или сохранение).
forward
< source >( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple
Параметры
- sample (
torch.Tensor) — Шумовой входной тензор со следующей формой(batch_size, num_channels, sample_size). - timestep (
torch.Tensorилиfloatилиint) — Количество шагов для денойзинга входных данных. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать UNet1DOutput вместо обычного кортежа.
Возвращает
UNet1DOutput или tuple
Если return_dict равно True, возвращается UNet1DOutput, иначе возвращается tuple, где первый элемент — это тензор выборки.
Метод forward модели UNet1DModel.
UNet1DOutput
класс diffusers.models.unets.unet_1d.UNet1DOutput
< source >( sample: Tensor )
Вывод UNet1DModel.