⚠️ Статус проекта: Proof of Concept (POC). Это исследовательский прототип, демонстрирующий принцип работы, а не готовый продукт. Проект не предназначен для production-использования. Основные ограничения описаны ниже.
Экспериментальный протокол передачи данных для экстремально низких битрейтов и плохих каналов связи.
«Феникс» — это исследовательский проект, который доказывает, что для передачи визуальной и звуковой информации не нужно передавать каждый пиксель или сэмпл. Достаточно передать «слепок сути» (латентное представление), а на приемнике восстановить его с помощью нейросети.
Проект вдохновлен идеей семантического сжатия, устойчивости к шуму и передачи смысла вместо данных. Важно: «Феникс» не создаёт новые кодеки — он использует готовые нейросетевые модели (CompressAI, EnCodec) в качестве ядра и добавляет слой помехоустойчивости (seed) и логику адаптации.
- Семантическая передача: Вместо пикселей или сэмплов передается «слепок сути» (латентное представление). Это позволяет достичь экстремально низких битрейтов.
- Использование готовых кодеков: В качестве ядра используются проверенные нейросетевые модели (CompressAI для видео, EnCodec для аудио). Протокол не пытается заменить их, а надстраивается над ними.
- Слой помехоустойчивости (Seed): Для каналов с предсказуемыми помехами используется механизм «семени» (4 байта). Приемник генерирует тот же шум и вычитает его, восстанавливая кадр.
- (Ограничение: работает только при известном профиле шума).
- Адаптивность: Протокол поддерживает выбор уровня качества (Quality 1/3/6) в зависимости от состояния канала. Это позволяет балансировать между размером и детализацией.
- Сохранение пропорций: Реализован паддинг и обрезка для сохранения исходного размера и формы кадра (без искажений).
- Видео (Quality=6): Сжатие фото 256x256 до ~3.7 КБ (вместо 57 КБ исходного JPEG). Качество: узнаваемое, слегка «мыльное», но с сохранением эмоций.
- Видео (Quality=1): Сжатие до ~500 байт. Качество: сильно размытое, но узнаваемое. Работает там, где классика рассыпается.
- Аудио (EnCodec, 1.5 kbps): Сжатие 3 секунд речи до ~900 байт. Слова разборчивы, интонация сохраняется (голос «роботизирован»).
- Видеозвонок (POC): Прототип (видео + аудио) с задержкой ~1 секунда и эхом. Это доказательство принципа, а не готовый продукт.
Тест на реальном фото (256x256). PSNR — метрика пиксельной точности (чем выше, тем лучше). «Феникс» оптимизирован для семантической узнаваемости, а не для пиксельного совпадения.
| Метод | Размер (байт) | PSNR (dB) | Комментарий |
|---|---|---|---|
| Cheng2020 (Q=6) | 2712 | 40.00 | Лучший нейрокодек (максимальный PSNR) |
| MBT2018 (Q=6) | 3136 | 39.80 | Передовой нейрокодек |
| JPEG (Q=20) | 3732 | 32.01 | Классика, но «каша» |
| Феникс (Hyperprior Q=6) | 3744 | 39.47 | Наш протокол: смысл, а не пиксели |
| AVIF (Q=80) | 8123 | 41.76 | Лучший PSNR, но тяжелый |
| JPEG (Q=90) | 14250 | 40.44 | Классика, но огромный |
Вывод: «Феникс» в 3.8 раза меньше JPEG-90 и в 2.2 раза меньше AVIF. Он проигрывает топовым нейрокодекам (Cheng2020) по PSNR, но выигрывает в устойчивости к шуму (при известном ключе) и работает на 500 байтах (Quality=1), где классика рассыпается.
1. Идеальный канал (без шума):
2. Плохой канал (2% потерь данных):
Фото шишки: Derek Ramsey (Ram-Man), GFDL 1.2, via Wikimedia Commons. Фото Юрия Гагарина: Mos.ru, CC BY 4.0, via Wikimedia Commons.
- Видео: Кадр проходит через нейросетевой энкодер (CompressAI / Hyperprior) и превращается в компактный латент.
- Аудио: Звук проходит через нейросетевой кодек (EnCodec) и превращается в компактные «коды».
- Передача: Данные передаются по каналу. Мы имитируем шум, который искажает сигнал.
- Восстановление: Приемник использует «семя» (4 байта) для генерации того же шума и вычитает его (при условии, что профиль шума известен). Декодер восстанавливает видео и аудио.
Важно: «Феникс» — это протокол передачи, который использует готовые нейросетевые кодеки в качестве ядра. Наша реализация добавляет слой помехоустойчивости (seed) и логику адаптации (Quality 1/3/6).
core/phoenix_cli.py— CLI-утилита для сжатия/восстановления видео.core/phoenix_call.py— прототип видеозвонка (видео + аудио в реальном времени).core/phoenix_audio.py— аудио-кодек на базе EnCodec.core/phoenix_space.py— симуляция космического канала с потерями пакетов.scripts/verify.py— скрипт для проверки метрик (PSNR, размер).scripts/comparison_v2.py— скрипт для генерации сравнительных сеток (идеальный/шумный канал).
- Эхо и задержка: В прототипе видеозвонка наблюдается эхо и задержка ~1 сек. Требуется интеграция AEC (Acoustic Echo Cancellation).
- Разрешение: Видео-кодек работает с латентами 256x256. Для 4K используется паддинг, что может снижать детализацию.
- Аудио: При битрейте 1.5 kbps речь разборчива, но имеет «роботизированный» тембр.
Мы хотим быть прозрачными. «Феникс» — это исследовательский протокол, а не готовый продукт. Вот его ключевые ограничения:
- Зависимость от моделей: Для декодирования требуется предварительно установить модели CompressAI (Hyperprior) и EnCodec. Их размер (~50 МБ) не входит в заявленный битрейт, но должен быть на приемнике.
- Механизм «семени» (Главное ограничение): Восстановление шума по seed работает, если профиль шума известен и детерминирован (например, при передаче по каналу с предсказуемыми помехами или при использовании согласованного ключа). * Для случайного шума (как в реальных радиоканалах) этот метод не работает. Эксперименты с генеративным денойзером (Stable Diffusion) показали, что универсальные модели не справляются с сильным случайным шумом в латенте (они начинают «галлюцинировать» текстуры вместо восстановления объекта). Для реальных каналов требуется специально обученный денойзер (U-Net), который выходит за рамки текущего POC.
- Разрешение: Кодек работает с латентами 256×256. Для 4K используется паддинг, что может снижать детализацию. Это ограничение архитектуры, а не «фича».
- Задержка и эхо: Прототип видеозвонка (
phoenix_call.py) имеет задержку ~1 секунду и эхо. Требуется интеграция AEC (Acoustic Echo Cancellation). - Не production-ready: Проект не проходил тесты на реальных каналах с BER (Bit Error Rate). Все результаты получены на синтетических симуляциях.
Требуется Python 3.10+ и библиотеки torch, compressai, encodec, opencv-python, sounddevice.
- Установите зависимости: ```bash pip install -r requirements.txt
- Для теста видео: Поместите видео в папку core/ и запустите: python core/phoenix_cli.py --input input_video.mp4 --output result.mp4 --quality 6
- Для теста видеозвонка: Запустите: python core/phoenix_call.py (Убедитесь, что индексы микрофона и динамиков в коде совпадают с вашими).
- Для проверки метрик: python scripts/verify.py
⚖️ Лицензия Этот проект распространяется под лицензией Apache License 2.0. Подробности см. в файле LICENSE.

