Что такое оверсемплинг
Перейти к содержимому

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

FabFilter Pro-L Оверсэмплинг

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

FabFilter Pro-L Oversampling.png

«Когда мне нужно, включить оверсэмплинг?«

Вам это нужно больше тогда, когда процесс лимитирования работает быстро (с использованием короткого времен Lookahead), а также при сильном лимитировании, что ведёт к более высокому уровню алиасинга. Алиасинг вызывает меж-сэмпловые пики, а они в дальнейшем могут привести к искажениям, например, во время Ц/А преобразования или преобразования в mp3. Есть только два небольших недостатка оверсэмплинга: это увеличивает нагрузку на процессор, и он может ввести очень небольшой упреждающий звон из-за фазо-линейной фильтрации, которая необходима. Как правило, этот эффект настолько мал, что его не слышно, но правильно знать об этом, а не слепо предполагать, что оверсэмплинг всегда лучше.

«Почему когда включен оверсемплинг, уровень выходящего сигнала может превышать установленный параметр уровня выхода?«

При использовании оверсемплинга, лимитирование применяется к звуку с повышенным количеством сэмплов (в два или четыре раза больше нормальной частоты дискретизации), гарантируя, что ни один сэмпл (сигнала с повышенной частотой дискретизации) не превысит установленного уровня выходящего сигнала. Хотя большинство алиасинга отфильтровывается на конечной стадии понижения дискретизации, всё ещё ещё могут существовать некоторые меж-сэмпловые пики. Из-за этих пиков, процесс понижения дискретизации который возвращает звук в оригинальную частоту дискретизации, может генерировать формы волны с несколько более высоком уровне, чем указанный уровень выходящего сигнала. Величина этого превышения сильно зависит от скорости и количества лимитирования. В большинстве случаев использование минимального времени Lookahead 0,1 мс сохраняет превышение в диапазоне от 0,1 дБ.

Использование ISP измерителя и оверсемплинга [ править ]

Как мы только что объяснили, оверсемплинг, уже может выявить наличие меж-сэмпловых пиков в полученном звуке. Но чтобы полностью раскрыть их, вы должны использовать ISP измеритель. Он также чётко визуализирует благотворное влияние оверсемплинга. Использование 4x оверсемплинга позволит резко сократить меж-сэмпловые пики, что в свою очередь позволяет увеличить уровень выходящего сигнала без меж-сэмплового клиппирования. Вы также можете ясно видеть, что если вы используете немного большее время Lookahead, это будет уменьшать меж-сэмпловые пики, и без оверсемплинга.

Note.png При использовании очень короткого времени Lookahead менее 0,1 мс (клиппирование), может стать трудно держать меж-сэмпловые пики в пределах рабочего диапазона. Опять же, в большинстве случаев, выбор 4x оверсемплинга в сочетании с минимальным временем Lookahead 0,1 мс, сохраняет меж-сэмпловые пики в небольшом диапазоне от 0,1 дБ.

Передискретизация (oversampling)

Это дискретизация сигнала с частотой, превышающей основную частоту дискретизации. Передискретизации может быть аналоговой, когда с повышенной частотой делаются выборки исходного сигнала, или цифровой, когда между уже существующими цифровыми отсчетами вставляются дополнительные, рассчитанные путем интерполяции. Другой способ получения значений промежуточных отсчетов состоит во вставке нулей, после чего вся последовательность подвергается цифровой фильтрации. В АЦП используется аналоговая передискретизация, в ЦАП — цифровая.

Передискретизация используется для упрощения конструкций АЦП и ЦАП. По условиям задачи на входе АЦП и выходе ЦАП должен быть установлен аналоговый фильтр с АЧХ, линейной в рабочем диапазоне и круто спадающей за его пределами. Реализация такого аналогового фильтра весьма сложна; в то же время при повышении частоты дискретизации вносимые ею отражения спектра пропорционально отодвигаются от основного сигнала, и аналоговый фильтр может иметь гораздо меньшую крутизну среза.

Другое преимущество передискретизации состоит в том, что ошибки амплитудного квантования (шум дробления), распределенные по всему спектру квантуемого сигнала, при повышении частоты дискретизации распределяются по более широкой полосе частот, так что на долю основного звукового сигнала приходится меньшее количество шума. Каждое удвоение частоты снижает уровень шума квантования на 3 дБ; поскольку один двоичный разряд эквивалентен 6 дБ шума, каждое учетверение частоты позволяет уменьшить разрядность преобразователя на единицу.

Передискретизация вместе с увеличением разрядности отсчета, интерполяцией отсчетов с повышенной точностью и выводом их на ЦАП надлежащей разрядности позволяет несколько улучшить качество восстановления звукового сигнала. По этой причине даже в 16-разрядных системах нередко применяются 18- и 20-разрядные ЦАП с передискретизацией. АЦП и ЦАП с передискретизацией за счет значительного уменьшения времени преобразования могут обходиться без схемы выборки-хранения.

Передискретизация с помощью цифровых фильтров Выбор фильтра для передискретизации Выбор функции h(t) обуславливается компромиссом между качеством передискретизации (то есть близости её к идеальной) и вычислительной сложностью этого процесса. В принципе, для передискретизации может быть использован любой фильтр нижних частот с необходимой частотой среза. КИХ-фильтры применяются для этих задач чаще, чем БИХ-фильтры, из-за возможности построения КИХ-фильтров с линейной фазо-частотной характеристикой.

Чаще всего при передискретизации используются следующие классы цифровых фильтров:

  • 1. Фильтры, построенные, исходя из критерия близости частотной характеристики к частотной характеристике идеального фильтра нижних частот:
  • Оконные sinc-фильтры (англ. windowed-sinc filters) — их импульсная характеристика h(t) получается путём умножения импульсной характеристики идеального ФНЧ на оконную функцию,
  • Равноволновые фильтры Чебышёва.
  • 2. Классические способы интерполяции функций (часто применяются для изображений):
  • Линейные интерполяторы,
  • Интерполяторы Лагранжа (частный случай — кубическая интерполяция).
  • 3. CIC-фильтры (каскады гребёнчатых фильтров и интеграторов).Этот класс фильтров не использует умножений при вычислении, что позволяет сэкономить вычислительные ресурсы.

Процесс уменьшения частоты дискретизации сигнала называется децимацией. Иногда этот термин употребляют только для уменьшения частоты дискретизации в целое число раз (далее N). Децимация цифрового сигнала с целым коэффициентом производится в два этапа:

  • Цифровая фильтрация сигнала с целью удаления высокочастотных составляющих, не удовлетворяющих условиям теоремы Котельникова для новой частоты дискретизации;
  • Удаление (отбрасывание) лишних отсчетов (сохраняется каждый N-й отсчёт).

В англоязычной литературе второй из этих этапов иногда обозначают термином downsampling. В обиходе этот термин может употребляться как синоним термина «децимация».
Первый этап необходим для исключения наложения спектров, природа которого аналогична наложению спектров при первоначальной дискретизации аналогового сигнала. Наложение спектров особенно заметно на тех участках сигнала, которые содержат значительные высокочастотные спектральные составляющие. Так, на приведённых в начале статьи фотографиях небо практически не подвергнулось наложению спектров, но эффект становится заметным, если обратить внимание на резкие переходы.
При программной реализации алгоритма децимации «лишние» отсчёты не удаляются, а просто не вычисляются. При этом число обращений к цифровому фильтру уменьшается в N раз. При аппаратной реализации экономии можно достичь путём использования полифазных фильтров. Интерполяцией называют увеличение частоты в целое или дробное число раз путем вычисления промежуточных отсчетов по уже имеющимся. Идеальная интерполяция позволяет точно восстановить значения сигнала в промежуточных отсчётах.
Стандартный алгоритм интерполяции сигнала с целым коэффициентом заключается в следующем:

  • вставка нулевых отсчетов на место отсчетов, которые необходимо вычислить;
  • фильтрация сигнала цифровым фильтром нижних частот для того, чтобы убрать спектральные составляющие сигнала, которых заведомо не могло быть в исходном сигнале согласно теореме Котельникова; выход фильтра умножается на коэффициент интерполяции для нормирования.

В англоязычной литературе первый из этих этапов иногда обозначается термином upsampling. При этом в обиходе этот термин может употребляться как синоним термина «интерполяция».
При программной реализации интерполяции нулевые отсчёты не участвуют в вычислении выходного сигнала фильтра, что позволяет оптимизировать процесс вычисления. При аппаратной реализации для экономии ресурсов возможно использование полифазных фильтров.

Комбинация интерполяции и децимации Для того, чтобы изменить частоту дискретизации сигнала в \frac раз (M и N — целые положительные числа), можно сначала увеличить частоту дискретизации в M раз, а затем уменьшить её в N раз. Фильтрацию сигнала достаточно произвести всего один раз — между интерполяцией и децимацией. Недостатком данного метода является необходимость фильтрации сигнала на повышенной в M раз частоте дискретизации, что требует значительных вычислительных ресурсов. При этом соответствующая частота может во много раз превосходить как исходную, так и окончательную частоту передискретизации, особенно если M и N — близкие большие числа. Так, например, при передискретизации звукового сигнала с 44100 Гц до 48000 Гц этим методом необходимо увеличить частоту дискретизации в 160 раз до 7056000 Гц и затем уменьшить её в 147 раз до 48000 Гц. Таким образом, в данном примере вычисления приходится производить на частоте дискретизации более 7 МГц.

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

Передискретизация с помощью дискретного преобразования Фурье Передискретизация с помощью ДПФ используется для повышения частоты дискретизации в целое или дробное число раз. Алгоритм работает только с конечными отрезками сигнала. Пусть N — начальное число отсчётов, M — число отсчётов в передискретизованном сигнале. Алгоритм включает в себя следующие операции:
1. Вычисляется ДПФ исходного сигнала (чаще всего по алгоритму быстрого преобразования Фурье).
2. В середину спектра вставляется необходимое число нулевых компонент:
2.1. если N нечётное: \begin y_i=x_i & 1 \le i \le \frac <2>\\ y_i=0 & \frac<2>+1 \le i \le \frac<2>+M-N\\ y_=x_ & \frac<2>+M-N+1 \le i \le M \end
2.2. если N чётное: \begin y_i=x_i & 1 \le i \le \frac <2>\\ y_i=\dfrac<2>+1>> <2>& i=\frac<2>+1 \\ y_=0 & \frac<2>+2 \le i \le \frac<2>+M-N \\ y_i=\dfrac<2>+1>> <2>& i=\frac<2>+M-N+1 \\ y_i=x_ & \frac<2>+M-N+2 \le i \le M \end
3. Вычисляется обратное дискретное преобразование Фурье с нормировкой. Любой метод, основанный на ДПФ, предназначен в первую очередь для периодических дискретных сигналов. Для обработки непериодических сигналов необходимо выбирать отрезки сигнала для вычисления ДПФ таким образом, чтобы их концы перекрывались. Широко применяется как аппаратная (на основе специализированных микросхем или FPGA, так и программная (на базе процессоров общего назначения или сигнальных процессоров реализация алгоритмов передискретизации.

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

На практике передискретизация в большинстве случаев ведёт к потере информации о сигнале по следующим причинам:

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

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

5 главных алгоритмов сэмплинга

Работа с данными — работа с алгоритмами обработки данных.

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

Эта статья посвящена наиболее распространённым способам сэмплинга при работе с данными.

Простой случайный сэмплинг

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

Ниже мы выбираем 100 таких элементов из датасета.

Стратифицированный сэмплинг

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

В городе A живёт 1 миллион рабочих

В городе B живёт 2 миллиона художников

В городе C живёт 3 миллиона пенсионеров

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

Если же мы специально сделаем выборку из 10, 20 и 30 человек из городов A, B и C соответственно, то ошибка будет минимальной.

На Python это можно сделать так:

Резервуарный сэмплинг

Мне нравится такая формулировка задачи:

Допустим, у вас есть поток элементов большого неизвестного размера, по которым можно итерироваться только один раз.

Создайте алгоритм, произвольно выбирающий элемент из потока так, как если бы любой элемент мог быть выбран с равной вероятностью.

Как это сделать?

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

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

Когда дело доходит до математики, лучше попытаться начать решение с небольшого частного случая.

Так что давайте рассмотрим поток, состоящий из 3-х элементов, где нам нужно выбрать только 2.

Мы видим первый элемент, сохраняем его в списке, так как в резервуаре ещё есть место. Мы видим второй элемент, сохраняем его в списке, так как в резервуаре ещё есть место.

Мы видим третий элемент. Здесь становится интереснее. Мы сохраним третий элемент с вероятностью 2/3.

Давайте теперь посмотрим итоговую вероятность первого элемента быть сохранённым:

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

То есть конечная вероятность первого элемента быть сохранённым:

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

То есть каждый элемент будет сохранён с вероятностью 2/3 или в общем случае k/n.

Случайный андерсэмплинг и оверсэмплинг

Слишком часто в жизни встречаются несбалансированные наборы данных.

Широко применяемый в таком случае способ называется ресэмплинг (в русском переводе иногда говорят «передискретизация» — прим. перев.). Его суть заключается либо в удалении элементов из слишком большого набора (андерсэмплинг) и/или добавлении большего количества элементов в недостаточно большой набор (оверсэмплинг).

Давайте для начала создадим какие-нибудь несбалансированные наборы.

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

Андерсэмплинг и оверсэмплинг с использованием imbalanced-learn

imbalanced-learn (imblearn) — это питоновская библиотека для борьбы с проблемами несбалансированных наборов данных.

Она содержит несколько различных методов для проведения ресэмплинга.

a. Андерсэмплинг с использованием Tomek Links:

Один из предоставляемых методов называется «Tomek Links». «Links» в данном случае — пары элементов из разных классов, находящиеся поблизости.

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

b. Оверсэмплинг со SMOTE:

В SMOTE (Способ Передискретизации Синтезированных Меньшинств) мы создаём элементы в непосредственной близости от уже существующих в меньшем наборе.

Но в imblearn существуют и другие способы андерсэмплинга (Cluster Centroids, NearMiss, и т.д.) и оверсэмплинга (ADASYN и bSMOTE), которые тоже могут пригодиться.

Заключение

Алгоритмы — кровь науки о данных.

Сэмплинг — одна из важнейших областей в работе с данными и выше приведён только поверхностный обзор.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *