Skip to content

About

Proof of Concept (POC): A research protocol for semantic transmission over noisy channels using pre-trained neural codecs. Not production-ready.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

Repository files navigation

🔥 Протокол Феникс (Phoenix Protocol)

⚠️ Статус проекта: Proof of Concept (POC). Это исследовательский прототип, демонстрирующий принцип работы, а не готовый продукт. Проект не предназначен для production-использования. Основные ограничения описаны ниже.

Open In Colab

Экспериментальный протокол передачи данных для экстремально низких битрейтов и плохих каналов связи.

English version

«Феникс» — это исследовательский проект, который доказывает, что для передачи визуальной и звуковой информации не нужно передавать каждый пиксель или сэмпл. Достаточно передать «слепок сути» (латентное представление), а на приемнике восстановить его с помощью нейросети.

Проект вдохновлен идеей семантического сжатия, устойчивости к шуму и передачи смысла вместо данных. Важно: «Феникс» не создаёт новые кодеки — он использует готовые нейросетевые модели (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.

🛠 Как это работает (Кратко)

  1. Видео: Кадр проходит через нейросетевой энкодер (CompressAI / Hyperprior) и превращается в компактный латент.
  2. Аудио: Звук проходит через нейросетевой кодек (EnCodec) и превращается в компактные «коды».
  3. Передача: Данные передаются по каналу. Мы имитируем шум, который искажает сигнал.
  4. Восстановление: Приемник использует «семя» (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 речь разборчива, но имеет «роботизированный» тембр.

⚠️ Честные ограничения (Honest Limitations)

Мы хотим быть прозрачными. «Феникс» — это исследовательский протокол, а не готовый продукт. Вот его ключевые ограничения:

  1. Зависимость от моделей: Для декодирования требуется предварительно установить модели CompressAI (Hyperprior) и EnCodec. Их размер (~50 МБ) не входит в заявленный битрейт, но должен быть на приемнике.
  2. Механизм «семени» (Главное ограничение): Восстановление шума по seed работает, если профиль шума известен и детерминирован (например, при передаче по каналу с предсказуемыми помехами или при использовании согласованного ключа). * Для случайного шума (как в реальных радиоканалах) этот метод не работает. Эксперименты с генеративным денойзером (Stable Diffusion) показали, что универсальные модели не справляются с сильным случайным шумом в латенте (они начинают «галлюцинировать» текстуры вместо восстановления объекта). Для реальных каналов требуется специально обученный денойзер (U-Net), который выходит за рамки текущего POC.
  3. Разрешение: Кодек работает с латентами 256×256. Для 4K используется паддинг, что может снижать детализацию. Это ограничение архитектуры, а не «фича».
  4. Задержка и эхо: Прототип видеозвонка (phoenix_call.py) имеет задержку ~1 секунду и эхо. Требуется интеграция AEC (Acoustic Echo Cancellation).
  5. Не production-ready: Проект не проходил тесты на реальных каналах с BER (Bit Error Rate). Все результаты получены на синтетических симуляциях.

🚀 Как запустить (Для разработчиков)

Требуется Python 3.10+ и библиотеки torch, compressai, encodec, opencv-python, sounddevice.

  1. Установите зависимости: ```bash pip install -r requirements.txt
  2. Для теста видео: Поместите видео в папку core/ и запустите: python core/phoenix_cli.py --input input_video.mp4 --output result.mp4 --quality 6
  3. Для теста видеозвонка: Запустите: python core/phoenix_call.py (Убедитесь, что индексы микрофона и динамиков в коде совпадают с вашими).
  4. Для проверки метрик: python scripts/verify.py

⚖️ Лицензия Этот проект распространяется под лицензией Apache License 2.0. Подробности см. в файле LICENSE.

⚠️ Отказ от ответственности Это экспериментальный проект. Он не предназначен для использования в критически важных системах (например, для управления медицинским оборудованием или для передачи секретных данных) без дополнительной проверки и сертификации. Авторы не несут ответственности за возможный ущерб.

About

Proof of Concept (POC): A research protocol for semantic transmission over noisy channels using pre-trained neural codecs. Not production-ready.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages