# HEART для Swift/MLX: локальное увеличение изображений на Apple Silicon

Источник: https://modelium.tech/zhurnal/heart-mlx-swift-0-1-0-image-upscale-apple-silicon/

29 сентября 2026 года опубликован тег mlx-heart-swift v0.1.0: порт модели HEART для локального увеличения изображений через Swift/MLX на Apple Silicon. Доступны четыре FP16-чекпойнта: один для 2× и три для 4×. Это библиотека для разработчика, а не готовое приложение; заявленные скорость и качество измерены автором порта, Modelium их не воспроизводил.

HEART для Swift/MLX: локальный апскейл на Mac

29 сентября 2026 года автор порта пометил тегом **v0.1.0** репозиторий `xocialize/mlx-heart-swift`. Это реализация модели сверхразрешения HEART в Swift/MLX для Apple Silicon. Модель не новая: исходные веса `Phips/HEART` появились раньше; новость — доступные MLX-конверсии и опубликованный код запуска в экосистеме MLXEngine. В репозитории есть исходники, тесты и пример вызова; отдельного GitHub Release на момент проверки нет. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

## Что доступно

В `mlx-community/HEART-fp16` опубликованы **четыре отдельных файла весов**: `heart_4x_otf_v2_fp16.safetensors` (режим `.fidelity`, 4×), `heart_4x_otf_gan_fp16.safetensors` (`.sharp`, 4×), `heart_4x_pretrain_fp16.safetensors` (`.clean`, 4×) и `heart_2x_fp16.safetensors` (`.clean2x`, 2×). Для сравнения точности есть отдельный репозиторий FP32. Это варианты одной модели, а не четыре разные архитектуры; рантайм загружает выбранный файл при первом использовании. Исходный репозиторий Phips содержит соответствующие четыре PyTorch-чекпойнта и LICENSE. В карточке конверсии указан фиксированный SHA исходных весов `868878ce…`. [s2](#src-s2) [s3](#src-s3) [s4](#src-s4)

Исходные код и веса HEART помечены **Apache-2.0**; порт также распространяется под Apache-2.0. Такая лицензия допускает коммерческое использование при соблюдении её условий, но это не обещание пригодности результата для конкретного проекта. Заявление о тренировке на CC0-корпусе принадлежит авторам карточек; отдельно проверять права на свои входные изображения всё равно необходимо. [s2](#src-s2) [s3](#src-s3) [s4](#src-s4)

## Как выбрать и подключить

Для повреждённых JPEG, размытия и шума автор порта рекомендует `.fidelity`; `.sharp` ориентирован на более выразительную текстуру, `.clean` — на чистый исходник. `.clean2x` использует собственные веса для 2×. В документации отмечено, что запрос 2× при выбранном `.fidelity` выполняется через 4× с последующим уменьшением, а не переключается автоматически на `.clean2x`. Это разные маршруты обработки, и качество лучше сравнивать на своих изображениях. [s2](#src-s2) [s5](#src-s5)

Это **Swift Package**, а не интерфейс для загрузки фото. В `Package.swift` указаны macOS 26, зависимости `mlx-engine-swift` от 0.63.0, `mlx-realesrgan-swift` от 0.7.0 и `mlx-swift` от 0.30.0. Разработчик добавляет пакет в своё Swift-приложение, импортирует `MLXServeCore` и `MLXHEART`, регистрирует `HEARTUpscalePackage.registration` с `HEARTConfiguration(variant: .fidelity, quant: .fp16)` и передаёт `ImageUpscaleRequest` в `MLXServeEngine.run`. Точный пример есть в README закреплённого тега; не переносите этот рецепт на обычный Python MLX без проверки совместимости. [s2](#src-s2) [s6](#src-s6)

## Что значат цифры и где осторожность

По **замерам автора порта** на M5 Max, FP16-вариант `.fidelity` показал около 450 мс на мегапиксель выходного изображения в одном тесте 256² → 1024². Это не независимый тест Modelium и не обещание скорости на другом Mac: в отчёте для 512² → 2048² отмечен рост времени между повторами. Заявленные показатели согласия с PyTorch и различия FP16/FP32 также относятся к методике автора и конкретным наборам изображений; сравнение с ONNX у автора расходится для одного из исходных чекпойнтов, поэтому не выдаём ONNX за безусловный эталон. [s5](#src-s5)

При обработке больших изображений пакет использует тайлы. У HEART нормализация зависит от изображения целиком, поэтому тайловый результат **не идентичен** обработке одним проходом. Автор выбрал тайлы 512² с перекрытием 32 пикселя в рамках своего тестового набора; это не гарантия бесшовности на любом входе. Размер файла весов не равен минимальной требуемой памяти: расход зависит от размеров кадра и режима обработки. Начинайте с маленького тестового изображения и сравните детали/швы на собственном материале, прежде чем интегрировать библиотеку в конвейер. [s2](#src-s2) [s5](#src-s5)

## Источники

1. [mlx-heart-swift v0.1.0, аннотированный Git tag](https://api.github.com/repos/xocialize/mlx-heart-swift/git/tags/c71f643411abf2afa4f555c0bb4d1abfc2907491) — получено 2026-09-29
2. [mlx-heart-swift README, закреплённый тег v0.1.0](https://github.com/xocialize/mlx-heart-swift/blob/v0.1.0/README.md) — получено 2026-09-29
3. [mlx-community/HEART-fp16, карточка и файлы в ревизии 441fd099](https://huggingface.co/mlx-community/HEART-fp16/tree/441fd09964f2475cf3dde796442a94bd83fd4b55) — получено 2026-09-29
4. [Phips/HEART, исходные файлы и LICENSE в ревизии 868878ce](https://huggingface.co/Phips/HEART/tree/868878ce4c253a8061300f923b620fdc6edf090a) — получено 2026-09-29
5. [PORTING-SPEC.md: авторские проверки, скорость, тайлинг, ограничения ONNX](https://github.com/xocialize/mlx-heart-swift/blob/v0.1.0/PORTING-SPEC.md) — получено 2026-09-29
6. [Package.swift, совместимость и зависимости](https://github.com/xocialize/mlx-heart-swift/blob/v0.1.0/Package.swift) — получено 2026-09-29
