Компрессия изображений на основе ML с кватернионными банками фильтров (путь к статье и адаптации WaLLoC)

Курс выстраивает теоретическую базу с нуля: изображение как сигнал, основы сжатия и нейросетей, затем WaLLoC (WPT, entropy bottleneck, asymmetric autoencoders) и кватернионы Гамильтона для обработки RGB как единого гиперкомплексного сигнала. Итог — понимание точек интеграции кватернионных банков фильтров в архитектуру WaLLoC и готовность к научной постановке задачи и экспериментальному плану.

1. Изображение как сигнал: дискретизация, цвет, базовые преобразования

Изображение как сигнал: дискретизация, цвет, базовые преобразования

Зачем вообще рассматривать изображение как сигнал

В задачах компрессии (в том числе нейросетевой) изображение удобно рассматривать не как «картинку», а как сигнал: набор чисел, которые можно анализировать, преобразовывать и кодировать.

Это важно по двум причинам:

  • Компрессия — это про избыточность в числах: соседние пиксели часто похожи, а значит данные можно представить короче.
  • ML-компрессия (и WaLLoC) строится вокруг преобразований: сначала изображение переводят в «удобное» представление (латенты/коэффициенты), затем квантование и энтропийное кодирование уменьшают размер.
  • В этой статье мы разберём базовую «физику данных»: что именно хранится в файле изображения, откуда берутся числа, что такое дискретизация и цветовые каналы, и какие преобразования обычно применяют перед сжатием.

    !Общая схема перехода от непрерывной сцены к дискретным данным

    Непрерывное изображение и дискретное изображение

    Модель непрерывного изображения

    В идеализированной математической модели изображение — это функция яркости на плоскости:

  • — непрерывные координаты на плоскости (например, в миллиметрах на сенсоре или в угловых координатах).
  • — интенсивность (яркость) в точке.
  • Для цветного изображения можно считать, что это уже не одно число, а вектор из трёх компонент (каналов):

  • — интенсивности красного, зелёного, синего компонентов.
  • Важно: в реальных данных всё становится дискретным по двум осям — по пространству и по значениям.

    Дискретизация по пространству: пиксельная сетка

    Камера (или сканер) измеряет изображение на сетке. Тогда получаем двумерный массив:

  • — индекс строки (вертикаль),
  • — индекс столбца (горизонталь),
  • — значение пикселя.
  • Если изображение цветное, то обычно хранят три массива (или один массив с третьим измерением):

    Интуиция:

  • Чем больше разрешение (например, ), тем больше отсчётов сигнала и тем потенциально больше объём данных.
  • Пиксели соседствуют, и именно эта пространственная зависимость создаёт избыточность — фундамент компрессии.
  • Дискретизация по значениям: квантование

    Значения интенсивности в сенсоре — физически непрерывные, но в файле хранятся с конечной точностью (например, 8 бит на канал).

    Если канал 8-битный, то:

  • возможные значения ,
  • обычно означает «минимальная интенсивность», — «максимальная».
  • Квантование можно понимать как округление. Упрощённая модель:

  • — исходная (непрерывная или высокоточная) величина,
  • — шаг квантования,
  • — квантованный индекс уровня.
  • Почему это важно для компрессии:

  • почти любой lossy алгоритм (с потерями) делает квантование сильнее, чтобы уменьшить число возможных значений,
  • а значит облегчить энтропийное кодирование.
  • Изображение как матрица (или тензор)

    Практически полезное представление для ML:

  • Чёрно-белое изображение: матрица размера .
  • Цветное изображение: тензор размера .
  • Где:

  • — высота (кол-во строк),
  • — ширина (кол-во столбцов),
  • «3» — каналы (RGB).
  • Нормировки, которые часто делают в ML:

  • перевести значения из в делением на ,
  • иногда нормировать в .
  • Цвет: RGB и почему каналы связаны

    RGB как три связанных сигнала

    RGB хранит три числа на пиксель. Они не независимы:

  • в естественных изображениях структура (границы, текстуры) обычно совпадает по каналам,
  • это значит, что данные имеют межканальную корреляцию.
  • Это ключевое наблюдение для вашего дальнейшего направления:

  • классические методы часто преобразуют цвет (например, в YCbCr), чтобы отделить яркость от цвета,
  • кватернионный подход в будущем будет стремиться рассматривать RGB как единый гиперкомплексный сигнал, чтобы математически «связать» каналы ещё на уровне операций (фильтрации/вейвлетов).
  • Яркость и цветность: идея YCbCr

    Одна из причин, почему компрессия работает хорошо: человеческое зрение сильнее чувствительно к яркости, чем к тонким изменениям цвета. Поэтому в видео/изображениях часто переходят к представлению типа YCbCr:

  • — яркость (luma),
  • — компоненты цветности (chroma).
  • Даже если вы в WaLLoC будете кодировать RGB напрямую, идея важна: разные компоненты можно компрессировать с разной точностью.

    Справка: YCbCr.

    Базовые преобразования: зачем они нужны перед сжатием

    Компрессия почти всегда опирается на один принцип:

  • в «сыром» пиксельном виде данные плохо поддаются кодированию,
  • после правильного преобразования значимая информация концентрируется в меньшем числе коэффициентов,
  • многие коэффициенты становятся малыми или предсказуемыми.
  • Ниже — главные преобразования, которые встречаются в классическом и ML-сжатии.

    Свёртка (фильтрация) как базовая операция

    Свёртка — это способ применить локальный фильтр (например, сглаживание или выделение границ).

    В 2D дискретном виде (упрощённо):

  • — входное изображение,
  • — ядро фильтра (маленькая матрица),
  • — результат,
  • — суммирование по окну фильтра.
  • Интуиция:

  • фильтр «смотрит» на соседние пиксели,
  • считает взвешенную сумму,
  • получает новый пиксель, который содержит определённый признак.
  • Почему это важно для курса:

  • свёртки — базовая операция в CNN,
  • банки фильтров (в том числе вейвлет-банки) — это организованный набор таких фильтров,
  • кватернионные банки фильтров позже будут расширением этой идеи на связанное преобразование RGB.
  • Справка: Convolution.

    Частотное представление: что означает «частота» в изображении

    У 1D-сигнала частота — это «как быстро он меняется во времени». У изображения аналогично:

  • низкие частоты — плавные изменения (фон, большие области),
  • высокие частоты — резкие изменения (границы, детали, шум).
  • Компрессия любит разделять эти компоненты:

  • низкие частоты обычно важнее,
  • высокие можно сильнее квантовать (или частично отбрасывать).
  • DCT: основной инструмент JPEG-логики

    Дискретное косинусное преобразование (DCT) переводит блок изображения в коэффициенты, похожие на частоты. В JPEG оно применяется к блокам (обычно ).

    Что вам нужно запомнить на уровне интуиции:

  • после DCT много коэффициентов становятся близкими к нулю,
  • их можно грубо квантовать,
  • а последовательности нулей хорошо сжимаются энтропийными кодерами.
  • Справка: Discrete cosine transform.

    Вейвлеты: локальность и многошкальность

    Вейвлет-преобразование (в отличие от «глобального» Фурье) анализирует изображение локально и на разных масштабах:

  • грубая структура (крупные детали),
  • средние детали,
  • мелкие детали.
  • Банки фильтров в вейвлетах обычно включают пары:

  • низкочастотный фильтр (приближение),
  • высокочастотный фильтр (детали),
  • после чего часто делают дискретизацию по сетке (downsampling), уменьшая размер представления.

    Справка: Wavelet transform.

    !Интуитивное разделение изображения на низко- и высокочастотные компоненты

    Минимальная «карта» к будущему: как это связано с WaLLoC и кватернионами

    Эта статья — фундамент. Ниже — аккуратные связи с тем, что будет дальше (без деталей, которые потребуют уже следующих этапов).

    Что нужно WaLLoC на уровне данных

    Чтобы построить систему компрессии, вам понадобятся ответы на вопросы:

  • Какое представление мы кодируем? Пиксели или преобразованные коэффициенты.
  • Где мы теряем информацию? В квантовании/округлении (или его дифференцируемой аппроксимации).
  • Как мы кодируем вероятности? Энтропийная модель (entropy bottleneck) использует статистику значений.
  • Пока вам достаточно понимать: входные данные — это дискретный сигнал, и большинство компрессоров сначала переводят его в удобный домен (частотный/вейвлетный/латентный).

    «Точки интеграции» для кватернионных фильтров (на уровне идеи)

    Когда вы дойдёте до архитектуры WaLLoC (wavelet-based learned compression), появятся места, где можно заменить стандартные операции на кватернионные аналоги.

    На концептуальном уровне возможны такие замены:

  • Вейвлет/вейвлет-пакет (WPT) как банк фильтров
  • - вместо отдельных фильтров для каждого канала RGB или простого смешивания каналов использовать кватернионный банк фильтров, который обрабатывает RGB совместно.
  • Линейные преобразования в анализирующем и синтезирующем трактах
  • - операции, похожие на свёртки/фильтрацию, можно обобщить на кватернионные свёртки.
  • Моделирование статистики коэффициентов
  • - если представление становится гиперкомплексным, придётся решить, как задавать вероятности для энтропийного кодирования (например, через параметры распределения для компонентов или через модуль/фазу).

    Важное ограничение: пока вы не изучили кватернионы и вейвлет-банки фильтров, это лишь ориентир. Но уже сейчас полезно видеть, что всё начинается с правильного понимания того, какие именно числа описывают изображение.

    Итоги

  • Изображение можно рассматривать как сигнал (или ), то есть дискретный набор отсчётов.
  • Дискретность появляется из-за:
  • - дискретизации по пространству (пиксельная сетка), - квантования по значениям (ограниченная точность, например 8 бит).
  • Цветные каналы коррелированы; компрессия выигрывает от преобразований, которые учитывают эту структуру.
  • Преобразования (свёртка, DCT, вейвлеты) помогают представить данные так, чтобы значимая информация концентрировалась и лучше кодировалась.
  • В будущем кватернионные банки фильтров будут попыткой обрабатывать RGB как единый связанный сигнал на уровне фильтрации/разложения.
  • Материалы для чтения (необязательно, но полезно)

  • Digital image — базовые определения: пиксели, разрядность, представления.
  • Sampling (signal processing)) — общая идея дискретизации сигналов.
  • Quantization (signal processing)) — что означает квантование и почему оно вносит потери.
  • 2. Теория сжатия изображений: потери, энтропия, R–D оптимизация

    Теория сжатия изображений: потери, энтропия, R–D оптимизация

    Как эта тема продолжает предыдущую статью

    В прошлой статье мы договорились смотреть на изображение как на дискретный сигнал: числа на пиксельной сетке, часто в формате для RGB. Теперь сделаем следующий шаг: разберём, почему эти числа вообще можно сжимать, где появляются потери качества, и как формально выбирать компромисс между качеством и размером.

    Эти идеи нужны, чтобы уверенно читать и адаптировать WaLLoC и любые ML-компрессоры:

  • потери почти всегда связаны с квантованием (упрощением значений),
  • энтропия объясняет, почему “предсказуемые” данные занимают меньше бит,
  • R–D (rate–distortion) оптимизация объясняет, почему компрессор учится балансировать “битрейт” и “искажение”.
  • !Общая схема: преобразование → квантование → энтропийное кодирование

    Что такое сжатие изображений и какие бывают режимы

    Что именно оптимизирует компрессор

    Цель компрессии обычно формулируется так:

  • сделать файл (или битстрим) меньше;
  • при этом сохранить изображение достаточно похожим на исходное.
  • Отсюда сразу возникают два класса методов.

    Сжатие без потерь

    Сжатие без потерь означает, что после декодирования вы получаете в точности те же числа, что и были на входе (тот же массив пикселей).

    Причина, почему вообще возможна экономия:

  • в изображениях много статистической структуры (повторы, корреляция соседей),
  • значит можно использовать более короткие коды для частых событий.
  • Примеры форматов и подходов:

  • PNG (использует предсказание + энтропийное кодирование),
  • энтропийные кодеры типа Huffman и arithmetic coding.
  • Полезная справка: Lossless compression.

    Сжатие с потерями

    Сжатие с потерями допускает, что восстановленное изображение отличается от исходного . Это даёт гораздо больший выигрыш по размеру.

    Главный источник потерь почти во всех системах:

  • квантование (упрощение значений коэффициентов/латентов).
  • Примеры:

  • JPEG (DCT + квантование + энтропийное кодирование),
  • современные нейросетевые компрессоры (нейросеть создаёт латенты, затем они квантуются и энтропийно кодируются).
  • Полезная справка: Lossy compression.

    Энтропия: предел сжатия для “случайностей”

    Интуиция: почему частые символы должны кодироваться короче

    Представьте, что вы кодируете последовательность символов. Если один символ встречается очень часто, выгодно дать ему короткий код, а редким — длинный. Это основная идея энтропийного кодирования.

    В компрессии изображений “символами” могут быть:

  • значения разностей (ошибок предсказания),
  • квантованные коэффициенты DCT/вейвлетов,
  • квантованные латенты нейросети.
  • Формальное определение энтропии Шеннона

    Пусть есть дискретная случайная величина , которая принимает значения с вероятностями . Энтропия (в битах) определяется так:

    Пояснение всех частей формулы:

  • — “источник символов” (например, квантованные коэффициенты),
  • — конкретное значение символа,
  • — вероятность встретить значение ,
  • — логарифм по основанию 2, чтобы единицей измерения были биты,
  • знак “минус” нужен, потому что (вероятности не больше 1), и итоговая величина получается неотрицательной.
  • Смысл:

  • если распределение “острое” (много массы на нескольких значениях), энтропия низкая и сжимается хорошо;
  • если распределение близко к равномерному, энтропия выше и сжимается хуже.
  • База: Entropy (information theory)).

    Важное следствие: средняя длина кода и энтропия

    Энтропия — это теоретический ориентир того, сколько бит в среднем нужно для кодирования символов при оптимальном кодере.

    На практике используются семейства методов:

  • Huffman coding — строит префиксный код, хорошо работает при независимых символах и “удобных” распределениях: Huffman coding.
  • Arithmetic coding — обычно ближе к теоретическому пределу, особенно когда вероятности тонкие: Arithmetic coding.
  • В ML-компрессии (включая идеи вокруг WaLLoC) ключевой момент такой:

  • модель учится выдавать представление, которое одновременно
  • - сохраняет информацию (чтобы картинка была хорошей), - имеет низкую энтропию (чтобы требовалось меньше бит).

    Почему квантование создаёт потери

    Что такое квантование в компрессии

    Квантование — это отображение множества возможных значений в более грубую сетку уровней. В самой простой форме это округление.

    Если есть число (например, коэффициент после преобразования), можно представить идею так:

    Пояснение:

  • — исходное значение (вещественное или высокоточное),
  • — шаг квантования (чем он больше, тем грубее),
  • — квантованный индекс (целое число).
  • При декодировании обычно делают “обратное” приближение:

    Почему это приводит к потерям:

  • разные значения могут перейти в один и тот же ,
  • значит точное восстановление невозможно.
  • Почему квантование помогает сжатию

    Квантование обычно делает распределение значений более “сжимаемым”:

  • значений становится меньше,
  • появляется больше повторов (часто много нулей или малых чисел),
  • энтропийный кодер может использовать короткие коды.
  • Именно поэтому в классических кодеках после преобразования (DCT/вейвлет) обязательно стоит квантование.

    Скорость (rate) и искажение (distortion)

    Что такое rate

    Rate — это стоимость в битах. Для изображений часто используют метрики:

  • общий размер в битах,
  • bits per pixel: .
  • Интуиция:

  • меньше bpp — сильнее сжатие.
  • Что такое distortion

    Distortion — это мера отличия восстановленного изображения от исходного .

    Самые базовые варианты:

  • MSE (среднеквадратичная ошибка):
  • Пояснение:

  • — значение -го элемента (пикселя/канала) исходного изображения,
  • — соответствующее значение в восстановленном,
  • — общее число скалярных значений (например, для RGB),
  • сумма берётся по всем элементам.
  • PSNR — логарифмическая форма, удобна для отчётов (выше — лучше): Peak signal-to-noise ratio.
  • Важно для будущего (WaLLoC и нейрометоды):

  • кроме MSE используют перцептивные критерии и обучаемые функции потерь, но концепция “искажение против битов” остаётся.
  • R–D кривая и смысл компромисса

    R–D кривая

    Если менять “силу” сжатия (например, шаг квантования ), то получаем семейство точек:

  • чем меньше битов (rate), тем обычно больше искажение (distortion).
  • График зависимости distortion от rate называется R–D кривая.

    !Типичная R–D кривая: компромисс между размером и качеством

    Зачем нужна R–D оптимизация

    В реальности вы не можете одновременно минимизировать и размер, и искажение “до нуля”. Поэтому выбирают компромисс: насколько вы готовы ухудшить качество ради экономии бит.

    Эта идея лежит в основе как классических кодеков, так и ML-компрессии.

    Lagrangian R–D оптимизация: одна цель вместо двух

    Чтобы оптимизировать компромисс, часто используют лагранжев подход: объединяют два критерия в один.

    Общая форма цели:

    Где:

  • — единая целевая функция,
  • — distortion (например MSE),
  • — rate (ожидаемое число бит),
  • — коэффициент, задающий важность битрейта относительно качества.
  • Интерпретация :

  • большой сильнее штрафует размер, компрессия становится агрессивнее (меньше бит, хуже качество),
  • маленький делает качество важнее (лучше качество, больше бит).
  • Эта формула — один из ключевых мостов к нейросетевой компрессии: модели обычно обучают минимизировать аналогичную цель, где оценивается через вероятностную (энтропийную) модель.

    База по R–D оптимизации: Rate–distortion theory.

    Как эти понятия проявляются в ML-компрессии и в WaLLoC

    В современных нейрокодеках архитектура часто выглядит так:

  • Анализирующее преобразование (analysis transform): переводит изображение в латенты .
  • Квантование латентов: .
  • Энтропийная модель оценивает вероятности и даёт ожидаемый rate.
  • Синтезирующее преобразование (synthesis transform): восстанавливает из декодированных латентов.
  • Оптимизация .
  • В терминах, которые вы будете встречать в WaLLoC-подобных системах:

  • entropy bottleneck — компонент, который учится моделировать распределение квантованных латентов и тем самым управляет ;
  • wavelet / wavelet packet transform (WPT) — частный случай “анализа/синтеза” через банки фильтров;
  • asymmetric autoencoders — инженерная идея, когда энкодер и декодер имеют разную сложность; но принцип и роль энтропии сохраняются.
  • Даже если детали WaLLoC вы изучите позже, вам важно уже сейчас понимать: энтропия и R–D оптимизация — это “математика причины”, почему добавляют энтропийные модели и почему всегда есть параметр, управляющий компромиссом.

    Где здесь появится место для кватернионных банков фильтров

    Пока без технических деталей кватернионов, но логическая связь такая:

  • Если вместо обычных (реальных) фильтров в WPT/банках фильтров использовать кватернионные, то меняется представление коэффициентов/латентов.
  • Тогда:
  • - искажение может считаться либо по RGB-пикселям как обычно, либо через специальные метрики, учитывающие совместную структуру каналов; - rate будет зависеть от того, как вы параметризуете распределение “гиперкомплексных” коэффициентов (например, по компонентам или через модуль/направление).

    То есть кватернионные банки фильтров потенциально меняют статистику коэффициентов, а значит влияют и на энтропию, и на R–D кривую. Именно поэтому теория энтропии и R–D оптимизации — обязательная основа до того, как вы начнёте “подменять фильтры” в WaLLoC.

    Итоги

  • Сжатие бывает без потерь (точное восстановление) и с потерями (восстановление приближённое).
  • В lossy-сжатии главный источник потерь — квантование, но оно же делает данные более сжимаемыми.
  • Энтропия описывает теоретическую “сжимаемость” распределения символов и задаёт ориентир для энтропийных кодеров.
  • Компрессия всегда балансирует rate (число бит, например bpp) и distortion (ошибка, например MSE).
  • R–D оптимизация часто записывается как минимизация ; параметр управляет компромиссом.
  • В ML-компрессии (и WaLLoC-подобных системах) компонент энтропийной модели отвечает за оценку , а выбор функции качества и квантования — за .
  • Материалы для чтения (необязательно, но полезно)

  • Entropy (information theory)) — базовая теория энтропии.
  • Arithmetic coding — как на практике приближаются к энтропийному пределу.
  • Rate–distortion theory — формальный взгляд на компромисс “биты–качество”.
  • 3. База ML для компрессии: автоэнкодеры, вероятностные модели, обучение

    База ML для компрессии: автоэнкодеры, вероятностные модели, обучение

    Как эта тема продолжает предыдущие статьи

    В прошлых статьях мы разобрали две опоры компрессии:

  • изображение как дискретный сигнал (матрица/тензор чисел, коррелированных в пространстве и между каналами RGB)
  • теорию сжатия: энтропия, квантование как источник потерь и R–D оптимизацию
  • Теперь добавим третий слой: как именно современные ML-компрессоры реализуют эти идеи на практике.

    Главный переход такой:

  • классические кодеки фиксируют преобразование (DCT/вейвлеты) и вручную заданную статистическую модель
  • ML-компрессия учит преобразование и учит вероятностную модель коэффициентов так, чтобы минимизировать
  • Это напрямую связано с WaLLoC:

  • в WaLLoC роль преобразования играет вейвлет/вейвлет-пакетный банк фильтров
  • роль вероятностной части играет entropy bottleneck (и связанные с ним модели)
  • обучение идёт по R–D цели
  • А ваша будущая модификация с кватернионами будет вмешиваться именно в блок преобразования (и косвенно повлияет на статистику, то есть на вероятностную модель).

    !Общая схема нейросетевой компрессии: преобразование, квантование, вероятности, энтропийное кодирование и восстановление

    Базовая архитектура learned компрессора

    Автоэнкодер как обучаемое преобразование

    В контексте компрессии автоэнкодер состоит из двух частей:

  • энкодер (analysis transform): переводит изображение в компактные коэффициенты (латенты)
  • декодер (synthesis transform): восстанавливает изображение по восстановленным коэффициентам
  • Ключевые обозначения:

  • — исходное изображение (на практике это тензор )
  • — латенты (обычно тензор меньшего пространственного размера и большего числа каналов)
  • — квантованные/декодированные латенты
  • — восстановленное изображение
  • Концептуально это можно записать так:

    Объяснение каждого элемента:

  • — энкодер с параметрами (в нейросетях это веса свёрток)
  • — квантование (обычно округление до целых)
  • — декодер с параметрами
  • Почему автоэнкодер удобен для компрессии:

  • он может сам найти представление, где важная информация кодируется небольшим числом значимых коэффициентов
  • структура энкодера/декодера напоминает классическое: преобразование → обработка коэффициентов → обратное преобразование
  • Почему без квантования это не компрессия

    Если бы оставались вещественными числами, их нельзя было бы напрямую записать в компактный битстрим без дополнительных соглашений о точности.

    Поэтому почти всегда есть явный шаг:

  • перевести в дискретные значения (обычно целые)
  • И именно это делает задачу lossy:

  • разные вещественные могут перейти в один и тот же
  • Вероятностная модель: как из латентов получить биты

    Связь энтропии и “ожидаемого числа бит”

    После квантования латенты становятся дискретными символами. Их можно кодировать арифметическим кодированием, если есть вероятности.

    Если модель говорит, что вероятность символа равна , то “цена” этого символа в битах связана с self-information:

    Пояснение:

  • — вероятность конкретного значения
  • — логарифм по основанию 2, чтобы результат был в битах
  • знак “минус” нужен, потому что , а значит
  • Для всего массива латентов обычно суммируют стоимость по элементам (и часто предполагают факторизацию или простую зависимость):

    Где:

  • — индекс элемента латентного тензора
  • — оценка rate (сколько бит потребуется)
  • Важно: это не “точные” биты конкретного файла, но это стандартная обучающая оценка, тесно связанная с энтропией и арифметическим кодированием.

    Entropy model и entropy bottleneck

    Термин entropy bottleneck в learned компрессии обычно означает модуль, который:

  • задаёт параметризованное распределение для квантованных латентов
  • позволяет оценивать во время обучения
  • обучается совместно с энкодером/декодером
  • Интуитивно: это “узкое место”, через которое проходит информация, и оно штрафуется за высокую энтропию.

    Практическая цель entropy bottleneck:

  • сделать так, чтобы латенты были и полезными для восстановления, и предсказуемыми (низкоэнтропийными)
  • Почему нужна условная модель (hyperprior)

    Если считать, что все имеют одно и то же простое распределение, модель будет слабой: реальные латенты зависят от содержания изображения.

    Поэтому во многих нейрокодеках используют идею side information (гиперпараметров), которые помогают предсказывать распределение .

    Один из стандартных подходов — hyperprior:

  • из получают дополнительные латенты (гиперлатенты)
  • тоже квантуются и кодируются
  • декодированный используется, чтобы предсказать параметры распределения
  • Смысл:

  • несёт информацию о “масштабах/дисперсиях/структуре” латентов
  • это снижает энтропию кодирования , потому что вероятности становятся точнее
  • !z_hat). Параллельно y → квантование → y_hat → entropy model, но уже условная p(y_hat|z_hat) → битстрим_y. На декодере: y_hat → g → x_hat. | Идея hyperprior: сначала кодируем вспомогательные латенты, чтобы точнее предсказывать вероятности основных

    Квантование и проблема дифференцируемости

    Почему округление мешает обучению

    Обучение нейросети обычно делается градиентными методами. Для этого нужно, чтобы путь от параметров к функции потерь был дифференцируемым.

    Но квантование вида:

    имеет нулевые производные почти везде и разрывы в целых точках, то есть “ломает” стандартный градиентный спуск.

    Как это обходят на практике

    Есть две основные идеи, которые важно понимать концептуально:

  • Во время обучения заменяют квантование на дифференцируемую аппроксимацию.
  • Во время теста/кодирования используют настоящее округление, иначе не получится дискретный битстрим.
  • Одна из распространённых аппроксимаций:

  • вместо округления добавляют шум, близкий к равномерному
  • Смысл переменных:

  • — вещественные латенты
  • — случайный шум
  • — “псевдоквантованные” латенты для обучения
  • Интуиция:

  • такое “размазывание” имитирует эффект квантования на распределение значений
  • градиенты остаются рабочими
  • Альтернативный подход:

  • straight-through estimator: в прямом проходе делают округление, а в обратном притворяются, что функция была тождественной
  • Здесь не важно запоминать детали, важно запомнить принцип:

  • квантование обязательно для битстрима, но его нужно аккуратно встроить в обучение
  • Функция потерь: как объединяются качество и размер

    Distortion: как измеряется качество

    Самая базовая метрика искажения — MSE между и . Но в learned компрессии встречаются и другие варианты (MS-SSIM, перцептивные функции потерь).

    Важный момент для понимания:

  • что бы вы ни выбрали как , это будет тем, что модель считает “качеством”
  • Rate: как штрафуются биты

    Rate обычно задаётся как ожидаемая сумма по квантованным символам:

  • либо только по
  • либо по и (если есть hyperprior)
  • R–D цель в ML-компрессии

    Объединение выглядит знакомо:

    Где:

  • — итоговая функция потерь
  • — distortion (качество)
  • — rate (ожидаемые биты)
  • — коэффициент компромисса
  • Практическое следствие:

  • чтобы получить разные точки на R–D кривой, часто обучают несколько моделей с разными
  • Asymmetric autoencoders: зачем энкодер и декодер делают разными

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

    Асимметрия означает, что вычислительная сложность у энкодера и декодера различается.

    Типовые причины:

  • в некоторых приложениях допустимо, что кодирование делается один раз и может быть тяжёлым, а декодирование должно быть лёгким и быстрым
  • иногда наоборот: при обучении и исследованиях можно позволить сложный декодер ради качества
  • Связь с WaLLoC:

  • WaLLoC обсуждает архитектурные решения, где анализ/синтез и вероятностная часть проектируются с оглядкой на практическую скорость
  • Как это связывается с WaLLoC и банками фильтров

    Что считать “трансформом” в learned компрессии

    В нейрокодеке блок и можно интерпретировать как обучаемые преобразования.

    В WaLLoC ключевая идея в том, что часть преобразования организована как вейвлет-подобный банк фильтров (включая вейвлет-пакетное разложение, WPT), но при этом обучение подстраивает компоненты под R–D цель.

    То есть WaLLoC можно мысленно вписать в общую схему:

  • analysis transform: WPT/вейвлет-структура + обучаемые элементы
  • entropy bottleneck: вероятностная модель коэффициентов
  • synthesis transform: обратный тракт (реконструкция)
  • Точки интеграции для кватернионных банков фильтров

    Пока без кватернионной математики (она будет отдельным этапом курса), здесь важно увидеть, где именно ваша замена “встанет” в learned-пайплайн.

    Наиболее естественные точки:

  • Внутри analysis transform
  • - там, где WaLLoC применяет набор фильтров для разложения (вейвлет/пакет) - потенциальная замена: фильтры, которые обрабатывают RGB совместно как единый объект, а не как три независимых канала
  • Внутри synthesis transform
  • - там, где выполняется обратная сборка из коэффициентов - важно сохранить совместимость: если анализ использует “гиперкомплексные” коэффициенты, синтез должен быть согласованным обратным оператором
  • На границе с entropy model
  • - кватернионное представление изменит статистику коэффициентов - это может потребовать другой параметризации вероятностей (например, моделировать компоненты совместно или через декомпозицию на “модуль + направление”)

    Пока вы не изучили кватернионы, достаточно помнить: изменения в преобразовании почти всегда требуют перепроверки того, как вы оцениваете .

    Практический взгляд: что происходит при обучении модели компрессии

    Ниже — логика обучения без привязки к конкретному фреймворку.

  • Берут датасет изображений и подают батчи в энкодер .
  • Получают латенты .
  • Применяют “обучающее квантование” (шум или другой трюк) и получают .
  • Вероятностная модель оценивает (или ) и считает .
  • Декодер получает и выдаёт .
  • Считают .
  • Минимизируют градиентным методом.
  • На этапе реального кодирования:

  • вместо “шумового” шага используется настоящее округление
  • entropy model выдаёт вероятности для арифметического кодировщика
  • получается битстрим, который декодер может восстановить
  • Итоги

  • Learned компрессия строится вокруг автоэнкодера: энкодер создаёт латенты, декодер восстанавливает изображение.
  • Квантование делает представление дискретным и пригодным для битстрима, но усложняет обучение; поэтому используют дифференцируемые аппроксимации.
  • Вероятностная модель (entropy model / entropy bottleneck) нужна, чтобы оценивать и минимизировать ожидаемое число бит .
  • Стандартная обучающая цель повторяет теорию R–D: .
  • Hyperprior и похожие механизмы добавляют “side information”, чтобы точнее предсказывать распределение латентов и снижать энтропию.
  • Для WaLLoC эта база нужна, чтобы понимать, как WPT/банки фильтров встраиваются в learned-пайплайн и где можно интегрировать кватернионные банки фильтров.
  • Ресурсы для чтения

  • Variational image compression with a scale hyperprior (Ballé, Minnen, Singh, Hwang, Johnston, 2018) — базовая и очень цитируемая работа про learned компрессию, hyperprior и оценку rate.
  • End-to-end optimized image compression (Ballé, Laparra, Simoncelli, 2016) — ранняя формулировка обучения “преобразование + энтропийная модель” end-to-end.
  • The elements of statistical learning (Hastie, Tibshirani, Friedman) — хорошая база по вероятностному мышлению и оптимизации, полезна для понимания моделей распределений и обучения.
  • 4. WaLLoC: WPT, entropy bottleneck и асимметричные автоэнкодеры

    WaLLoC: WPT, entropy bottleneck и асимметричные автоэнкодеры

    Как эта статья связывает предыдущие темы курса

    В предыдущих статьях курса мы собрали три “кирпича”, без которых WaLLoC трудно понимать как систему:

  • изображение как дискретный сигнал (тензор для RGB)
  • теория сжатия: энтропия, квантование и компромисс rate–distortion через
  • ML-компрессия: автоэнкодер (analysis/synthesis), вероятностная модель латентов (entropy model) и обучение end-to-end
  • Теперь мы соберём эти кирпичи в одну конкретную конструкцию: WaLLoC-подобную архитектуру, где преобразование устроено как вейвлет-пакетный банк фильтров (WPT), а “стоимость в битах” контролируется через entropy bottleneck. Дополнительно разберём идею асимметричных автоэнкодеров и почему она важна именно для компрессии.

    Ключевая мысль этой статьи:

  • WPT отвечает за то, какие коэффициенты вы вообще будете кодировать (то есть формирует представление)
  • entropy bottleneck отвечает за то, сколько бит вы потратите на эти коэффициенты (через вероятности)
  • асимметрия отвечает за то, где вы готовы платить вычислениями (на стороне энкодера, декодера или обоих)
  • !Общий конвейер WaLLoC-подобной компрессии

    Где WaLLoC находится в общей схеме learned-компрессии

    Общая логика WaLLoC-подхода хорошо укладывается в стандартную learned-компрессию:

  • Analysis transform превращает изображение в коэффициенты (латенты) .
  • Квантование превращает в дискретные символы , пригодные для записи в битстрим.
  • Entropy model / entropy bottleneck оценивает распределение и даёт оценку битрейта .
  • Entropy coding (обычно арифметическое кодирование) реально упаковывает в битстрим.
  • Synthesis transform восстанавливает из декодированных коэффициентов.
  • Модель обучается минимизировать .
  • В WaLLoC особенность в том, что analysis/synthesis устроены не как “произвольная CNN”, а как структурированное вейвлет-подобное разложение (WPT), то есть как банк фильтров + правила разбиения по поддиапазонам.

    WPT как банк фильтров: что это и зачем оно в WaLLoC

    Банк фильтров: минимальная база

    Вейвлет-преобразования в дискретном виде обычно реализуются как двухканальный банк фильтров:

  • низкочастотный фильтр (low-pass) с импульсной характеристикой
  • высокочастотный фильтр (high-pass) с импульсной характеристикой
  • Идея “анализирующего” шага в 1D (схематично):

  • фильтруем сигнал и прореживаем (downsampling) в 2 раза
  • Одна из распространённых записей коэффициентов (важна форма индексации и смысл операций):

    Расшифровка каждого элемента:

  • — исходный дискретный сигнал
  • — коэффициенты низкочастотного фильтра
  • — коэффициенты высокочастотного фильтра
  • approximation (приближение, низкие частоты)
  • detail (детали, высокие частоты)
  • внутри аргумента означает, что мы берём каждый второй отсчёт результата (downsampling в 2 раза)
  • Для изображений (2D) обычно применяют фильтрацию по строкам и столбцам (separable), получая четыре поддиапазона на уровень:

  • LL: low-low (грубая структура)
  • LH: low-high
  • HL: high-low
  • HH: high-high (мелкие детали)
  • Чем WPT отличается от “обычного” вейвлета

    В стандартном дискретном вейвлет-преобразовании (DWT) на следующем уровне разлагают только LL (приближение). В вейвлет-пакетном преобразовании (WPT) разлагать можно не только LL, но и полосы деталей.

    То есть WPT строит дерево разложений, где каждый узел можно снова разложить парой фильтров.

    Интуиция, почему это полезно для компрессии:

  • разные изображения “любят” разные разбиения частотной оси
  • WPT даёт более гибкое частотно-пространственное разложение
  • при удачном дереве и фильтрах многие коэффициенты становятся малыми или предсказуемыми, а значит дешевле по энтропии
  • !Разница между DWT и WPT как деревья разложения

    Синтез (обратный тракт) и идея согласованности

    Чтобы декодер мог восстановить сигнал, нужен “обратный” банк фильтров (synthesis filters), часто обозначаемый и .

    Схематично обратный шаг в 1D выглядит так:

    Пояснения:

  • и — коэффициенты поддиапазонов
  • выражения вида соответствуют вставке нулей (upsampling) и последующей фильтрации
  • — восстановленный сигнал
  • Для компрессии важно помнить:

  • если коэффициенты не квантуются, хорошо подобранные анализ/синтез могут давать идеальное восстановление
  • в lossy-компрессии идеальность нарушается квантованием, но согласованная структура всё равно стабилизирует реконструкцию
  • Как WaLLoC “встраивает” WPT в learned-компрессию

    В WaLLoC-подходе WPT играет роль аналитического “скелета” для и :

  • вместо произвольного набора свёрток используется многоуровневый банк фильтров
  • фильтры и/или выбор дерева разложения могут быть обучаемыми (конкретная реализация зависит от статьи и варианта)
  • Связь с R–D целью из прошлой статьи:

  • WPT влияет на через качество реконструкции (как “разумно” распределена информация по коэффициентам)
  • WPT влияет на через статистику коэффициентов (насколько они “сжимаемы” энтропийной моделью)
  • Ресурс для базы по WPT:

  • Wavelet packet decomposition
  • Entropy bottleneck: как WaLLoC превращает коэффициенты в биты

    Почему “вероятности” напрямую связаны с битами

    После квантования мы имеем дискретные символы . Если модель говорит, что вероятность символа равна , то оценка “стоимости” в битах выражается через логарифм:

    Что означает каждый элемент:

  • — вероятность конкретного дискретного значения
  • — логарифм по основанию 2, поэтому единица измерения — биты
  • знак “минус” делает величину положительной, потому что
  • Тогда ожидаемый rate по всему набору коэффициентов часто считают суммой:

  • индекс пробегает элементы тензора коэффициентов
  • получаем дифференцируемую (через параметры распределения) оценку того, сколько бит нужно
  • Эта идея была центральной в ранних learned-кодеках с entropy bottleneck:

  • End-to-end optimized image compression (Ballé et al., 2016)
  • Что такое entropy bottleneck “по смыслу”

    Entropy bottleneck — это обучаемый модуль, который делает две вещи:

  • задаёт параметризованное распределение для квантованных коэффициентов
  • позволяет во время обучения вычислять и тем самым оптимизировать
  • Практически в WaLLoC-логике это выглядит так:

  • WPT выдаёт поддиапазоны (много групп коэффициентов)
  • коэффициенты квантуются
  • entropy bottleneck оценивает их вероятности, чтобы арифметический кодер упаковал их близко к энтропийному пределу
  • Почему WPT и entropy bottleneck должны быть “согласованы”

    Важно не путать роли:

  • WPT отвечает за представление
  • entropy bottleneck отвечает за кодирование представления
  • Если WPT устроен плохо (например, производит “почти равномерно распределённые” коэффициенты), entropy bottleneck будет вынужден платить большим . Если же WPT концентрирует информацию так, что много коэффициентов близки к нулю или имеют предсказуемые масштабы, уменьшается.

    Практический вывод для чтения WaLLoC и будущей модификации:

  • любая замена фильтров (например, на кватернионные) почти гарантированно изменит распределение коэффициентов
  • значит, entropy bottleneck и/или его параметризация могут потребовать адаптации
  • Для углубления вероятностной части (hyperprior как следующая ступень точности):

  • Variational image compression with a scale hyperprior (Ballé et al., 2018)
  • Асимметричные автоэнкодеры: зачем и что это даёт в компрессии

    Что означает “асимметрия”

    В обычном автоэнкодере часто делают симметричную структуру: энкодер и декодер примерно одинаковой глубины и сложности. В компрессии это не обязательно.

    Асимметричный автоэнкодер означает, что вычислительная сложность энкодера и декодера сознательно различается.

    Есть два типовых сценария:

  • тяжёлый энкодер, лёгкий декодер
  • - подходит для распространения контента: закодировали один раз на сервере, миллионы раз декодируют на устройствах
  • лёгкий энкодер, тяжёлый декодер
  • - встречается реже, но возможен в специфических системах (например, где кодирует слабое устройство)

    Почему это особенно важно именно для learned-компрессии

    В learned-схеме стоимость появляется в трёх местах:

  • analysis transform (энкодер): свёртки, WPT-уровни, доп. ветки
  • probability model: оценка вероятностей, возможно дополнительные “side latents”
  • synthesis transform (декодер): обратное преобразование, нейросетевые блоки улучшения качества
  • Асимметрия позволяет:

  • сохранить качество на приемлемом уровне
  • не “сломать” практичность системы по скорости декодирования
  • Как это связано с WaLLoC

    Идея WaLLoC (в самом общем виде) — использовать структурированный многоуровневый трансформ (WPT), который может быть вычислительно удобным, а затем обучением подогнать его под R–D цель.

    Асимметрия может проявляться, например, так:

  • энкодер делает более сложный анализ/разбиение/оценку статистик, чтобы уменьшить
  • декодер использует более простой (или наоборот более “качественный”) синтез, чтобы контролировать
  • Для вашего проекта это важно, потому что кватернионные операции могут добавить стоимость, и асимметрия — один из рычагов, как эту стоимость “расположить” в системе.

    Как WaLLoC компоненты реализуют

    Напомним смысл цели (из статьи про R–D оптимизацию):

  • — искажение между и (например MSE или другая метрика)
  • — ожидаемое число бит для коэффициентов (через вероятности entropy bottleneck)
  • — насколько сильно вы готовы платить качеством за уменьшение битрейта
  • В WaLLoC-подобной логике связи такие:

  • WPT и synthesis-тракт напрямую влияют на (насколько хорошо восстанавливается изображение)
  • WPT и entropy bottleneck совместно влияют на (насколько “дёшево” кодируются коэффициенты)
  • задаёт режим работы: при разных система учится разным компромиссам
  • Практический совет при чтении любой статьи про learned-компрессию:

  • сначала найдите, где в модели вычисляется (обычно через )
  • затем найдите, где считается
  • затем посмотрите, какие блоки специально придуманы, чтобы уменьшать (probability modeling) и какие — чтобы уменьшать (улучшение реконструкции)
  • Точки интеграции кватернионных банков фильтров в WaLLoC-логику

    Вы хотите заменить “стандартные” (реальные) вейвлет-фильтры на кватернионные банки фильтров, рассматривая RGB как единый гиперкомплексный сигнал. На уровне архитектурных блоков WaLLoC это естественно ложится в следующие места.

    Замена фильтров в WPT (analysis transform)

    Вместо обработки RGB как трёх отдельных каналов вы потенциально хотите обрабатывать каждый пиксель как один кватернион (идея будет подробно разбираться в кватернионном этапе курса):

  • например, как чистый кватернион (без скалярной части)
  • Тогда фильтрация в WPT становится “кватернионной” и может учитывать межканальные связи не через “смешивание каналов матрицей”, а через гиперкомплексное умножение.

    Согласованный обратный тракт (synthesis transform)

    Если analysis стал кватернионным, synthesis тоже должен быть согласованным:

  • обратные фильтры, upsampling и сборка поддиапазонов должны быть определены так, чтобы не появлялись артефакты из-за несогласованности алгебры
  • в идеале структура сохраняет стабильность реконструкции даже после квантования
  • Граница с entropy bottleneck (вероятностная модель)

    Entropy bottleneck по определению оперирует вероятностями дискретных символов. Если коэффициент стал кватернионом, возникает вопрос: как именно кодировать:

  • кодировать 4 компоненты (скалярная + 3 мнимые) как совместный вектор
  • или кодировать только мнимую тройку
  • или кодировать “модуль + направление” (что может быть ближе к геометрическому смыслу, но сложнее)
  • Это критическая точка: даже если кватернионный WPT даёт лучшие коэффициенты, entropy bottleneck должен уметь давать адекватные вероятности, иначе выигрыш по не появится.

    Асимметрия как инструмент удержать вычислительную стоимость

    Кватернионные операции могут быть дороже. Поэтому при проектировании “Quaternion-WaLLoC” асимметрия — один из первых рычагов:

  • если декодер должен быть быстрым, можно оставить synthesis проще
  • если кодирование делается оффлайн, можно усложнить analysis и probability modeling, чтобы сильнее снизить
  • Итоги

  • WPT в WaLLoC — это структурированное многоуровневое преобразование (банк фильтров), которое формирует коэффициенты для кодирования.
  • Entropy bottleneck связывает коэффициенты с битами через вероятности и штраф .
  • Асимметричные автоэнкодеры — практический дизайн-инструмент, позволяющий распределить вычисления между энкодером и декодером.
  • Для будущей адаптации WaLLoC к кватернионам ключевые “места внедрения” находятся в:
  • - фильтрах WPT (analysis/synthesis) - параметризации вероятностной модели на границе с entropy bottleneck - выборе асимметрии, чтобы удержать сложность системы

    Ресурсы для закрепления

  • Wavelet packet decomposition — базовая интуиция и структура WPT.
  • End-to-end optimized image compression (Ballé et al., 2016) — фундаментальная формулировка entropy bottleneck и end-to-end обучения.
  • Variational image compression with a scale hyperprior (Ballé et al., 2018) — как улучшать вероятностную модель (часто важно, когда меняется трансформ).
  • 5. Кватернионы и кватернионные банки фильтров: интеграция в WaLLoC

    Кватернионы и кватернионные банки фильтров: интеграция в WaLLoC

    Зачем кватернионы в задаче ML-компрессии изображений

    В предыдущих статьях курса мы пришли к схеме learned-компрессии:

  • входное изображение преобразуется в коэффициенты (латенты) ;
  • коэффициенты квантуются и энтропийно кодируются (через вероятностную модель, entropy bottleneck);
  • декодер по декодированным коэффициентам восстанавливает изображение ;
  • обучение идёт по компромиссу .
  • В WaLLoC ключевая особенность в том, что analysis/synthesis transform устроены как вейвлет-пакетное преобразование (WPT), то есть как структурированный банк фильтров.

    Проблема RGB для классических банков фильтров такая:

  • если фильтровать каналы независимо, вы игнорируете межканальную связь;
  • если смешивать каналы обычной матрицей (например, свёрткой), вы задаёте смешивание в реальной линейной алгебре, где нет встроенной геометрии “совместного” цветового вектора.
  • Кватернионы Гамильтона позволяют представить RGB как единый гиперкомплексный сигнал, где операции умножения естественным образом связаны с поворотами в 3D. Это даёт идею: заменить (часть) реальных фильтров WaLLoC на кватернионные, чтобы банк фильтров “видел” цвет как связанный объект.

    !RGB как один кватернион: идея представления цветного пикселя

    Кватернионы Гамильтона: минимальная математика

    Определение и базис

    Кватернион — это число вида

    Разберём все части:

  • — кватернион;
  • скалярная часть (обычное вещественное число);
  • — вещественные коэффициенты при мнимых базисных элементах;
  • — базис мнимой части (это не “комплексная единица”, а три разные оси).
  • Правила умножения базисных элементов задаются так:

    Из этого следуют важные произведения:

    а также “обратные” с минусом:

    Ключевой вывод: умножение кватернионов некоммутативно, то есть обычно .

    Ресурс для ориентира: Quaternion.

    Скаляр + вектор: удобная запись

    Кватернион удобно воспринимать как пару “скаляр + 3D-вектор”:

    Здесь:

  • — скалярная часть;
  • — векторная (мнимая) часть.
  • Чистый кватернион — это кватернион со скалярной частью 0:

    Именно чистые кватернионы удобно использовать для RGB.

    Сопряжение, норма, обратный элемент

    Для кватерниона определим:

  • Сопряжение
  • Смысл: меняем знак у мнимой части.

  • Норма (квадрат нормы)
  • Что означает это выражение:

  • — неотрицательное вещественное число;
  • оно похоже на сумму квадратов компонент в .
  • Обратный кватернион (если )
  • Это важно, потому что операции вида “умножить слева и справа, а потом вернуть обратно” используются для поворотов.

    Почему кватернионы подходят для RGB

    RGB как чистый кватернион

    Пусть пиксель имеет значения (например, нормированные в ). Тогда можно сопоставить ему чистый кватернион:

    Что здесь важно концептуально:

  • мы не храним как три независимых скаляра;
  • мы считаем, что это один объект с векторной природой.
  • Такое объединение делает естественными операции, которые одновременно “перемешивают” каналы и сохраняют геометрический смысл вектора.

    Связь с поворотами в 3D

    Кватернионы широко применяют для описания 3D-поворотов. И это напрямую связано с тем, что мнимая часть кватерниона — это 3D-вектор.

    Пусть:

  • — единичный 3D-вектор оси вращения;
  • — угол вращения;
  • единичный кватернион (его норма равна 1), задающий вращение.
  • Тогда можно записать:

    Здесь:

  • — скалярная часть;
  • — мнимая часть, направленная вдоль оси .
  • Если — 3D-вектор (например, цвет ), то его можно представить чистым кватернионом и повернуть так:

    Смысл формулы:

  • умножение слева и справа реализует поворот;
  • длина вектора сохраняется, если единичный.
  • Почему это полезная интуиция для цвета:

  • можно рассматривать некоторые операции смешивания каналов как “повороты” в RGB-пространстве;
  • поворот — это структурированное смешивание, не “разваливающее” вектор на независимые координаты.
  • Ресурс: Quaternions and spatial rotation.

    Важно: в компрессии вам не обязательно буквально интерпретировать фильтры как повороты. Но связь с поворотами даёт мотивацию, почему кватернионное умножение может быть осмысленным способом совместной обработки .

    Кватернионная фильтрация: что меняется по сравнению с обычной свёрткой

    Обычная (реальная) фильтрация

    В классической обработке изображений (и в CNN) свёртка — это линейная операция над вещественными числами: вы берёте окно пикселей и считаете взвешенную сумму.

    Если у вас RGB, то чаще всего делают одно из двух:

  • фильтруют каждый канал отдельно;
  • или делают смешивание каналов через матрицу (например, свёртка), а потом пространственную фильтрацию.
  • Кватернионная фильтрация: базовая идея

    Если каждый пиксель — кватернион , то фильтр может быть тоже кватернионным .

    Тогда кватернионная “свёртка” (упрощённо) может выглядеть как сумма кватернионных произведений:

    Объяснение элементов:

  • — входной кватернионный сигнал (изображение);
  • — кватернионный фильтр;
  • — выход;
  • суммы пробегают небольшое окно.
  • Ключевой нюанс: из-за некоммутативности нужно договориться о порядке умножения.

    На практике встречаются варианты:

  • левосторонняя фильтрация: ;
  • правосторонняя фильтрация: ;
  • двусторонняя (sandwich): .
  • В контексте банков фильтров для WPT чаще стремятся к конструкциям, которые удобно реализуются и приводят к устойчивой реконструкции. Поэтому в реальной системе вы почти наверняка будете выбирать конкретное соглашение и придерживаться его во всём анализ/синтез тракте.

    Эквивалентность 4-канальной реальной модели

    Любую кватернионную линейную операцию можно переписать как линейную операцию в над вектором компонент .

    Практический смысл этого факта:

  • вы можете реализовывать “кватернионный фильтр” как специальным образом связанный набор обычных (вещественных) фильтров;
  • это полезно для интеграции в существующие DL-фреймворки и для контроля числа параметров.
  • Но важно не перепутать:

  • “просто 4 независимых канала” — это не кватернионы;
  • “4 канала со связанными ограничениями, соответствующими кватернионному умножению” — это и есть кватернионная структура.
  • Что такое кватернионный банк фильтров

    Напоминание: банк фильтров в WPT

    В WaLLoC-подобной схеме WPT разложение строится как повторение двух операций:

  • фильтрация парой фильтров (низкочастотный и высокочастотный);
  • прореживание (downsampling) и разбиение на поддиапазоны.
  • В 2D это даёт поддиапазоны типа LL, LH, HL, HH на каждом уровне, а WPT разрешает “разворачивать” дерево разложения глубже, чем обычный DWT.

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

    Кватернионный банк фильтров в вашем контексте означает:

  • Входной сигнал — кватернионный (RGB как чистый кватернион на пиксель).
  • Фильтры анализа (и синтеза) — кватернионные, то есть их коэффициенты содержат компоненты при (и, при необходимости, скалярную часть).
  • Операция фильтрации использует кватернионное умножение (с фиксированным соглашением о порядке).
  • Почему это нетривиально: идеальная реконструкция и некоммутативность

    В обычных (вещественных) вейвлет-банках фильтров есть хорошо разработанные условия perfect reconstruction: при отсутствии квантования синтез точно восстанавливает сигнал.

    В кватернионном случае появляются сложности:

  • некоммутативность ломает многие “симметричные” алгебраические выводы, если переносить их буквально;
  • нужно согласовать анализирующие и синтезирующие фильтры в одной и той же алгебре и с тем же порядком умножений;
  • если вы используете чистые кватернионы для RGB, важно контролировать, не появляется ли скалярная часть на выходе (или осознанно разрешить её интерпретацию).
  • Практический компромисс для исследовательского проекта (особенно первого прототипа):

  • начинать с конструкций, которые явно сводятся к хорошо понимаемым вещественным банкам фильтров, но вводят кватернионную связанность как ограничение на параметры.
  • Точки интеграции в WaLLoC

    Ниже перечислены места, где кватернионные банки фильтров могут заменить компоненты WaLLoC, и что при этом надо перепроверить.

    | Компонент WaLLoC | Что делает в базовой схеме | Что вы заменяете на кватернионы | Главный риск/вопрос | |---|---|---|---| | WPT analysis transform | Разлагает на поддиапазоны (коэффициенты) | Фильтры анализа становятся кватернионными, RGB трактуется как один сигнал | Совместимость с downsampling/upsampling и устойчивость разложения | | WPT synthesis transform | Собирает из декодированных коэффициентов | Синтезирующие фильтры должны быть согласованы с анализом в кватернионной алгебре | Артефакты из-за несогласованности, накопление ошибок после квантования | | Entropy bottleneck / entropy model | Даёт вероятности и оценку | Меняется тип коэффициентов: из “скаляров” в “кватернионные векторы” | Как параметризовать распределение и как кодировать символы | | Rate–distortion обучение | Минимизирует | Можно оставить по RGB, но зависит от новой статистики | Выигрыш возможен только если вероятностная модель “успевает” за новым представлением |

    !Где именно кватернионы входят в WaLLoC-пайплайн

    Entropy bottleneck для кватернионных коэффициентов: как думать о вероятностях и битах

    В WaLLoC (и в learned-компрессии в целом) rate оценивают через вероятности квантованных символов:

    Здесь:

  • — квантованный символ (в обычном случае это целое число или дискретизированное значение);
  • — вероятность этого символа по модели;
  • сумма идёт по всем элементам представления.
  • Если становится кватернионом, возникает вопрос: что именно является символом для кодирования.

    Наиболее реалистичные варианты (как исследовательские гипотезы):

  • Моделировать компоненты отдельно
  • - кодировать (и , если он есть) как несколько скалярных потоков; - entropy model предсказывает параметры распределений по компонентам; - плюс: проще всего встроить в существующие entropy bottleneck реализации; - минус: межкомпонентная зависимость может теряться.

  • Моделировать как совместный вектор
  • - рассматривать кватернион как 3D или 4D вектор и задавать совместное распределение; - плюс: учитывает корреляции компонент; - минус: сложнее параметризовать и сложнее приблизить эффективным энтропийным кодированием.

  • Декомпозиция “модуль + направление”
  • - для чистого кватерниона можно выделить модуль и направление ; - идея: кодировать и параметры направления; - плюс: ближе к геометрии, иногда может давать более “естественную” статистику; - минус: направление живёт на сфере, появляются сингулярности при , усложняется квантование.

    Важная практическая мысль:

  • замена WPT фильтров на кватернионные может улучшить структуру коэффициентов, но выигрыш в битрейте появится только тогда, когда entropy model научится хорошо предсказывать их вероятности.
  • Ресурс для базового понимания, откуда берётся entropy bottleneck: End-to-end optimized image compression.

    Как аккуратно проектировать “Quaternion-WaLLoC” для научной статьи

    Ниже — логика, которая помогает сделать модификацию WaLLoC исследуемой (чтобы можно было написать статью с ясной постановкой и абляциями).

    Выбор представления цвета

    Самый чистый старт:

  • кодировать пиксель как чистый кватернион ;
  • не использовать скалярную часть, чтобы не вводить дополнительный канал, который трудно интерпретировать.
  • Альтернатива для экспериментов:

  • скалярную часть использовать как яркость (или 0), а мнимую как цветность; но это уже отдельная дизайн-гипотеза.
  • Где именно внедрять кватернионы: “минимальная замена” и “полная замена”

    Чтобы контролировать риски, удобно думать о двух режимах:

  • Минимальная замена
  • - WPT остаётся в основном вещественным, но добавляется кватернионное смешивание каналов как структурированная операция перед/после уровней WPT; - цель: проверить, даёт ли геометрически связанное смешивание статистически более выгодные коэффициенты.

  • Полная замена
  • - сами фильтры WPT (low/high) становятся кватернионными; - цель: получить настоящий кватернионный банк фильтров в разложении.

    Для статьи обычно хорошо работает стратегия:

  • начать с минимальной замены как базового baseline;
  • затем показать, что полная замена даёт дополнительный эффект (или объяснить, почему не даёт).
  • Согласованность анализа/синтеза

    В WaLLoC анализ и синтез должны быть согласованы, иначе вы получите качество хуже даже при больших битрейтах.

    Для кватернионного варианта это означает:

  • фиксировать соглашение о порядке умножения (например, всегда );
  • строить синтезирующие фильтры как “пару” к анализирующим в той же алгебре;
  • проверять, что при отключённом квантовании реконструкция близка к точной (насколько это позволяет ваша конструкция).
  • Что считать distortion

    На раннем этапе исследований разумно оставить привычным:

  • MSE или MS-SSIM по RGB пикселям.
  • Причина:

  • вы меняете представление и фильтры; если одновременно поменять метрику качества, будет трудно интерпретировать результат.
  • Итоги

  • Кватернионы Гамильтона дают способ представить RGB как единый объект: .
  • Некоммутативность кватернионного умножения — не деталь, а центральное свойство: порядок операций нужно фиксировать и соблюдать.
  • Связь кватернионов с 3D-поворотами объясняет, почему кватернионные операции естественно интерпретировать как структурированное межканальное смешивание.
  • Кватернионные банки фильтров можно интегрировать в WaLLoC прежде всего в WPT analysis/synthesis; но это неизбежно влияет на статистику коэффициентов и требует внимания к entropy bottleneck.
  • Главные “точки риска” при адаптации WaLLoC: согласованность анализа/синтеза и адекватная вероятностная модель для новых (кватернионных) коэффициентов.
  • Ресурсы

  • Quaternion — определение, свойства, базовые операции.
  • Quaternions and spatial rotation — формула поворота и геометрический смысл.
  • Wavelet packet decomposition — структура WPT как дерева разложений.
  • End-to-end optimized image compression — источник идеи entropy bottleneck и end-to-end оптимизации rate–distortion.