ОБРАБОТКА ОККЛЮЗИЙ ДЛЯ FRC C ПОМОЩЬЮ ГЛУБОКОГО ОБУЧЕНИЯ
FRC OCCLUSION PROCESSING WITH DEEP LEARNING

Область техники, к которой относится изобретение
Настоящее изобретение относится к обработке видео, и, более конкретно, к обработке окклюзий для FRC c помощью глубокого обучения.
Уровень техники
Преобразование частоты кадров (FRC) является проблемой временной интерполяции видеокадров для увеличения частоты кадров видео. FRC - это базовая технология для плавного воспроизведения видео обычного контента, такого как видео пользователя, фильмы или игровой процесс (геймплей). В настоящее время алгоритм FRC применяется во многих приложениях, в том числе мобильных. В технологии FRC ключевым компонентом для понимания перекрытия объектов является обработка окклюзий, которая позволяет правильно интерполировать кадры в закрытых/незакрытых областях видеокадров. Для пары кадров «окклюзия» - это область одного кадра (обычно относящаяся к объекту заднего плана), которая на другом кадре была закрыта объектом переднего плана.
В типовом примере блок обработки окклюзии (OcC) принимает данные оценки движения (ME) для 2-4 кадров, ближайших к интерполированной позиции, и подготавливает данные для интерполяции кадра с компенсацией движения (MCI). Блок MCI использует 2 ближайших кадра и данные интерполяции для создания интерполированного кадра.
Обычно к OcC предъявляются следующие требования: выявление окклюзий, скорость работы, устойчивость к шуму ME, корректная обработка границ кадра и объекта, возможность использования в мобильных устройствах и в реальном времени и малое энергопотребление. При этом имеется ряд факторов, отрицательно сказывающихся на производительности алгоритма OcC, таких как: ограничения производительности и мощности самого устройства, в котором применяется OcC, шумный алгоритм ME, сложные сцены, что в итоге может приводить к уменьшению времени работы батареи, к работе не в режиме реального времени, появлению ореола (halo, свечение, гало) у объектов в кадре и артефактов интерполяции.
В традиционных алгоритмах FRC OcC - это вручную созданный алгоритм, имеющий множество внутренних эмпирически установленных параметров и правил.
Например, в известном из уровня техники аналоге 1 (технология Samsung SuperSlowMotion, включающая в себя документы US 8861603 B2, US 8565309 B2, US 8175163 B2, “Key Requirements for High Quality Picture-Rate Conversion” Claus Nico Cordes, Gerard de Haan) используется следующая последовательность этапов для FRC: входное видео обрабатывается в блоке оценки движения (поблочно/попиксельно), затем выполняется вручную созданный алгоритм OcC (в основном поблочно), затем подготавливаются данные для компенсации движения (поблочно), после чего выполняется компенсация движения (поблочно/попиксельно) и выводится полученное в результате выходное видео. Данный аналог имеет определенные недостатки, такие как ореол вокруг объектов относительно заднего плана, неточная обработка границ кадра, невозможность использования ускорителя NPU (нейронного процессора).
В другом известном из уровня техники аналоге 2 (технология на базе CNN (сверточной нейронной сети), например, Olaf Ronneberger, Philipp Fischer, and Thomas Brox: U-Net: Convolutional Networks for Biomedical Image Segmentation) используется следующая последовательность этапов для FRC: входное видео обрабатывается в блоке вычисления оптического потока с помощью CNN (попиксельно), затем выполняется интерполяция оптического потока в заданную фазу с помощью CNN и вычисление карт видимости (попиксельно), после чего выполняется компенсация движения (MC) (попиксельно) и выводится полученное в результате выходное видео. Данный аналог имеет определенные недостатки, такие как большая сложность вычислений (<10 FPS (кадров в секунду) на GPU (графическом процессоре) класса 1080Ti) и то, что смещение по пикселям может искажать интерполированные изображения. В данном подходе и ME, и MC используют архитектуры обучения CNN с попиксельной обработкой. MC имеет дополнительный параметр для прогнозирования кадра в заданной фазе (0<t<1) между исходными кадрами. Поскольку CNN напрямую работает с полнопиксельными данными, вычислительная нагрузка очень высока, что требует высокопроизводительных настольных графических процессоров.
Сущность изобретения
С целью устранения по меньшей мере некоторых из вышеупомянутых недостатков предшествующего уровня техники, в настоящем изобретении предлагается отказаться от вышеуказанных подходов и перейти к варианту с глубоким обучением, с помощью которого можно обучить алгоритм OcC на предлагаемом синтетическом и естественном наборе данных FRC.
Согласно первому аспекту настоящего изобретения предложен способ преобразования частоты кадров входного видео, содержащий этапы, на которых:
выполняют оценку движения посредством формирования по меньшей мере одного поля движения по меньшей мере для одной пары кадров входного видео, причем поле движения содержит набор векторов движения для каждого блока одного опорного кадра входного видео, которые указывают в другой опорный кадр входного видео;
выполняют подготовку первых данных для заданной фазы интерполяции для каждого блока интерполируемого кадра, причем первые данные содержат по меньшей мере один параметр для заранее обученной OcC CNN (сверточной нейронной сети для исправления окклюзий), полученный на основе упомянутого по меньшей мере одного поля движения;
выполняют исправление окклюзий с помощью OcC CNN для каждого блока интерполируемого кадра посредством прогнозирования весовых коэффициентов, связанных с векторами движения, на основе подготовленных первых данных; и
выполняют интерполяцию с компенсацией движения для каждого блока и/или для каждого пикселя интерполируемого кадра посредством обработки данных от OcC CNN.
В одном из вариантов осуществления по меньшей мере одно поле движения по меньшей мере для одной пары кадров входного видео содержит по меньшей мере одно из поля движения вперед для текущей пары кадров, поля движения назад для текущей пары кадров, поля движения назад для предыдущей пары кадров и поля движения вперед для следующей пары кадров.
В одном из вариантов осуществления первые данные содержат проецированный вектор движения для каждого блока интерполируемого кадра для каждого из упомянутого по меньшей мере одного поля движения, причем проецированный вектор движения в текущем блоке в интерполируемом кадре является ближайшим вектором среди векторов поля движения для данной пары кадров, проходящим вблизи текущего блока.
В одном из вариантов осуществления первые данные содержат расстояние до спроецированного блока для каждого блока интерполируемого кадра для каждого из упомянутого по меньшей мере одного поля движения, причем расстояние до спроецированного блока указывает расстояние между центром текущего блока в интерполированном кадре и центром спроецированного блока.
В одном из вариантов осуществления первые данные содержат меру доверия для каждого блока интерполируемого кадра для каждого из упомянутого по меньшей мере одного поля движения, причем мера доверия характеризует сходство между блоком первого опорного кадра, из которого исходит рассматриваемый вектор движения, и соответствующим блоком второго опорного кадра, в который указывает рассматриваемый вектор движения.
В одном из вариантов осуществления первые данные содержат меру текcтурированности для каждого блока интерполируемого кадра для каждого из упомянутого по меньшей мере одного поля движения, причем мера текcтурированности показывает, насколько текущий блок в интерполируемом кадре отличен от равномерного фона.
В одном из вариантов осуществления первые данные содержат карту мер закрытия блоков для каждого блока интерполируемого кадра для поля движения вперед текущей пары кадров и поля движения назад текущей пары кадров, причем карта мер закрытия блоков показывает, сколько пикселей текущего блока в решетке интерполируемого кадра было закрыто всеми спроецированными блоками из опорного кадра для одного поля движения.
В одном из вариантов осуществления первые данные содержат расстояние до границы кадра для каждого блока интерполируемого кадра, причем расстояние до границы кадра показывает минимальное из расстояний от текущего блока в решетке интерполируемого кадра до края кадра в горизонтальном и вертикальном направлениях с размерностью в блоках.
В одном из вариантов осуществления способ дополнительно содержит этап, на котором:
обучают нейронную сеть на основе минимизации функции потерь при обработке синтетического набора данных, используемого для предварительного обучения, и естественного набора данных, используемого для тонкой настройки нейронной сети,
причем видео-последовательности из каждого набора данных предварительно прореживаются, и затем недостающие кадры интерполируются и сравниваются с исходными кадрами, изъятыми при прореживании для использования в качестве истинных данных,
причем функция потерь отражает разницу между фактическим интерполированным кадром и исходным кадром в виде действительного числа.
В одном из вариантов осуществления при обучении используют функцию потерь на инерцию кластеров, которая используется для предсказания двух векторов движения для каждого блока согласно гипотезе, в которой блок находится в области окклюзии и содержит как объект переднего плана, которому соответствует кластер векторов движения объекта переднего плана, так и объект заднего плана, которому соответствует кластер векторов движения объекта заднего плана.
В одном из вариантов осуществления при обучении используют функцию потерь на блочность, которая показывает степень присутствия артефактов блочности в интерполированном кадре.
В одном из вариантов осуществления выполняют исправление окклюзий с помощью OcC CNN для каждого блока интерполируемого кадра дополнительно посредством прогнозирования весовых коэффициентов, характеризующих тип окклюзии в данном блоке согласно каждой гипотезе движения, на основе подготовленных первых данных и оценки движения.
В одном из вариантов осуществления выполняют исправление окклюзий с помощью OcC CNN для каждого блока интерполируемого кадра дополнительно посредством прогнозирования весовых коэффициентов, характеризующих (i) степень доверия к значению надежности заданной гипотезы, вычисленному на основе опорных кадров, и (ii) корректирующий коэффициент для упомянутого значения надежности гипотезы.
В одном из вариантов осуществления способ дополнительно содержит этап, на котором:
выполняют подготовку вторых данных для каждого блока интерполируемого кадра, причем вторые данные предназначены для компенсации движения, причем подготовка вторых данных содержит вычисление по меньшей мере одной гипотезы движения на основе векторов движения для блоков в локальной окрестности текущего интерполируемого блока.
В одном из вариантов осуществления компенсация движения содержит
формирование по меньшей мере одного кадра-предиктора для каждой гипотезы движения на основе соседних опорных видеокадров с использованием соответствующих полученных векторов движения и спрогнозированных весовых коэффициентов, и
определение интерполированного кадра на основе упомянутого по меньшей мере одного кадра-предиктора.
Согласно второму аспекту настоящего изобретения предложено устройство для преобразования частоты кадров входного видео, содержащее по меньшей мере один процессор и память, связанную с по меньшей мере одним процессором и содержащую инструкции, которые при исполнении по меньшей мере одним процессором предписывают по меньшей мере одному процессору выполнять этапы способа по первому аспекту.
Технический результат
Настоящее изобретение обеспечивает значительное уменьшение ореола, вызванного окклюзией, возникшей в результате FRC, увеличение PSNR (пикового отношения сигнал-шум), уменьшенное количество вычислений (сопоставимое с вручную созданным алгоритмом OcC, намного более низкое, чем FRC с попиксельной CNN), повышение точности обработки OcC за счет точной настройки для конкретного сценария путем выбора наборов данных для конкретного случая использования.
Краткое описание чертежей
Далее настоящее изобретение будет описано более подробно со ссылкой на прилагаемые чертежи, на которых:
На Фиг. 1 показана последовательность операций для способа 100 выполнения FRC согласно настоящему изобретению.
На Фиг. 2 показаны векторы полей движения для разных пар кадров.
На Фиг. 3 показано создание проецированного вектора поля движения вперед для текущей пары кадров.
На Фиг. 4 показано формирование карты мер закрытия блоков.
На Фиг. 5 показан кадр, в котором блокам у границы кадра присвоены соответствующие расстояния.
На Фиг. 6 схематически изображен пример возможной архитектуры сверточной нейронной сети.
На Фиг. 7 показан пример синтетического кадра.
На Фиг. 8 показан пример сформулированного вектора движения для окрестности 3×3.
На Фиг. 9 показаны примеры сокращенных схем окрестностей блока для формулирования вектора движения.
На Фиг. 10 показана компенсация движения на основе 2 гипотез.
На Фиг. 11-14 показано сравнение интерполированных кадров, полученных с использованием традиционного подхода и с использованием настоящего изобретения.
На Фиг. 15-16 показаны результаты сравнения PSNR для интерполированных кадров, полученных с использованием традиционного подхода и с использованием настоящего изобретения.
Следует понимать, что фигуры могут быть представлены схематично и не в масштабе и предназначены, главным образом, для улучшения понимания настоящего изобретения.
Подробное описание
На Фиг. 1 показана последовательность операций для способа 100 выполнения FRC согласно настоящему изобретению. Так, сначала выполняется оценка 102 движения (поблочно/попиксельно) с использованием входного видео 101, затем выполняется поблочная подготовка 103 данных для OcC CNN (сверточной нейронной сети для исправления окклюзий) для заданной фазы α интерполяции (в основном поблочно), затем производится исправление 104 окклюзий с помощью OcC CNN (поблочно), затем подготавливаются 105 данные для компенсации движения (поблочно), после чего выполняется компенсация 106 движения (поблочно/попиксельно) и выводится полученное в результате выходное видео 107.
Под поблочной обработкой имеется в виду то, что изображение, состоящее из пикселей, разбивается на прямоугольные или квадратные блоки равного размера. Например, кадр размером 720×1280 пикселей разбивается на блоки размером 8×8 пикселей каждый, в итоге получается кадр размером 90×160 блоков. При этом значение какой-либо переменной, связанной с отдельно взятым блоком, принимается одинаковым для всех пикселей внутри этого блока. Такой подход позволяет обрабатывать информацию не с каждого пикселя, а только с каждого блока, что приводит к значительному уменьшению объема обрабатываемых данных по сравнению с полностью попиксельной обработкой.
Входное видео 101, содержащее исходные (опорные) кадры, может поступать, например, с камеры, процессора изображений, видеодекодера, интернета. Выходное видео 107 содержит исходные кадры и интерполированные кадры, полученные с помощью FRC. Выходное видео может поступать, например, на видеокодер для получения файла с повышенным FPS или на экран для воспроизведения видео с повышенным FPS.
Если имеется пара опорных кадров с номерами (либо моментами времени) N и (N+1), то можно интерполировать любое количество кадров между этой парой кадров. Например, если необходимо увеличить частоту кадров вдвое, то необходимо интерполировать один кадр в момент времени N+0.5, если вчетверо, то в моменты времени N+0.25, N+0.5 и N+0.75. 0.25, 0.5 и 0.75 - это называется фазой (α) интерполированного кадра (то есть фазой в прямом смысле, если принять период опорных кадров за единицу). В настоящем изобретении описывается обучение сети только для одной конкретной фазы (0.5). Следует понимать, что для интерполяции каждой фазы необходимо иметь сеть, натренированную (обученную) для данной конкретной фазы. Можно сгенерировать входы для сети, которые будут содержать информацию для всех необходимых фаз (соответствующим образом должно быть увеличено и количество выходов).
В настоящем изобретении предлагается выполнять этап OcC CNN с использованием только поблочных данных, использовать входные данные для OcC CNN с небольшим полем восприятия, а также использовать для высококачественного MCI выходные данные OcC, полученные с помощью OcC CNN.
Оценка движения (102)
На этапе 102 в блок оценки движения поступает пара последовательных опорных (ключевых) кадров. Предлагаемый алгоритм оценки движения (ME) формирует вектор движения для каждого блока первого опорного кадра, который указывает во второй опорный кадр.
Вектор движения (MV) - это смещение (две координаты) между блоками текущего и другого кадра. Это смещение может иметь как пиксельную точность, так и дробно-пиксельную точность. Полем движения является набор векторов движения, где каждый из векторов движения поставлен в соответствие либо каждому пикселю (dense motion field - плотное поле движения), либо блоку пикселей (обычно квадрат или прямоугольник рядом лежащих пикселей) текущего кадра. В настоящем изобретении используются векторы движения, принадлежащие блокам, и соответственно используются блочные поля движения. Например, если кадр размером 720×1280 пикселей разбит на блоки размером 8×8 пикселей каждый, то размер кадра составляет 90×160 блоков, и именно столько векторов движения имеет поле движения для такого кадра.
Векторы движения указывают в какой-то другой кадр. Поле движения всегда подразумевает наличие двух кадров - текущего и какого-то другого (например, следующего по времени или предыдущего по времени). Если кадры, снятые камерой, пронумерованы по возрастанию, то для пары кадров N и N+1 полем движения вперед будет набор векторов движения для текущего кадра N, которые указывают в другой кадр N+1 (можно скомпенсировать кадр N простым алгоритмом компенсации движения). Полем движения назад будет набор векторов движения для текущего кадра N+1, которые указывают в другой кадр N (можно скомпенсировать кадр N+1 простым алгоритмом компенсации движения). В настоящем изобретении оба этих поля движения могут являться результатом работы алгоритма оценки движения между кадрами N и N+1.
Если имеется пара опорных кадров в моменты времени N и N+1, и необходимо интерполировать кадр в момент времени N+α (например, N+0.5), то пара опорных кадров N и N+1 называется текущей, пара N-1 и N называется предыдущей, пара N+1 и N+2 называется следующей. Соответственно называются и поля движения между кадрами каждой пары.
Например, на Фиг. 2 показана часть столбца из блоков в кадре, условно разделенная строками (регулярная решетка), для каждого из кадров N-1, N, N+1 и N+2 входной видеопоследовательности, а также для предполагаемого интерполированного кадра N+α. Векторы движения характеризуют смещение блоков между кадрами в виде двух координат: по горизонтали и по вертикали. Для удобства понимания на Фиг. 2 показан только один вектор движения для каждого кадра, тогда как такие векторы оцениваются для каждого блока в кадре. Набор векторов движения для кадра составляет поле движения. При этом указанные выше поля движения вперед и назад для пары кадров N и N+1 являются полями движения вперед и назад для текущей пары кадров. В настоящем изобретении могут использоваться поля движения вперед и назад для каждого из кадров N и N+1. Следовательно, выходными данными этапа оценки движения могут дополнительно являться поле движения назад для предыдущей пары кадров N-1 и N и поле движения вперед для следующей пары кадров N+1 и N+2.
В предпочтительном варианте используется L (число полей) = 1 поле движения (например, поле движения назад для текущей пары кадров). В других вариантах осуществления L может составлять, например, 2 и более.
Подготовка данных для OcC CNN для заданной фазы интерполяции (103)
Традиционные нейронные сети для исправления окклюзий используют данные с полным разрешением (то есть учитывается каждый пиксель), что приводит к очень высокой вычислительной сложности. Чтобы уменьшить вычислительные затраты (количество операций), в настоящем изобретении предлагается извлекать признаки из изображений поблочно и использовать их в качестве входных данных CNN. Однако простой переход на поблочный режим с передачей данных непосредственно и только из блока оценки движения в нейронную сеть и далее в блок компенсации движения может привести к возникновению ошибок вплоть до возможного ухудшения качества изображения или может оказаться недостаточным для снижения вычислительных затрат.
Например, несмотря на поблочную обработку в блоке оценки движения, простая передача его выходных данных (набора векторов-кандидатов) в нейронную сеть может потребовать наличия нейронной сети с большим полем восприятия, которая учитывала бы в своей работе все возможное или относительно большое пространство в кадре в процессе выявления того, на какие блоки может оказать влияние тот или иной вектор движения, особенно если имеются достаточно большие векторы. Полем восприятия в сверточных нейронных сетях называется область в пространстве входов нейронной сети, которая может оказать влияние на конкретную единицу в пространстве выходов. Например, пусть есть сверточная нейронная сеть, преобразующая входной тензор размером N*N в выходной тензор того же размера. Если сверточная сеть небольшая, то значение элемента (0, 0) входного тензора никак не влияет на значение элемента (N, N) выходного тензора. Таким образом, элемент входного тензора (0, 0) находится за пределами поля восприятия для элемента выходного тензора (N, N). Уменьшение поля восприятия приведет к уменьшению количества или размера сверток в нейронной сети и, тем самым, к уменьшению количества операций.
Соответственно, в целях уменьшения вычислительных затрат, повышения точности работы OcC CNN и блока компенсации движения и для повышения качества изображения желательно сообщать нейронной сети (и в дальнейшем блоку компенсации движения) еще ряд параметров в дополнение к вышеуказанным результатам работы алгоритма оценки движения.
Далее будет описан этап 103, на котором выполняется подготовка данных для OcC CNN для заданной фазы интерполяции.
В таблицу 1 сведены параметры, которые могут содержаться в поблочных выходных данных этапа 103 в варианте осуществления настоящего изобретения.
Таблица 1
<b>Название</b>
<b>Описание</b>
<b>Повышение качества</b>
А. Проецированный MV
Вектор движения, спроецированный из опорного кадра в интерполированный
-
Б. Расстояние до спроецированного блока
Расстояние, характеризующее проецированный вектор движения
+0,034 дБ
В. Мера доверия
Показатель точности совпадения выбранного блока в первом опорном кадре с выбранным блоком во втором опорном кадре
+0,030 дБ
Г. Текстура
Мера текстурированности исходного блока для проецированного MV
+0,030 дБ
Д. Мера закрытия блока
Карта мер закрытия блоков в интерполированном положении
+0,014 дБ
Е. Расстояние до границы кадра
Расстояние до границы кадра
+0,322 дБ
Правый столбец в Таблице 1 показывает, как изменяется качество изображения в интерполированном кадре за счет применения каждого из указанных параметров. Далее содержимое Таблицы 1 будет описано более подробно.
А. Проецированный MV
.
Предлагаемый алгоритм оценки движения, описанный выше на этапе 102, формирует вектор для каждого блока первого опорного кадра, который указывает во второй опорный кадр. Блоки в первом опорном кадре располагаются на регулярной решетке. Например, на Фиг. 3, по аналогии с Фиг. 2, показана часть столбца из блоков в кадре, условно разделенная строками (регулярная решетка), для каждого из кадров N (обозначен как кадр A) и N+1 (обозначен как кадр B) входной видеопоследовательности, а также для предполагаемого интерполированного кадра N+α (например, N+0.5). Каждый из 4 соседних блоков в кадре A имеет соответствующий ему оцененный вектор движения, который указывает, куда сместился этот блок в кадре B относительно кадра A. Векторы для остальных блоков не показаны для упрощения понимания и во избежание загромождения чертежа.
Чтобы уменьшить поле восприятия нейронной сети, необходимо получить векторы на решетке интерполируемого кадра N+α. Для этого, например, из поля движения вперед текущей пары кадров, необходимо взять блок этого поля и переместить (спроецировать) его по вектору движения, оцененного для этого блока, в плоскость интерполированного кадра. При этом часто могут возникать ситуации, когда блок, перемещаемый из опорного кадра соответствующим вектором движения, не будет попадать блок в блок в регулярную решетку блоков интерполируемого кадра, так как векторы имеют пиксельное разрешение, то есть спроецированный блок будет частично накрывать 2 или 4 блока регулярной решетки интерполированного кадра.
Однако для алгоритма компенсации движения, который будет более подробно описан далее на этапе 106, требуются векторы, которые принадлежат блокам, расположенным регулярно на решетке интерполируемого кадра. Для решения этой задачи предлагается запоминать в каждом накрытом блоке интерполируемого кадра расстояние от начала (пиксельные координаты левого верхнего угла) спроецированного блока до начала накрытого блока, и в конце концов (когда будут спроецированы все блоки) текущему рассматриваемому блоку в решетке интерполируемого кадра будет приписан тот вектор, спроецированный блок от которого лежит ближе всего к этому текущему рассматриваемому блоку. Такой вектор предлагается обозначить как «проецированный вектор движения» (проецированный MV). Соответственно, проецированный MV в текущем блоке в интерполированном кадре является ближайшим вектором, проходящим вблизи текущего блока. Таким образом, набор проецированных MV составит проецированное поле движения в решетке блоков интерполированного кадра.
Использование проецированного MV позволяет использовать CNN со значительно уменьшенным полем восприятия, потому что увеличенное количество обработанных MV не приводит к увеличению поля восприятия CNN. Таким образом, уменьшается общее количество операций в способе FRC.
Б. Расстояние до спроецированного блока.
Расстояние до спроецированного блока является расстоянием между центром текущего блока в интерполированном кадре и центром спроецированного блока для рассматриваемого вектора движения. Эта информация также полезна для понимания того, является ли прогнозируемый MV надежным. Надежные векторы имеют небольшое расстояние до спроецированного блока.
В. Мера доверия.
Мера доверия является характеристикой сходства между блоком кадра A и блоком кадра B (например, суммой абсолютных разностей (SAD)). Иными словами, это число, характеризующее точность найденного вектора. Эта информация помогает понять, насколько надежен вектор движения между кадрами A и B.
Г. Текстура.
Текстура (или мера текcтурированности) показывает, насколько блок изображения имеет выраженную текстуру (то есть отличен от равномерного фона). Мера текстурированности вычисляется для того блока, где начинался проецированный вектор. Она может вычисляться как стандартное отклонение уровней яркости локального блока изображения в блоке кадра A (это соответствует локальной мощности сигнала картинки). Эта информация полезна, если необходимо понять, является ли мера доверия надежной или нет (в качестве грубой оценки или нормализации меры доверия).
Д. Мера закрытия блока.
Мера закрытия блока показывает, сколько пикселей текущего блока в решетке интерполированного кадра было «закрыто» всеми спроецированными блоками из опорного кадра для одного поля движения. Для данного параметра не имеет значения, насколько близко к началу блока в решетке интерполированного кадра был спроецирован блок из опорного кадра: если был накрыт хотя бы один пиксель, то он будет учтен. При этом используются только 2 поля, векторы которых «проходят» через интерполированный кадр - поле движения вперед текущей пары кадров и поле движения назад текущей пары кадров. Отдельно считается карта мер закрытия блоков для поля движения вперед текущей пары кадров и отдельно для поля движения назад текущей пары кадров.
На Фиг. 4 показана процедура создания карты мер закрытия блоков. Для выбранной временной позиции (фазы) α интерполяции оцененные векторы движения, исходящие из опорного кадра, умножаются на нормализованное временное расстояние до интерполированной временной позиции α (укорачиваются). Далее определяются позиции всех исходных блоков из опорного кадра, перемещенных на соответствующие им полученные нормализованные векторы движения, на интерполированном кадре. Затем каждый блок в регулярной решетке интерполированного кадра маркируется в соответствии с тем, сколько из его пикселей были закрыты хотя бы одним из перемещенных исходных блоков (то есть каждому блоку интерполированного кадра присваивается количество закрытых пикселей). Например, для блоков 8х8 это будет значение от 0 до 64. Соответственно, строится карта мер закрытия блоков.
Полученная карта мер закрытия блоков является некоторой оценкой, интерполяцией карты окклюзий. Эта информация помогает лучше понять, где находится окклюзия и каков тип окклюзии, что помогает уменьшить эффект ореола вокруг объектов.
Е. Расстояние до границы кадра.
В целях повышения качества обработки кадров, особенно в области границ кадра, предлагается помечать блоки рядом с границей кадра, так чтобы CNN могла их легко определять. Для этого предлагается использовать параметр, характеризующий расстояние до границы кадра, который показывает расстояние от текущего блока в решетке интерполируемого кадра до края кадра в горизонтальном и вертикальном направлениях (в блоках). В частности, в качестве этого параметра может выбираться минимальное из четырех расстояний до каждого края кадра. Кроме того, на данное расстояние может накладываться ограничение сверху в зависимости от поля восприятия.
В примере на Фиг. 5 показаны расстояния до границы кадра для HD-кадра 720х1280, содержащего 90×160 блоков, каждый из которых содержит 8×8 пикселей. Блок на краю (первый от края) имеет значение 1, следующий за ним блок вглубь кадра имеет значение 2 и т.д. до ограничения (например, до 8, как показано на Фиг. 5).
Использование данных о расстоянии до границы кадра обеспечивает повышенное качество интерполированных кадров в ближних к границам областях по сравнению с другими подходами CNN и созданными вручную алгоритмами OcC.
Пример
Таким образом, в примерном варианте осуществления, если на этапе 102 оценки движения было сформировано 4 поля движения, а на этапе 103 подготовки данных для OcC CNN использовались все вышеописанные параметры, то выходными данными этапа 103 будут являться следующие данные: параметры А (проецированные векторы движения, которые характеризуются двумя числами в каждом блоке (координатами)), Б, В, Г для каждого вектора каждого поля движения (то есть 4 раза), параметры Д для каждого вектора полей движения вперед и назад текущей пары кадров (то есть 2 раза), а также параметр Е (1 раз). Соответственно, получается (А+Б+В+Г)*4+Д*2+Е*1 = (2+1+1+1)*4+1*2+1*1=23 матрицы чисел в качестве результата работы этапа 103.
Другие варианты осуществления
В приведенном выше примере для удобства понимания показано, что используются все параметры А-Е. Однако возможны и другие комбинации параметров. Авторами нстоящего изобретения был проведен ряд экспериментов, в ходе которых было исследовано влияние отсутствия каждого из параметров на показатель PSNR. В таблице 1, приведенной в начале данного раздела, в правом столбце показаны результаты этих экспериментов. Соответственно, при необходимости оптимизации алгоритма для конкретного применения при поиске компромисса между производительностью вычислений и качеством изображений имеется возможность убирать некоторые параметры. При этом необходимо отметить, что параметр А является обязательным для достижения целей настоящего изобретения, тогда как параметры Б-Е являются опциональными. Таким образом, в самом простом варианте осуществления на вход нейронной сети подаются только данные о параметре А, вычисленные на этапе 103.
Резюмируя вышесказанное, можно отметить, что за счет предварительной подготовки входных данных уменьшается минимально необходимое поле восприятия и количество слоев CNN (поле восприятия CNN и количество слоев не зависят от входных данных), а также уменьшается ореол в интерполированном кадре. В результате обеспечивается как повышенное качество интерполяции благодаря диверсифицированным входным данным, так и возможность выполнения такого способа FRC в реальном времени на мобильном устройстве.
Исправление окклюзий с помощью OcC CNN (104)
Далее будет описан этап 104, на котором выполняется исправление окклюзий с помощью нейронной сети. Исправление окклюзий в общем случае заключается в прогнозировании весовых коэффициентов, которые связаны с выявлением и описанием окклюзий для каждого блока и которые в дальнейшем будут использоваться в предложенном способе FRC в целях компенсации движения, чтобы получить интерполированный кадр.
А именно, OcC CNN может спрогнозировать следующие весовые коэффициенты для каждого блока: (1) веса для входных проецированных векторов движения в локальной окрестности текущего интерполированного блока, (2) веса , характеризующие тип окклюзии в данном блоке согласно каждой гипотезе движения, (3) веса , характеризующие степень доверия к значению надежности заданной гипотезы, вычисленному на основе опорных кадров, и (4) корректирующие коэффициенты для каждого значения надежности гипотезы.
Далее для удобства понимания сразу будет описан конкретный пример, однако следует отметить, что указанные принципы применимы и для других подобных реализаций.
В настоящем изобретении предлагается упрощенная архитектура, подходящая для задачи OcC CNN (Фиг. 6). Для работы в реальном времени необходимо, чтобы количество сверточных слоев было небольшим, а большая часть сверток должна разделяться по глубине.
На Фиг. 6 схематически изображен пример возможной архитектуры сверточной нейронной сети, которая достигает следующих целей: а) детектирование и коррекция окклюзий и б) иметь сравнительно малую вычислительную сложность. Принцип работы предложенной нейронной сети в целом схож с принципом работы упомянутой выше сети U-Net с той разницей, что в настоящем изобретении выполняется поблочная обработка и применяется набор параметров с подготовительного этапа 103.
OcC CNN получает на входе входной массив данных (обозначен как 1.1) с числом каналов в массиве данных, равным 23 (обозначено как 2.1) и пространственным размером массива данных 90х160 (обозначен как 2.2). В отношении входного массива данных выполняется последовательное применение свертки и функции линейной ректификации (например, ReLU) (обозначено как 3), в результате чего число каналов в массиве увеличивается до 96. Затем над полученным массивом выполняется последовательное применение разделенной по глубине свертки и функции линейной ректификации (например, ReLU) (обозначено как 4). Таким образом, получается преобразованный массив данных (обозначен как 1) с числом каналов 96 и пространственным размером 90х160.
К полученному преобразованному массиву 1 применяется операция “max pooling” (обозначена как 5), уменьшающая пространственный размер массива данных в 2 раза по каждой координате, в результате чего пространственный размер становится равным 45х80. После этого над полученным массивом дважды выполняется операция 4, в результате которой число каналов возрастает до 192. Далее выполняется последовательное применение билинейной интерполяции и разделенной по глубине свертки (обозначено как 6). Таким образом, получается интерполированный массив данных с числом каналов 96 и пространственным размером 90х160.
Затем в отношении интерполированного массива и в отношении преобразованного массива 1 выполняется операция конкатенации двух массивов данных (обозначена как 7), в результате которой получается конкатенированный массив с числом каналов 192 и пространственным размером 90х160. После этого над полученным конкатенированным массивом дважды выполняется операция 4, в результате которой число каналов уменьшается до 96. Далее полученный массив подвергается операции 3, в результате которой число каналов уменьшается до 78. К полученному массиву применяется сигмоидальная функция, итогом работы которой является выходной массив данных (обозначен как 1.2) с числом каналов 78 и пространственным размером 90х160.
Таким образом, в примерном варианте осуществления, в качестве результата работы этапа 104 будут получены 78 чисел для каждого из блоков в интерполированном кадре. Эти числа также могут называться весами (весовыми коэффициентами).
Такую OcC CNN можно применять в реальном времени на мобильном устройстве.
Обучение OcC CNN
Для обучения CNN предлагается использовать синтетические (искусственные) и естественные наборы данных. Синтетический набор данных используется для предварительного обучения CNN. Он состоит из текстурированных задних планов и передних планов, движущихся относительно друг друга (например, 9600 образцов). Пример синтетического кадра показан на Фиг. 7. Естественный набор данных используется для тонкой настройки CNN. Он состоит из различных видеофильмов, снятых на камеру целевого устройства (например, 21819 образцов).
При обучении для преобразования с повышением частоты кадров в 2 раза (x2) для каждого видео в наборе данных нечетные кадры удаляются и используются в качестве истинных данных (ground truth) для сравнения с интерполированным кадром.
Процесс обучения нейронной сети сводится к минимизации функции потерь на заданном наборе данных. Функция потерь (или функция ошибок) - это функция, отражающая разницу между фактическим выходом модели (интерполированным кадром) и истинным выходом модели (настоящим кадром) в виде действительного числа. Чем больше это число, тем больше разница. Обучение нейронной сети может происходить, например, с помощью метода стохастического градиентного спуска (SGD). В этом случае весь набор данных разделяется на части небольшого размера (так называемые батчи). После этого осуществляется один шаг градиентного спуска (gradient descent) последовательно на каждом батче набора данных. Такой процесс может повторяться много раз на всем наборе данных. Каждая итерация по набору данных называется эпохой. Необходимо совершить N эпох на заданном наборе данных для обучения модели. Скорость обучения, например, в методе стохастического градиентного спуска - это коэффициент пропорциональности между значением градиента и величиной шага градиентного спуска.
Пример обучения показан далее в таблице 2.
Таблица 2
Этап обучения
1
2
3
4
Набор данных
Синтетический
Синтетический
Естественный
Естественный
Число эпох
64
64
32
32
Примененная функция потерь
L1инерция кластеров
L1
L1инерция кластеров
L1блочность
Оптимизация AdamСкорость обучения
10e-4постоянная
10e-4постоянная
10e-4постоянная
10e-4уменьшающаяся
В предпочтительном варианте осуществления настоящего изобретения для обучения CNN используется типовая функция потерь L1 для сравнения интерполированного кадра с истинными данными.
где - арифметическое среднее по нижним индексам
- значение пикселя с номером в интерполированном изображении
- значение пикселя с номером в истинных данных
Дополнительно могут использоваться новые функции потерь:
- функция потерь на инерцию кластеров (Cluster Inertia) получена вследствие применения вручную созданного алгоритма. Она используется, чтобы заставить CNN использовать гипотезу с 2 движениями.
Более подробно, в одной из возможных реализаций настоящего алгоритма используется две гипотезы движения. Таким образом, CNN должна предсказывать два вектора движения для каждого блока (в вышеуказанном примере, чтобы получить один вектор, CNN взвешивает 36 векторов-кандидатов). Предполагается, что блок на границе области окклюзии может содержать как объект переднего, так и заднего плана. Тогда векторы движения, являющиеся кандидатами для этого блока (36 векторов), могут разбиться на два кластера: кластер векторов движения объекта заднего плана и кластер векторов движения объекта переднего плана. Каждый из этих кластеров образован из подмножества 36 векторов-кандидатов. Функция потерь Cluster Inertia заставляет CNN предпочитать предсказывать два вектора так, чтобы они принадлежали разным кластерам. В данном примере за счет этого происходит повышение PSNR на 0,038 дБ.
Пример расчета функции потерь на инерцию кластеров представлен ниже:
0
1
Cluster_inertia=log(1+Dist_in_cluster+Dist_in_cluster ) - log(1+Dist_between_clusters)
где
||...|| - норма
l, m
l, m
- набор векторов-кандидатов в блоке с координатами (например, составляет 36 проецированных векторов для окрестности блока  размером 3х3 из каждого из 4х проецированных полей движения)
l, m
и - прогнозируемые векторы в блоке с координатами (они рассчитываются в этой функции потерь так же, как на описанном ниже этапе 105, с помощью 72 выходных весов сети)
0
- вероятность принадлежности вектора к кластеру cluster (эта вероятность - внутренний параметр сети, который высчитывается самой сетью и не используется нигде, кроме этой функции потерь)
Dist_in_cluster и Dist_between_clusters - это характерное растояние внутри кластера и между двумя кластерами.
- функция потерь на блочность (Blockiness) используется для уменьшения артефактов блочности в интерполированном кадре. В данном примере за счет этого происходит повышение PSNR на 0,014 дБ.
Пример расчета функции потерь на блочность представлен ниже:
Blockiness = (Blockiness_h+Blockiness_v)/2
где
H, W - высота и ширина изображения в пикселях соответственно
bs - размер блока в пикселях
При этом счет номеров блоков и пикселей при вычислении данной функции потерь начинается с 1.
Соответственно, использование синтетического набора данных дает в данном примере повышение PSNR в сумме на 0,053 дБ. В результате обеспечивается общее повышение качества, уменьшение артефактов блочности, улучшение границ объектов.
Подготовка данных для компенсации движения (105)
Как указывалось выше, вследствие перехода на поблочную обработку кадров в общем случае может потребоваться сообщать блоку компенсации движения еще дополнительные данные помимо непосредственных результатов работы алгоритма коррекции окклюзий.
Далее описывается, как на этапе 105 подготавливаются данные для компенсации движения (MC).
В настоящем изобретении в алгоритме FRC каждый выходной блок OcC CNN содержит M * L * K весов. Эти веса используются для вычисления M векторов движения (M > 0 - число гипотез движения) в качестве средневзвешенного значения L * K векторов движения из входных проецированных векторов движения, где K (например, K=9=3×3 соседних блоков) - количество блоков в локальной окрестности текущего интерполированного блока. Группа весов L * K нормируется, чтобы иметь сумму 1. В варианте осуществления с повышенным качеством предлагается использовать M=2, в общем случае M > = 1. Этот подход дает CNN возможность исправлять векторы движения, но они должны иметься в многообразии, образованном выпуклой оболочкой вышеуказанных векторов движения.
На Фиг. 8 показан пример для L=1 и K=9. Для каждого из текущего блока интерполированного кадра и окружающих его 8 блоков имеются соответствующие им векторы движения (векторы-кандидаты). 7 из этих векторов являются одинаковыми, другие 2 вектора отличаются. Соответственно, имеется 3 различных вектора движения. Сформулированный вектор является взвешенной суммой (или выпуклой комбинацией) этих трех векторов. Кроме того, сумма всех весов должна равняться единице. Результирующий вектор может указывать в любую точку внутри (и на границе) выпуклой оболочки трех векторов (например, в вышеуказанном примерном варианте осуществления на этапе 105 формулируемый вектор может не только совпадать с одним из 36 векторов-кандидатов, но может быть любым вектором внутри выпуклой оболочки 36 векторов-кандидатов). Сформулированный вектор образует гипотезу движения.
Соответственно, в другом примерном варианте осуществления, в котором M=2 гипотезы движения, L=4 поля движения и K=9 блоков, на этапе 105 для каждого блока интерполированного кадра в качестве входных данных необходимо иметь M*L*K=2*4*9=72 веса, характеризующие для каждой из 2 гипотез по 36 векторов движения (то есть по 9 векторов движения в окрестности текущего блока в каждом из 4 проецированных полей движения). В упоминавшемся выше на этапе 104 примере именно для такого варианта осуществления в результате было получено 78 весов. Из них 72 веса используются на этапе 105. Сумма произведений для первых 36 векторов (в частности, 36 векторов-кандидатов умножаются на 36 весов, предсказанных непосредственно CNN, и затем складываются, т.е. делается взвешенная сумма) даст в результате сформулированный вектор движения для первой гипотезы, а сумма произведений для вторых 36 векторов даст в результате другой сформулированный вектор движения для второй гипотезы. То есть сформулированный вектор зависит не только от векторов кандидатов, но и весов, предсказанных сетью.
Этот подход к формулированию вектора движения позволяет OcC CNN генерировать векторы, которые отличаются от выходных данных этапа 102 оценки движения. Это позволяет прогнозировать нелинейные движения, что приводит к более плавному видео и более высокому PSNR. OcC CNN на этапе 104 может исправить вектор движения, если были ошибки на этапе оценки движения.
Тот факт, что вектор должен находиться в заданном многообразии, облегчает обучение сети и позволяет достичь высокого качества интерполированного изображения. Используя разные схемы, можно варьировать количество вычислений, необходимых для формулирования вектора движения.
Например, чтобы сократить вычисления без существенного снижения качества, можно использовать схемы «крест» или «x» для формулирования выходных векторов (см. Фиг. 9).
Следует отметить, что в предпочтительном варианте осуществления используется режим M=1, L=1, K=1, поэтому CNN не нужно генерировать веса, отличные от MIX (пояснено далее).
Компенсация движения (106)
Далее будет описан этап 106, на котором выполняется MCI (интерполяция кадра с компенсацией движения).
Постобработанный на этапе 105 выход OcC CNN позволяет далее на этапе 106 интерполировать кадр во временной позиции α, определенной как расстояние во времени от предыдущего кадра до времени интерполированного кадра в единицах расстояния во времени входных видеокадров (то есть α=1 - это временная позиция следующего исходного кадра от предыдущего кадра), при этом входные данные MCI связаны с регулярной решеткой блоков.
Сначала на этапе 106 компенсации движения создается M кадров-предикторов, созданных на основе соседних исходных видеокадров с использованием соответствующих M сформулированных векторов движения, полученных на этапе 105, и весов, полученных на этапе 104.
Каждый кадр-предиктор использует одну гипотезу движения
=
i
где индекс  соответствует номеру гипотезы
- координаты пикселей
является фазой интерполяции
i
- веса, спрогнозированные непосредственно нейронной сетью CNN на этапе 104 и характеризующие тип окклюзии в заданном блоке (например, открытие, закрытие и т.д.) согласно гипотезе
- сами гипотезы движения (сформулированные векторы), полученные на этапе 105 с использованием выходных данных CNN.
Выходные данные CNN являются поблочными, поэтому нужно преобразовать их в пиксельное разрешение. Для гипотез движения предлагается использовать интерполяцию с учетом ближайших соседних пикселей, для весов используется билинейная интерполяция.
Предыдущий и текущий соседние исходные кадры взвешиваются в соответствии с для получения каждого кадра-предиктора (например, если равен нулю, кадры-предикторы содержат только текущий соседний исходный кадр). Для гипотезы с одним движением кадр-предиктор становится интерполированным кадром. Если же используется две гипотезы движения, то необходимо взвесить кадры-предикторы, чтобы получить интерполированный кадр.
В примере на Фиг. 10 показана компенсация движения на основе 2 гипотез. Объекты переднего плана перемещаются в одном направлении, объекты заднего плана перемещаются в другом направлении. Нейронная сеть предоставляет 2 гипотезы относительно того, как перемещаются объекты в области окклюзии, которые открываются на заднем плане вследствие перемещения относительно него переднего плана.
Для получения интерполированного кадра на основе взвешивания кадров-предикторов , связанных с M сформулированными векторами движения, на этапе 106 MCI вычисляется средневзвешенное значение с использованием следующего выражения:
Здесь - это окончательные веса, с которыми взвешиваются кадры-предикторы. В традиционном подходе они могли бы рассчитываться с использованием лишь весов , которые основаны на попиксельной SAD, рассчитанной между предыдущим исходным кадром , изображенным на фиг. 10, и текущим исходным кадром .
- это монотонная функция от SAD (большее значение SAD соответствует меньшему значению WSAD), которая характеризует надежность гипотезы и, например, может вычисляться следующим образом:
При этом SAD, например, может вычисляться следующим образом:
Однако в областях окклюзий такие веса ненадежны. Поэтому для расчета окончательных весов необходимо в дополнение к учитывать еще два значения, предсказанные сетью CNN (то есть являющиеся ее выходными данными): и .
- это степень доверия к значению WSAD в отношении того, насколько надежным может быть его использование для смешивания двух кадров-предикторов. Предсказывается непосредственно CNN. Для ее преобразования в пиксельное разрешение используется билинейная интерполяция.
- это число (корректирующий коэффициент), предсказанное CNN, на которое необходимо скорректировать WSAD в случае, если степень доверия к WSAD ниже 1. Для преобразования в пиксельное разрешение предлагается использовать интерполяцию с учетом ближайших соседей.
Соответственно, окончательные веса для взвешивания кадров-предикторов предлагается рассчитывать по следующей формуле:
+
В отличие от известных технологий, для получения , , , в данном изобретении используется CNN, а и являются отдельными для каждой гипотезы движения .
Использование подхода с применением CNN дает возможность использовать уникальные для каждого вектора движения значения , . Таким образом, использование выходных данных с CNN приводит к повышению общего качества интерполированного кадра и вносит основной вклад в уменьшение ореола. При этом только данные SAD и WSAD являются попиксельными, тогда как поля , , являются поблочными и способны масштабироваться, то есть данный способ является легко масштабируемым.
Пример
Возвращаясь к базовому примеру, который рассматривался на протяжении всего описания, можно выделить следующее.
Как показывалось выше, выходными данными этапа 104 были 78 чисел (весов) на выходе сети.
Из них 72 числа были преобразованы на этапе 105 в 2 сформулированных вектора движения (i=1, 2), соответствующих двум гипотезам движения. Оставшиеся 6 чисел не затрагивались на этапе 105 - это , и , соответствующие каждой из двух гипотез движения.
Далее на данном этапе 106 сформулированные векторы и значения используются для формирования кадров-предикторов . При этом на основе значений и рассчитываются окончательные веса . Затем с помощью указанной выше формулы на основе средневзвешенного значения из полученных и определяется интерполированный кадр , который и является результатом выполнения всего способа.
Далее в настоящем документе будут описаны некоторые варианты осуществления настоящего изобретения. Следует понимать, что изобретение не ограничивается этими вариантами, и специалисты в данной области смогут получить иные варианты осуществления, руководствуясь изложенными здесь принципами.
Варианты осуществления
Как указывалось выше, выходными данными этапа оценки движения являются поля движения вперед и назад для каждой пары кадров. Для построения входных данных для CNN в настоящем изобретении предлагается использовать L (число полей) > = 1 поля движения. В одном из описанных выше вариантов осуществления используются L=4 поля: вперед для текущей пары кадров, назад для текущей пары кадров, назад для предыдущей пары кадров и вперед для следующей пары кадров. Использование полей движения с L=4 дает высокое качество интерполированных кадров, измеренное в единицах PSNR.
Между тем, OcC CNN может использовать любое непустое подмножество полей движения, которое приводит к компромиссу между скоростью обработки и качеством изображения. Например, в предпочтительном варианте осуществления используется только одно поле движения (режим L=1). В таблице 3 далее показан вклад каждого поля движения в общее качество (PSNR).
Таблица 3
<b>L (число полей)</b>
Снижение качества [дБ]
4 (все поля)
0
3 (нет поля вперед для следующей пары кадров)
~0.3
2 (нет поля вперед)
~0.5
1 (только поле назад для текущей пары кадров)
~1
Например, если не использовать поле вперед для следующей пары кадров, то общее качество снижается в среднем приблизительно на 0,3 дБ по сравнению с использованием всех 4 полей движения. В то же время, это дает несколько преимуществ. Если разрабатывается приложение, где важна задержка алгоритма FRC - например, необходимо увеличивать частоту видео в видеоконференции, то в связи с тем, что не нужно поле движения вперед для следующей пары кадров (а поле назад для нее и так не используется в настоящем изобретении), то не нужно ждать появления следующей пары кадров (в случае с видеоконференцией нет всего видео, и кадры поступают последовательно), и задержка существенно уменьшается. Кроме того, уменьшается количество вычислений для формулирования вектора движения. Вместо взвешенной суммы 36 векторов здесь требуется посчитать взвешенную сумму 27 векторов.
Если же использовать только поле назад для текущей пары кадров, то общее качество снижается в среднем приблизительно на 1 дБ при одновременном еще более значительном уменьшении объема вычислений и задержки.
Предпочтительный вариант осуществления
В предпочтительном варианте осуществления способа преобразования частоты кадров с коррекцией окклюзий используются следующие параметры:
- Ввод данных проецированного MV из одного поля движения (L=1),
- Обработка одной гипотезы движения с помощью CNN,
- Вывод из CNN только данных MIX.
При этом постобработка (этап 105) не требуется, поскольку не выполняется коррекция проецированного MV (M=1, L=1, K=1).
Выходные данные CNN содержат только , поскольку используется одна гипотеза движения (M=1), и поэтому и не требуются.
Вариант осуществления с низкой задержкой
В варианте осуществления с низкой задержкой входные данные содержат проецированный MV из полей движения назад предыдущей пары кадров и вперед и/или назад текущей пары кадров (без поля движения вперед следующей пары кадров) и, опционально, другие описанные на этапе 103 параметры (расстояние до спроецированного блока, мера доверия, текстура, мера закрытия блока, расстояние до границы кадра).
При постобработке (этап 105) L=2 или 3, M=1 или 2 (для увеличения скорости обработки и уменьшения задержки можно использовать меньшее число).
Выходные данные CNN в таком случае содержат а) все описанные выше в данном документе выходные данные, когда М=2, или б) выходные данные, описанные в «предпочтительном варианте осуществления», когда М=1.
Результаты тестирования
Способ согласно настоящему изобретению был испытан на различных видеофайлах.
Тестирование показало, что значительно уменьшается ореол, вызванный окклюзией (Фиг. 11, 12), уменьшается площадь фона, который следует за движущимся объектом (Фиг. 13), в случае больших векторов движения OcC CNN все равно работает (Фиг. 14). На Фиг. 11-14 слева показан интерполированный кадр с использованием традиционного подхода, а справа - с использованием настоящего изобретения.
Также происходит улучшение результата интерполяции вблизи границ кадра, увеличение PSNR, уменьшение объема вычислений, обеспечивается возможность точной настройки для конкретного сценария путем выбора наборов данных для конкретного случая использования.
На Фиг. 15-16 показаны результаты сравнения PSNR для традиционного FRC и описанного в данном документе AI FRC с использованием OcC CNN.
График на Фиг. 15 показывает несколько статистик разности по PSNR между видео-последовательностями, обработанными традиционным FRC и предложенным OcC CNN FRC. Для этого все видео-последовательности были предварительно прорежены (децимированы), затем недостающие кадры были интерполированы, чтобы можно было рассчитать PSNR для интерполированных кадров относительно исходных кадров, изъятых при прореживании для использования в качестве истинных данных.
Значение mean на этом графике - это среднее значение разности PSNR интерполированных кадров между способом согласно предложенному изобретению и традиционным способом. Величины p10, p25, p75, p90 - процентили, значения которых показывают, какая доля интерполированных кадров в каждой из рассмотренных видео-последовательностей не превышает указанную разность PSNR для предложенного способа OcC CNN FRC относительно традиционного FRC. Например, p10=1 дБ означает, что в предложенном OcC CNN FRC у 10% кадров PSNR не превышает на 1 дБ PSNR кадров, полученных традиционным FRC, тогда как остальные 90% кадров последовательности были улучшены на 1 дБ или выше.
График на Фиг. 16 показывает зависимость улучшения производительности от величины векторов движения. Из него следует, что улучшение производительности увеличивается с увеличением величины векторов движения. Для больших векторов движения оценка движения может быть неустойчивой и вызывать некоторое возмущение на графике.
TM
TM
Квантованный вариант OcC CNN был протестирован на мобильном устройстве (Galaxy S10/S20 с чипсетом Snapdragon), время вывода составляет <10 мс на интерполированный кадр HD (1280×720). Это обеспечивает пропускную способность видео в 200 FPS. Качество интерполяции улучшилось в среднем на 0,4 дБ по сравнению с предыдущим, созданным вручную способом обработки FRC.
Устройство для преобразования частоты кадров
Выше в данном документе было представлено описание с точки зрения способа 100 выполнения FRC согласно настоящему изобретению. При этом каждый из этапов может выполняться как отдельным предназначенным для этого блоком, либо некоторые или все этапы могут выполняться одним и тем же блоком. Соответственно, устройство 200 для преобразования частоты кадров может содержать блок 202 оценки движения, сконфигурированный для выполнения этапа 102 оценки движения (поблочно/попиксельно) с использованием входного видео 101, блок 203 подготовки первых данных, сконфигурированный для выполнения этапа 103 поблочной подготовки данных для OcC CNN для заданной фазы α интерполяции (в основном поблочно), нейронную сеть 204, сконфигурированную для выполнения этапа 104 исправления окклюзий (поблочно), блок 205 подготовки вторых данных, сконфигурированный для выполнения этапа 105 подготовки данных для компенсации движения (поблочно), и блок 206 интерполяции, сконфигурированный для выполнения этапа 106 интерполяции с компенсацией движения (поблочно/попиксельно). Как показано выше, блок 205 является опциональным.
В одном из вариантов осуществления, устройство 200 для преобразования частоты кадров может представлять собой, например, компьютер, и включать в себя процессор 210, который сконфигурирован для вызова и выполнения компьютерных программ из памяти 220 для выполнения этапов 102-106 способа или функций блоков 202-206 в соответствии с вариантами осуществления настоящего изобретения. Согласно вариантам осуществления, устройство 200 может дополнительно включать в себя память 220. Процессор 210 может вызывать и выполнять компьютерные программы из памяти 220 для выполнения способа преобразования частоты кадров. Память 220 может быть отдельным устройством, независимым от процессора 210, или может быть интегрирована в процессор 210.
По меньшей мере один из этапов в способе 100 или блоков в устройстве 200 может использовать модель искусственного интеллекта (AI) для выполнения соответствующих операций. Функция, связанная с AI, может выполняться через энергонезависимую память, энергозависимую память и процессор.
Процессор может включать в себя один или несколько процессоров. В то же время, один или несколько процессоров могут быть процессором общего назначения, например, центральным процессором (CPU), прикладным процессором (AP) или т.п., блоком обработки только графики, таким как графический процессор (GPU), визуальный процессор (VPU) и/или специализированный процессор AI, такой как нейронный процессор (NPU).
Один или несколько процессоров управляют обработкой входных данных в соответствии с заранее определенным правилом работы или моделью искусственного интеллекта (AI), хранящейся в энергонезависимой памяти и энергозависимой памяти. Предварительно определенное рабочее правило или модель искусственного интеллекта могут быть получены путем обучения. При этом процессор может выполнять операцию предварительной обработки данных для преобразования в форму, подходящую для использования в качестве входных данных для модели искусственного интеллекта.
«Получена путем обучения» означает, что посредством применения алгоритма обучения к множеству обучающих данных создается предварительно определенное рабочее правило или модель AI с желаемой характеристикой. Обучение может выполняться на самом устройстве, в котором выполняется AI согласно варианту осуществления, и/или может быть реализовано через отдельный сервер/систему.
Модель искусственного интеллекта может включать в себя множество слоев нейронной сети. Каждый из множества слоев нейронной сети включает в себя множество весовых значений и выполняет рабочую операцию для данного уровня путем вычисления между результатом вычисления предыдущего слоя и множеством весовых значений.
Примеры нейронных сетей включают, помимо прочего, сверточную нейронную сеть (CNN), глубокую нейронную сеть (DNN), рекуррентную нейронную сеть (RNN), ограниченную машину Больцмана (RBM), глубокую сеть доверия (DBN), двунаправленную рекуррентную глубокую нейронную сеть (BRDNN), генеративно-состязательные сети (GAN) и глубокие Q-сети.
Алгоритм обучения - это метод обучения предварительно определенного целевого устройства (например, нейронной сети на базе GPU) с использованием множества обучающих данных, чтобы вызывать, разрешать или управлять целевым устройством для выполнения определения или прогнозирования. Примеры алгоритмов обучения включают, но не ограничиваются ими, обучение с учителем, обучение без учителя, обучение с частичным привлечением учителя или обучение с подкреплением.
Различные иллюстративные блоки и модули, описанные в связи с раскрытием сущности в данном документе, могут реализовываться или выполняться с помощью процессора общего назначения, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой пользователем вентильной матрицы (FPGA) или другого программируемого логического устройства(PLD), дискретного логического элемента или транзисторной логики, дискретных аппаратных компонентов либо любой комбинации вышеозначенного, предназначенной для того, чтобы выполнять описанные в данном документе функции. Процессор общего назначения может представлять собой микропроцессор, но в альтернативном варианте, процессор может представлять собой любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может реализовываться как комбинация вычислительных устройств (к примеру, комбинация DSP и микропроцессора, несколько микропроцессоров, один или более микропроцессоров вместе с DSP-ядром либо любая другая подобная конфигурация).
Вышеупомянутая память может быть энергозависимой или энергонезависимой памятью или может включать в себя как энергозависимую, так и энергонезависимую память. Энергонезависимой памятью может быть постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое программируемое постоянное запоминающее устройство (EPROM), электронно-стираемое программируемое постоянное запоминающее устройство (EEPROM) или флэш-память. Энергозависимая память может быть оперативной памятью (RAM). Также память в вариантах осуществления настоящего раскрытия может быть статической памятью с произвольным доступом (SRAM), динамической памятью с произвольным доступом (DRAM), синхронной динамической памятью с произвольным доступом (синхронная DRAM, SDRAM), синхронной динамической памятью с произвольной выборкой с двойной скоростью передачи данных (SDRAM с двойной скоростью передачи данных, DDR SDRAM), синхронной динамической памятью с произвольной выборкой с повышенной скоростью (улучшенная SDRAM, ESDRAM), DRAM с синхронной линией связи (SLDRAM) и оперативной памятью с шиной прямого доступа (DR RAM) и тд. То есть память в вариантах осуществления настоящего раскрытия включает в себя, но не ограничивается этим, эти и любые другие подходящие типы памяти.
Информация и сигналы, описанные в данном документе, могут представляться с помощью любой из множества различных технологий. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные сигналы, которые могут приводиться в качестве примера в вышеприведенном описании, могут представляться посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц либо любой комбинации вышеозначенного.
Функции, описанные в данном документе, могут реализовываться в аппаратных средствах, программном обеспечении, выполняемом посредством процессора, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, выполняемом посредством процессора, функции могут сохраняться или передаваться как одна или более инструкций или код на компьютерно-читаемом носителе. Другие примеры и реализации находятся в пределах объема раскрытия настоящего изобретения. Например, вследствие характера программного обеспечения, функции, описанные выше, могут реализовываться с использованием программного обеспечения, выполняемого посредством процессора, аппаратных средств, микропрограммного обеспечения, фиксированного блока или комбинаций любого из вышеозначенного. Признаки, реализующие функции, также могут физически находиться в различных позициях, в том числе согласно такому распределению, что части функций реализуются в различных физических местоположениях.
Компьютерно-читаемые носители включают в себя как некратковременные компьютерные носители хранения данных, так и среду связи, включающую в себя любую передающую среду, которая упрощает перемещение компьютерной программы из одного места в другое. Некратковременный носитель хранения данных может представлять собой любой доступный носитель, к которому можно осуществлять доступ посредством компьютера общего назначения или специального назначения. В качестве примера, а не ограничения, некратковременные компьютерно-читаемые носители могут содержать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, ROM на компакт-дисках (CD) или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, либо любой другой некратковременный носитель, который может использоваться для того, чтобы переносить или сохранять требуемое средство программного кода в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера общего назначения или специального назначения либо процессора общего назначения или специального назначения.
Следует понимать, что в настоящем документе показаны принцип работы и базовые примеры способа и устройства для преобразования частоты кадров с исправлением окклюзий на основе сверточной нейронной сети. Специалист в данной области техники, используя данные принципы, сможет получить и другие варианты осуществления изобретения, не прикладывая творческих усилий.
Применение
Настоящее изобретение может найти широкое применение в обработке видео, например, в случаях с потребностями в реальном времени (например, воспроизведение видео, видеозвонки, преобразование во время захвата видео), в устройствах с ограниченными вычислительными возможностями (мобильные телефоны, телевизоры), а также может легко адаптироваться к новым сценариям использования с особыми требованиями для OcC и всей последовательности FRC.
Примерами использования могут быть режим камеры Super-Slow-Motion (сверхзамедленная съемка) с преобразованием частоты кадров из 480 в 960 FPS, что позволяет, например, снимать в условиях плохого освещения или с долгой выдержкой; редактор видео с преобразованием частоты кадров из 240 в 480 FPS, что позволяет использовать эффекты замедления в редактируемом видео; интерполяция игрового процесса с преобразованием частоты кадров из исходных 48 FPS, выдаваемых устройством в игре, до 90 FPS, что позволяет сгладить видеоряд и улучшить впечатления от игрового процесса.
Следует понимать, что хотя в настоящем документе для описания различных элементов, компонентов, областей, слоев и/или секций, могут использоваться такие термины, как "первый", "второй", "третий" и т.п., эти элементы, компоненты, области, слои и/или секции не должны ограничиваться этими терминами. Эти термины используются только для того, чтобы отличить один элемент, компонент, область, слой или секцию от другого элемента, компонента, области, слоя или секции. Так, первый элемент, компонент, область, слой или секция может быть назван вторым элементом, компонентом, областью, слоем или секцией без выхода за рамки объема настоящего изобретения. В настоящем описании термин "и/или" включает любые и все комбинации из одной или более из соответствующих перечисленных позиций. Элементы, упомянутые в единственном числе, не исключают множественности элементов, если отдельно не указано иное.
Функциональность элемента, указанного в описании или формуле изобретения как единый элемент, может быть реализована на практике посредством нескольких компонентов устройства, и наоборот, функциональность элементов, указанных в описании или формуле изобретения как несколько отдельных элементов, может быть реализована на практике посредством единого компонента.
В одном варианте осуществления элементы/блоки предложенного устройства находятся в общем корпусе, размещены на одной раме/конструкции/подложке/печатной плате и связаны друг с другом конструктивно посредством монтажных (сборочных) операций и функционально посредством линий связи. Упомянутые линии или каналы связи, если не указано иное, являются стандартными, известными специалистам линиями связи, материальная реализация которых не требует творческих усилий. Линией связи может быть провод, набор проводов, шина, дорожка, беспроводная линия связи (индуктивная, радиочастотная, инфракрасная, ультразвуковая и т.д.). Протоколы связи по линиям связи известны специалистам и не раскрываются отдельно.
Под функциональной связью элементов следует понимать связь, обеспечивающую корректное взаимодействие этих элементов друг с другом и реализацию той или иной функциональности элементов. Частными примерами функциональной связи может быть связь с возможностью обмена информацией, связь с возможностью передачи электрического тока, связь с возможностью передачи механического движения, связь с возможностью передачи света, звука, электромагнитных или механических колебаний и т.д. Конкретный вид функциональной связи определяется характером взаимодействия упомянутых элементов, и, если не указано иное, обеспечивается широко известными средствами, используя широко известные в технике принципы.
Конструктивное исполнение элементов предложенного устройства является известным для специалистов в данной области техники и не описывается отдельно в данном документе, если не указано иное. Элементы устройства могут быть выполнены из любого подходящего материала. Эти составные части могут быть изготовлены с использованием известных способов, включая, лишь в качестве примера, механическую обработку на станках, литье по выплавляемой модели, наращивание кристаллов. Операции сборки, соединения и иные операции в соответствии с приведенным описанием также соответствуют знаниям специалиста в данной области и, таким образом, более подробно поясняться здесь не будут.
Несмотря на то, что примерные варианты осуществления были подробно описаны и показаны на сопроводительных чертежах, следует понимать, что такие варианты осуществления являются лишь иллюстративными и не предназначены ограничивать настоящее изобретение, и что данное изобретение не должно ограничиваться конкретными показанными и описанными компоновками и конструкциями, поскольку специалисту в данной области техники на основе информации, изложенной в описании, и знаний уровня техники могут быть очевидны различные другие модификации и варианты осуществления изобретения, не выходящие за пределы сущности и объема данного изобретения.