Files
2026-06-27 05:43:39 +03:00

132 lines
8.8 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\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}