132 lines
8.8 KiB
TeX
132 lines
8.8 KiB
TeX
\documentclass[12pt,a4paper]{article}
|
||
\usepackage{fontspec}
|
||
\usepackage{polyglossia}
|
||
\setdefaultlanguage{russian}
|
||
\setotherlanguage{english}
|
||
\setmainfont{DejaVu Serif}
|
||
\setsansfont{DejaVu Sans}
|
||
\setmonofont{DejaVu Sans Mono}
|
||
\usepackage{graphicx}
|
||
\usepackage{hyperref}
|
||
\usepackage{geometry}
|
||
\usepackage{amsmath}
|
||
\usepackage{float}
|
||
\usepackage{caption}
|
||
\usepackage{listings}
|
||
\usepackage{xcolor}
|
||
|
||
\geometry{margin=2cm}
|
||
|
||
\hypersetup{colorlinks=true, linkcolor=black, urlcolor=blue, citecolor=black}
|
||
|
||
\definecolor{codebg}{rgb}{0.95,0.95,0.95}
|
||
\lstset{
|
||
basicstyle=\ttfamily\small,
|
||
backgroundcolor=\color{codebg},
|
||
breaklines=true,
|
||
frame=single
|
||
}
|
||
|
||
\begin{document}
|
||
|
||
\section*{Задание}
|
||
|
||
\begin{itemize}
|
||
\item \textbf{Подготовка данных:} Выбрать тестовый видеофрагмент с фиксированной исходной частотой $\approx$30 fps (рекомендуется сцена с динамичным движением или панорамированием камеры).
|
||
\item \textbf{Конфигурация графического движка:} Обработка выполняется на дискретной видеокарте Nvidia RTX 3060 с использованием CUDA-ускорения.
|
||
\begin{itemize}
|
||
\item Выбрать базовую нейросетевую модель для интерполяции --- семейство RIFE (Real-time Intermediate Flow Estimation), версия HDv3.
|
||
\end{itemize}
|
||
\item \textbf{Настройка выходных параметров:}
|
||
\begin{itemize}
|
||
\item Режим работы: интерполяция (Interpolation).
|
||
\item Коэффициент масштабирования кадров Multiplier: 8x для получения итоговой частоты $\approx$240 fps.
|
||
\end{itemize}
|
||
\end{itemize}
|
||
|
||
\section*{Реализация}
|
||
|
||
\textbf{Инструмент:} Jupyter Notebook (Python 3) с использованием PyTorch 2.12 + CUDA 13.0.
|
||
|
||
\subsection*{Подготовка настроек}
|
||
|
||
Исходный код лабораторной работы доступен в репозитории: \\
|
||
\url{https://git.illegalfiles.icu/vlad.os/multimedia-lab3-video}
|
||
|
||
В качестве исходного видео была взята запись длительностью 6.3 секунды с разрешением 1920×1080 пикселей, частотой кадров 29.97 fps и общим количеством кадров 189. Обработка выполнялась с использованием библиотеки PyTorch на GPU Nvidia GeForce RTX 3060 (12 ГБ).
|
||
|
||
Настройки модели RIFE HDv3:
|
||
\begin{itemize}
|
||
\item Предобученная модель IFNet с весами RIFE HDv3
|
||
\item Масштаб обработки: 1.0 (полное разрешение)
|
||
\item Режим: fp32 (полная точность)
|
||
\item Multiplier: 8x (2\textsuperscript{3})
|
||
\end{itemize}
|
||
|
||
\subsection*{Архитектура нейросети}
|
||
|
||
RIFE основан на итеративной многомасштабной сети IFNet (Intermediate Flow Network), которая состоит из трёх последовательных блоков IFBlock. Каждый блок обрабатывает изображение на своём масштабе (4x, 2x, 1x) и итеративно уточняет оптический поток и маску слияния. Процесс интерполяции между двумя кадрами включает следующие шаги:
|
||
|
||
\begin{enumerate}
|
||
\item Оценка двунаправленного оптического потока между кадрами $I_0$ и $I_1$ на нескольких масштабах
|
||
\item Обратная свертка (warping) исходных кадров согласно найденному потоку
|
||
\item Вычисление маски слияния для определения вклада каждого из искажённых кадров
|
||
\item Синтез промежуточного кадра: $I_{mid} = warp(I_0, F_{0\rightarrow t}) \cdot M + warp(I_1, F_{1\rightarrow t}) \cdot (1 - M)$
|
||
\end{enumerate}
|
||
|
||
Для кратного увеличения частоты (8x) применяется рекурсивный подход: между каждой парой исходных кадров вычисляется средний, затем процесс рекурсивно повторяется для каждого полученного интервала.
|
||
|
||
\subsection*{Исходные кадры}
|
||
|
||
На рис.~\ref{fig:source} представлены исходные кадры видео. Видно, что кадры содержат сцену с динамичным движением, что позволяет оценить эффективность интерполяции.
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[width=0.9\textwidth]{figures/source_frames.png}
|
||
\caption{Исходные кадры видео (исходная частота $\approx$ 30 fps)}
|
||
\label{fig:source}
|
||
\end{figure}
|
||
|
||
\subsection*{Выходные кадры}
|
||
|
||
На рис.~\ref{fig:interp} представлены результаты интерполяции --- 7 промежуточных кадров, синтезированных между двумя исходными кадрами с использованием RIFE.
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[width=0.95\textwidth]{figures/interpolation_result.png}
|
||
\caption{Демонстрация интерполяции 8x: исходный кадр 0, 7 промежуточных кадров (t = 0.125 .. 0.875), исходный кадр 1}
|
||
\label{fig:interp}
|
||
\end{figure}
|
||
|
||
На рис.~\ref{fig:comparison} показано сравнение исходных и интерполированных кадров. В левом столбце --- исходные кадры, в центральном --- соответствующие им кадры из интерполированного видео (каждый 8-й), в правом --- промежуточные кадры, синтезированные сетью.
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[width=0.85\textwidth]{figures/comparison.png}
|
||
\caption{Сравнение исходных и интерполированных кадров}
|
||
\label{fig:comparison}
|
||
\end{figure}
|
||
|
||
На рис.~\ref{fig:diff} представлен анализ межкадровой разницы: в исходном видео средняя разница между соседними кадрами составляет 4.4, в то время как в интерполированном --- 0.86. Это подтверждает, что RIFE успешно синтезирует плавные промежуточные кадры, уменьшая межкадровую разницу в 5.2 раза.
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[width=0.85\textwidth]{figures/diff_analysis.png}
|
||
\caption{Анализ межкадровой разницы: исходное (слева) и интерполированное (справа) видео}
|
||
\label{fig:diff}
|
||
\end{figure}
|
||
|
||
\section*{Вывод}
|
||
|
||
В ходе выполнения лабораторной работы была изучена и реализована технология нейросетевой интерполяции кадров с использованием архитектуры RIFE (Real-time Intermediate Flow Estimation). Экспериментальным путем было установлено, что алгоритм успешно справляется с генерацией промежуточных кадров при увеличении частоты видеопотока в 8 раз (с $\approx$30 до $\approx$240 fps), обеспечивая высокую плавность динамичных сцен.
|
||
|
||
Ключевые результаты работы:
|
||
\begin{itemize}
|
||
\item Разработан Jupyter Notebook с полным пайплайном интерполяции на базе IFNet/RIFE HDv3
|
||
\item Выполнена обработка тестового видеофрагмента (1920×1080, 6.31 сек, 189 кадров)
|
||
\item Получено итоговое видео с частотой $\approx$240 fps и общим количеством 1505 кадров (8.0x)
|
||
\item Выполнен количественный анализ: межкадровая разница уменьшилась с 4.4 до 0.86 (в 5.2 раза), подтверждая равномерность синтезированных кадров
|
||
\end{itemize}
|
||
|
||
\end{document}
|