Фотографии с бюджетных смартфонов страдают от шума и смаза при слабом освещении. Стандартные фильтры размывают текстуры. Нейросетевой апскейлинг восстанавливает детали, но прямые модели Real-ESRGAN потребляют до 2 ГБ RAM. Мы решаем эту задачу с помощью тайлового инференса и квантизации, интегрируя Real-ESRGAN, FFDNet и Zero-DCE в ваше приложение. Наш опыт — 10+ лет в мобильной разработке и 30+ проектов с AI. Экономия на облачных вычислениях за счёт on-device обработки и снижение затрат на ручную ретушь до 30% — результаты, которые получают наши клиенты.
Модели для улучшения фото
Для апскейлинга 4x применяется Real-ESRGAN: Enhanced Real-ESRGAN. Модель увеличивает 512×512 до 2048×2048, синтезируя текстуры волос и текста без размытия. FFDNet — для денойзинга при высоком ISO. Zero-DCE — для HDR-коррекции слабоосвещённых снимков. Все три запускаются через ML-рантайм с тайловым инференсом.
| Модель | Назначение | Платформа | Размер | Время обработки (12 Мп) |
|---|---|---|---|---|
| Real-ESRGAN x4 | Апскейлинг 4x | iOS, Android | ~5 МБ | 15–30 с |
| FFDNet | Денойзинг | iOS, Android | ~2 МБ | 5–10 с |
| Zero-DCE | HDR-коррекция | iOS, Android | ~1 МБ | 3–5 с |
| ESRGAN Lite | Апскейлинг 2x | Android | ~3 МБ | 10–15 с |
On-device обработка и экономия бюджета
Облачные решения стоят дорого: $0.01–0.05 за изображение плюс задержка передачи данных. Ручная ретушь одного кадра обходится в $0.50–2.00, что делает on-device обработку более выгодной. On-device обработка устраняет эти расходы. Экономия на облачных вычислениях достигает 50% при объёме 10 000+ фото в месяц. Приватность пользователей не нарушается — изображения не покидают устройство.
Как реализовать тайловый инференс на iOS?
Real-ESRGAN x4 в оригинале — 16.7M параметров, ~2 ГБ RAM при инференсе на полном разрешении. На мобильный не влезет. Решение — тайловый инференс: нарезаем изображение на перекрывающиеся патчи (tile_size=256, overlap=16), обрабатываем по очереди, собираем с feather-blending. Конвертируем PyTorch-модель в Core ML через coremltools:
import coremltools as ct import torch from realesrgan import RealESRGAN model = RealESRGAN(device='cpu', scale=4) model.load_weights('RealESRGAN_x4plus.pth') model.model.eval() example_input = torch.zeros(1, 3, 256, 256) traced = torch.jit.trace(model.model, example_input) mlmodel = ct.convert( traced, inputs=[ct.ImageType(name="input", shape=(1, 3, 256, 256), color_layout=ct.colorlayout.RGB)], compute_precision=ct.precision.FLOAT16, minimum_deployment_target=ct.target.iOS16 ) mlmodel.save("RealESRGAN_x4_tile256.mlpackage") FLOAT16 с таргетом iOS16+ переносит вычисления на ANE. На iPhone 14 инференс одного тайла — 80–120 мс. Фото 12 Мп нарезается в ~180 тайлов, итого 15–25 секунд.
let config = MLModelConfiguration() config.computeUnits = .all let model = try? RealESRGAN_x4_tile256(configuration: config) let pixelBuffer = tileImage.toCVPixelBuffer()! let output = try model?.prediction(input: .init(input: pixelBuffer)) let enhancedTile = output?.output.cgImage Когда нужен денойзинг вместо апскейлинга?
Если разрешение устраивает, но есть шум, используйте FFDNet. Модель легче (1–3 МБ) и быстрее. На iOS — через Core ML с нормализацией входных данных. Популярная ошибка: забывают нормализовать пиксели [0,1] — модель выдаёт чёрный или засвеченный результат.
Пошаговая инструкция по интеграции
- Выбор модели. Определите задачу: апскейлинг, денойзинг или HDR. Для максимального качества — Real-ESRGAN, для быстрого 2x — ESRGAN Lite.
- Конвертация. Конвертируйте PyTorch-модель в Core ML или TFLite с квантизацией FP16/INT8. Используйте таргет iOS16+ для ANE, GPU Delegate для Android.
- Реализация тайлового инференса. Размер тайла 256–512, перекрытие 8–32. Примените feather-blending для устранения стыков.
- Интеграция в UI. Добавьте прогресс-бар с счётчиком тайлов. Инференс — в фоновом потоке.
- Тестирование. Проверьте на 10+ устройствах, замерьте PSNR/SSIM и время обработки.
| Типичная ошибка | Последствия | Решение |
|---|---|---|
| Некорректная нормализация | Чёрный/белый результат | Нормализация [0,1] до конвертации |
| Отсутствие feather-blending | Видимые стыки тайлов | Использовать overlap+blend |
| Синхронный инференс на main thread | Зависание, watchdog | Фоновый поток с прогрессом |
| Использование CPU вместо GPU/ANE | Медленная обработка | Подключить GpuDelegate / ANE |
Что входит в работу
- Подбор модели под задачи и целевые устройства.
- Конвертация PyTorch/ONNX в Core ML / TFLite с оптимизацией под ANE/GPU.
- Реализация тайлового инференса с feather-blending.
- Интеграция в UI с прогресс-трекингом.
- Тестирование на 10+ реальных устройствах, замеры скорости и качества.
- Документация по интеграции и поддержка в течение месяца.
Ориентиры по срокам
Одна платформа, базовая модель (денойзинг или апскейлинг) — 2–3 недели. Обе платформы с несколькими моделями, настройкой качества и сложным feather-blending — 5–8 недель.
Получите консультацию по вашему проекту — оценим сложность и подберём модель. Закажите интеграцию под ключ с гарантией производительности.







