Нейросетевой апскейлинг 720p->1080p: настройки, модели, грабли | AiManual
AiManual Logo Ai / Manual.
29 Май 2026 Гайд

Нейросетевой апскейлинг 720p->1080p: полный гайд по граблям, настройкам и моделям

Глубокий разбор апскейлинга видео нейросетями: почему результат мыльный, как выбрать модель, контринтуитивные настройки tile size и denoise. Реальные примеры и

Почему ваш 720p после нейросети похож на акварельный сон?

Вы скачали свежий билд Real-ESRGAN, скормили ему клип в 720p, нажали кнопку и... получили размытое месиво с артефактами по краям. Звучит знакомо? Добро пожаловать в клуб. 90% проблем апскейлинга — не в моделях, а в том, что никто не читает документацию по параметрам tile и denoise. Я перелопатил десятки тестов и готов показать, где конкретно вы теряете качество.

💡
Главная истина: нейросеть не добавляет детали — она угадывает их. Если вы не поможете ей правильными настройками, угадывание превратится в бред.

Первая кровь: выбираем модель с умом

Список моделей для апскейла ширится быстрее, чем библиотеки Python. Но 90% случаев покрываются тремя архитектурами. Запомните их, остальное — нишевый хлам.

Модель Для чего VRAM (1080p, tile=256) Особенность
Real-ESRGAN (v1.3.0) Реалистичное видео, шумные исходники 4-6 GB Лучший баланс скорость/качество. Новая версия исправила баги с полосами.
SwinIR (Swin2SR) Старые фильмы, VHS, текстуры с pattern 8-12 GB Практически не галлюцинирует на текст. Требует tile осторожно.
Real-CUGAN (anime) Аниме, арт, плоские заливки 3-5 GB Не размывает линии. Игнорирует шум — иногда это плюс.
GFPGAN / CodeFormer Только лица (реставрация) 2-4 GB Никогда не применяйте на весь кадр — только на боксы лиц.

Лично я для 90% видео беру Real-ESRGAN 4x+ и меняю denoise strength от 0.1 до 0.3. Для старых плёнок — SwinIR, но с tile=160 и overlap=32, иначе память отвалится. Помните: один проход с хорошей моделью лучше, чем два прохода с говном.

⚠️ Грабли: не ставьте scale factor больше 2 за раз. Если нужно 720p -> 1080p (x1.5), лучше сделайте x2, а потом вручную ресайз до 1080p. Иначе модель нарисует галлюцинации.

Контринтуитивные настройки: о которых молчат туториалы

1 Tile size — не ставьте 512, если не хотите шахматной доски

Большой tile уменьшает количество чанков и даёт более детальный результат, но артефакты на стыках становятся заметнее. Оптимум для 1080p — tile=256, overlap=32. Если видите полосы на стыках — уменьшайте tile до 192 или увеличьте overlap до 48.

2 Denoise strength — враг скрытых деталей

Real-ESRGAN имеет встроенный denoise. Многие выкручивают его на 0.5, чтобы убить шум. В результате — пластиковые лица и потеря текстуры кожи. Правило: шумный исходник — 0.2, чистый — 0.05. И никогда не включайте denoise для аниме — Real-CUGAN справится лучше.

3 FP16 vs FP32 — скорость или точность?

FP16 даёт прирост скорости 40-50%, но на тёмных сценах возможны цветные полосы (banding). Если исходник темный и с градиентами — используйте FP32. Для аниме и ярких сцен — смело жмите FP16.

🔥
Лайфхак: если у вас Nvidia 30xx и выше, используйте TensorRT. Для Real-ESRGAN есть готовые trt-движки. Скорость возрастает в 2-3 раза без потери качества.

Предобработка: как не убить лица и текст

Апскейл видео — это не просто скормить кадры нейросети. Пропустите этап очистки — и получите дёргающийся шум на фоне, плывущие лица, мерцание текста.

  • Стабилизируйте видео перед апскейлом. Любая тряска усилит артефакты. Используйте VidToStab или FFmpeg + deshake.
  • Удалите чересстрочность (deinterlace), если исходник interlaced. Yadif или bwdif — обязательно перед апскейлом.
  • Почините цвет — если исходник с ужасным цветовым балансом, нейросеть закрепит этот ужас. Быстрая цветокоррекция через ffmpeg или lut.
  • Нормализуйте яркость — контрастные перепады заставят модель выдумывать детали в тенях.

Кстати, если вы восстанавливаете старую плёнку, стандартный denoise может убить текстуру плёнки. Правильный подход — использовать модели, обученные на физике дефектов. Отличный разбор этой темы есть в статье "Как я учил нейросеть физике дефектов пленки, а не просто размывать шум" — там показано, как сохранить зерно, убрав царапины.

Батч-процессинг и грабли с памятью

Когда вы гоните 10 000 кадров, каждая секунда экономии решает. Но большинство пайплайнов упираются в VRAM. Вот как я настраиваю chaiNNer (или свою сборку на базе Real-ESRGAN).

# Пример команды для Real-ESRGAN (один проход, tile=256, overlap=32)
realesrgan-ncnn-vulkan -i input_frames -o output_frames \
    -m models/realesrgan-x4plus \
    -s 2 -t 256 -x -f jpg -j 2:2:2

# Ключи:
# -s 2 - scale 2x (потом сжатие до 1080p)
# -t 256 - tile size
# -x — FP16 (для скорости)
# -j 2:2:2 — параллельные потоки (подберите под своё CPU)

⚠️ Грабли с памятью: если вы используете батч из нескольких фреймов, каждый кадр будет считаться независимо, но VRAM будет занята всеми сразу. Уменьшайте batch size до 1, если падаете в OOM. Лучше 1 кадр быстро, чем 2 кадра с аут-оф-мемори.

Сначала даунскейл? Парадоксальный приём

Звучит безумно, но иногда перед апскейлом 720p стоит сначала уменьшить до 540p, а потом апскейлить до 1080p. Зачем? Если исходник очень шумный, нейросеть, работающая на большом разрешении, будет усиливать шум. Даунскейл убивает высокочастотный шум, модель угадывает структуру, а второй апскейл доводит до 1080p. Тестировал на VHS-рипе — результат значительно чище, чем прямой апскейл 720p->1080p.

Этот трюк работает только для очень грязных исходников. Для нормального 720p — не надо, потеряете детали.

Лица: отдельная песня

Глаза и рты — самые сложные объекты. Нейросеть дорисовывает зубы там, где их нет, меняет выражения лиц. Если в видео много крупных планов — используйте CodeFormer или GFPGAN, но с детекцией лиц. Принцип: прогнать кадр через Real-ESRGAN, потом найти лица (MTCNN или RetinaFace), вырезать, апскейлить через GFPGAN, вклеить обратно. По ссылке есть отличный анализ того, как модели галлюцинируют лица — "RepE: Как хакнуть активации нейросети и заставить её меньше галлюцинировать". Оттуда можно почерпнуть идеи, как подавлять фантомные детали.

# Пример среза лица через OpenCV (упрощённо)
import cv2

image = cv2.imread('frame.jpg')
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    face = image[y:y+h, x:x+w]
    # отправить face в GFPGAN
    # потом заменить область на кадре

Баги: если лицо повёрнуто, детекция может не сработать. Используйте RetinaFace (надёжнее).

Как избежать пластикового эффекта

Типичная жалоба: после апскейла лица становятся как у куклы Барби. Это из-за слишком сильного denoise и / или использования GFPGAN с дефолтными настройками. Советы:

  • В GFPGAN уменьшайте strength до 0.5-0.7 (не 1.0).
  • Не обрабатывайте лица на каждом кадре — раз в 2-3 секунды, а промежуточные интерполируйте, иначе будет мерцание.
  • Используйте CodeFormer с codebook_weight=0.5 — он более аккуратный.
  • Попробуйте вообще не использовать восстановление лиц, если исходник не ужасный. Часто Real-ESRGAN вытягивает лица достаточно хорошо.
🎥
Кстати, Google недавно показал Veo 3.1 с 4K апскейлингом — там контроль консистентности и генерация из изображений. Но для обычного 720p->1080p пока что open-source решения дают больше контроля.

Финальный совет: смотрите на кадры, а не на цифры

Я перестал гнаться за PSNR и SSIM. Лучший инструмент оценки — ваши глаза. Сделайте тестовый проход на 30-60 секундах, пролистайте ключевые сцены в быстром превью (достаточно 2-3 fps). Если заметили хоть один кадр с артефактом — возвращайтесь к настройкам.

Самый недооценённый параметр — denoise strength на уровне 0.2. Поставьте его, и картинка перестанет быть мыльной. И никогда не используйте GFPGAN на каждом кадре — вставьте его только для ключевых лиц, а остальное интерполируйте. Экономия времени — в 10 раз, качество то же.

Подписаться на канал