1 (edited by Seedmanc 19-07-2014 15:36:47)

Topic: Компенсация движения силами SVP при обработке видео в Ависинте

Возможно ли эффективно использовать SVP в CPU и/или GPU режимах для компенсации движения при временнoм денойсе?
Вот как я привык делать фильтрацию с компенсацией движения:

super = MSuper(mt=true)
backward_vectors = MAnalyse(super, isb=true, mt=true)
forward_vectors  = MAnalyse(super, isb=false, mt=true)
forward_compensation  = mcompensate(super, forward_vectors, thSCD1=500, mt=true )  
backward_compensation = mcompensate(super, backward_vectors, thSCD1=500 ,mt=true )
interleave(forward_compensation, last, backward_compensation)
(временной денойсер с диаметром в 3 кадра)
SelectEvery(3,1)

Тут используется "обычный" MVTools2, который поддерживает встроенную многопоточность и дает приемлемую скорость.
Возможно ли увеличить скорость при сохранении качества используя для этого SVP?
Из того, что я прочитал в Вики, есть 3 пути:

  • Измененный MVTools2, использовать только стандартные функции (те же MFlow/MCompensate).
    Однако аппаратного ускорения здесь нет, а отсутствие mt-параметра дает скорость куда ниже оригинального MVTools2.

  • Тот же MVTool2 из 1 пункта, но использовать его новую функцию MSmoothFps в режиме MFlow.
    Но как использовать его в этом режиме? Как мне показалось, он всегда работает в режиме повышения фпс, даже с algo=1, а ведь компенсация движения и повышение фпс - это не одно и то же. В первом случае создаются "дубликаты" имеющихся кадров, т.е. выполняется 100% сдвиг блоков по векторам движения и создается по 2 дополнительных кадра на каждый исходный, а во втором - создаются промежуточные кадры, 50% сдвиг и только по 1 новому кадру (если мы увеличиваем фпс в 2 раза).

  • Использовать собственные функции SVP для анализа движения, с последующей конвертацией векторов в формат MVTools2.
    Однако, несмотря на указание gpu:1 в настройках SVSuper и SVAnalyze, видеокарта не задействуется и ускорения нет, скорость не выше, чем в моем примере в начале поста без SVP вообще. Аппаратное ускорение активируется только при использовании полученных векторов в SVSmoothFps, но опять же, это функция не для компенсации движения, та же проблема, что в пункте 2.

Как видите, я изрядно запутался, прошу помощи.

Re: Компенсация движения силами SVP при обработке видео в Ависинте

Seedmanc
"обычный" MVTools2, который поддерживает встроенную многопоточность

это еще что за фигня?  hmm
"обычный" MVTools2 никакой встроенной многопоточности не имеет, как и параметра "mt"

3 (edited by Seedmanc 19-07-2014 18:35:23)

Re: Компенсация движения силами SVP при обработке видео в Ависинте

Ну вот я правда не знаю, у меня в папке плагинов лежит какой-то mvtools2.dll весом 992кб, в свойствах написано 2.6.0.5 версия, дата изменения 2012г. AvsPmod показывает в числе параметров mt, хотя и правда я не могу найти описания этого параметра в вики ависинта. Не помню уже, где я его взял, но многопоточность там работает, это факт.
К слову, не первый раз уже это замечаю, что к иным функциям отображаются параметры, описания которых я не могу найти на официальных ресурсах, однако параметры это рабочие. Те же cclip, tclip, center и tr в MFlow и MCompensate, например. Может быть я упускаю что-то и есть более подробные ресурсы с описанием новых функций, хотелось бы знать лучше.

Собственно, вот он, может быть его кто-нибудь "узнает".

Post's attachments

mvtools2.7z 254.14 kb, 437 downloads since 2014-07-19 

Re: Компенсация движения силами SVP при обработке видео в Ависинте

да, нашел, что это такое - 2.6.0.5, вижу исходники

странно что не могу найти обсуждение этого изделия на doom9  hmm

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

на первый взгляд там достаточно глубоко прикручена многопоточность, но сами алгоритмы оригинального MVTools он не трогал

поэтому я сильно не уверен, что такая многопоточность чем-то лучше (т.е. быстрее) простого подхода с Avisynth MT
но я не проверял smile

===
по сути вопроса:

1. gpu-ускорение от SVP тут никак не поможет, ускоренной версии MCompensate у нас нет
2. можно использовать SVAnalyse вместо MAnalyse, при прочих равных (*) SVAnalyse будет быстрее (не в разы, но на десятки процентов), после чего преобразовать вектора в формат для MVTools (спец. функция SVConvert)
3. если в SVAnalyse сделать параметры а-ля "точность поиска до 2-х пикселей" - то будет заметно быстрее

(*) "прочие равные" - параметры по-умолчанию для MAnalyse и SVAnalyse сильно разные. По-умолчанию SVAnalyse будет медленнее, т.к. использует более тяжелые настройки.

Re: Компенсация движения силами SVP при обработке видео в Ависинте

Cейчас проверил, MVTools от SVP вроде как и правда быстрее МТ-версии при запуске с 4 потоками (у меня 4 ядра), хотя МТ будто бы быстрее при комбинации включенного внутреннего МТ и внешнего setMTmode(2,2) с 2 потоками. Но это не очень удобно.

Подобрать конфигурацию SVAnalyzer/SVSuper так, чтобы это было быстрее и выглядело не хуже, чем MVTools мне так и не удалось. Какие настройки отвечают за "точность до 2х пикселей", pel=1 и full=false в SVSuper, так?

У меня были мысли так извратиться с функциями умножения фпс, чтобы заставить их работать, как компенсацию движения (т.е. создавать новые кадры на месте существующих, а не между), например, создавать несколько наборов новых кадров от применения SVSmoothFps к исходнику через SelectEven/SelectOdd, но в итоге приходится запускать очень много инстанций этой функции одновременно и скорость даже с ускорением выходит намного ниже. Не судьба, наверное.

Возникла еще пара вопросов по части комбинирования MVTools и SVP:
1) В варианте с вычислением векторов через SVP и конвертацией их в MVTools-формат меня смущает то, что приходится создавать super-клип два раза, для SVP и для MV. Выглядят они почти одинаково, нельзя ли как-то первый сконвертировать во второй и сэкономить время? Пока что попытка использования "чужого" суперклипа приводит к ошибке.
2) В измененном MVTools есть функция MSmoothFps, а в основном SVP - SVSmoothFPS, обе поддерживают ускорение, обе имеют набор разных режимов работы algo и т.д. Так в чем же суть? Для каких целей лучше одна, а для каких другая, не просто же так создавались почти дублирующие друг друга функции.

Re: Компенсация движения силами SVP при обработке видео в Ависинте

Seedmanc
хотя МТ будто бы быстрее при комбинации включенного внутреннего МТ и внешнего setMTmode(2,2) с 2 потоками

ну так включи 8 потоков в SetMTMode() wink

Какие настройки отвечают за "точность до 2х пикселей", pel=1 и full=false в SVSuper, так?

не, тут главное в main.search.distance=0 в SVAnalyse, ну и pel=1, конечно

смущает то, что приходится создавать super-клип два раза

если нет упора в память - то не стоит искать проблему в этом месте, её нет wink

В измененном MVTools есть функция MSmoothFps, а в основном SVP - SVSmoothFPS

вторая - перименованная первая, со временем обросшая еще всякими разными умениями