РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
371 of 769 menu

Класс UpsamplingBilinear2d

Класс UpsamplingBilinear2d применяется для увеличения пространственного разрешения многоканальных изображений с использованием билинейной интерполяции. Первым параметром принимается желаемый выходной размер в виде кортежа (height, width) или масштабный коэффициент scale_factor. Входной тензор должен иметь форму (batch, channels, height, width).

Синтаксис

torch.nn.UpsamplingBilinear2d( size=None, scale_factor=None, align_corners=False )

Параметры класса:

  • size - желаемый выходной размер (H, W);
  • scale_factor - множитель масштабирования для высоты и ширины;
  • align_corners - если True, выравнивает угловые пиксели для согласованности с другими операциями.

Пример с указанием размера

Создадим модуль для масштабирования изображения до размера 8x8:

import torch upsample = torch.nn.UpsamplingBilinear2d(size=(8, 8)) t = torch.randn(1, 3, 4, 4) res = upsample(t) print(res.shape)

Результат выполнения кода:

torch.Size([1, 3, 8, 8])

Пример с масштабным коэффициентом

Увеличим изображение в 2 раза с помощью параметра scale_factor:

import torch upsample = torch.nn.UpsamplingBilinear2d(scale_factor=2) t = torch.randn(1, 1, 3, 3) res = upsample(t) print(res.shape)

Результат выполнения кода:

torch.Size([1, 1, 6, 6])

Пример с выравниванием углов

Сравним поведение с align_corners=False и True:

import torch upsample1 = torch.nn.UpsamplingBilinear2d( scale_factor=2, align_corners=False ) upsample2 = torch.nn.UpsamplingBilinear2d( scale_factor=2, align_corners=True ) t = torch.tensor([[ [[1.0, 2.0], [3.0, 4.0]] ]]) res1 = upsample1(t) res2 = upsample2(t) print(res1[:, :, 0, 0]) print(res2[:, :, 0, 0])

Результат выполнения кода:

tensor([[[1.0000]]]) tensor([[[1.0000]]])

Пример в составе модели

Используем слой в последовательной модели для увеличения разрешения карт признаков:

import torch model = torch.nn.Sequential( torch.nn.Conv2d(3, 64, 3, padding=1), torch.nn.ReLU(), torch.nn.UpsamplingBilinear2d(scale_factor=2) ) t = torch.randn(2, 3, 16, 16) res = model(t) print(res.shape)

Результат выполнения кода:

torch.Size([2, 64, 32, 32])

Смотрите также

  • класс Upsample,
    который обеспечивает более гибкое масштабирование с разными режимами интерполяции
  • класс UpsamplingNearest2d,
    который выполняет масштабирование методом ближайшего соседа
  • класс ConvTranspose2d,
    который выполняет увеличение разрешения с обучаемыми параметрами
  • класс PixelShuffle,
    который выполняет перестановку пикселей для увеличения разрешения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить