commit db496f087aafbd92a2940abb40f44d3ad8b0352d Author: Artur Mukhamadiev Date: Thu Oct 16 21:55:58 2025 +0300 preparation of report for NN advanced diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe92bbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +*.acn +*.acr +*.alg +*.aux +*.bak +*.bbl +*.bcf +*.blg +*.brf +*.bst +*.dvi +*.fdb_latexmk +*.fls +*.glg +*.glo +*.gls +*.idx +*.ilg +*.ind +*.ist +*.lof +*.log +*.lol +*.lot +*.maf +*.mtc +*.mtc1 +*.nav +*.nlo +*.nls +*.out +*.pdf +*.pyg +*.run.xml +*.snm +*.synctex.gz +*.tex.backup +*.tex~ +*.thm +*.toc +*.vrb +*.xdy +*.xml +*blx.bib +.bak +.mtc +build/ +*.fdb_latexmk +*.xml +*.pdf +*.fls +*.bcf +*.pyg diff --git a/chapters/00_introduction.tex b/chapters/00_introduction.tex new file mode 100644 index 0000000..73934fe --- /dev/null +++ b/chapters/00_introduction.tex @@ -0,0 +1,10 @@ +\chapter*{Введение} +\addcontentsline{toc}{chapter}{Введение} % Добавляем введение в оглавление + +Хирургический комплекс «da Vinci» считается “золотым стандартом” в роботизированной хирургии, предоставляя оперирующему хирургу уникальную систему трехмерной (3D) визуализации операционного поля. Однако ассистенты, ординаторы и остальной персонал лишены возможности стереоскопического обзора, что затрудняет их эффективное участие в операции и ограничивает образовательный процесс. Создание дублирующей системы видеоконтроля, транслирующей стереоскопическое изображение с минимальной задержкой («glass-to-glass»), является актуальной задачей, позволяющей улучшить командное взаимодействие, повысить безопасность и эффективность хирургических вмешательств. Помимо прочего, разработка данной платформы открывает возможности для интеграции дополнительного XR функционала в операционной области ассистентов на операции. Одним из подобных направлений является измерение линейных размеров анатомических структур при проведении лапароскопических операций в реальном времени. Для реализации данной задачи необходимо внедрить два элемента компьютерного зрения в систему, один из которых будет выполнять задачу оконтуривания анатомических структур на изображении, а другой по обученным данным в паре с LiDAR измерять линейные размеры оконтуренных объектов. + +В то время как задача оконтуривания является требовательной к разрешению входного изображения и конечный результат напрямую зависит от качества входных данных, измерение линейных размеров уже оконтуренных объектов упирается в точность измерения у LiDAR, что приводит нас к возможности уменьшения входного изображения, с целью снижения уровня алгоритмических задержек в системе. Данный модуль будет на выход выдавать одно число - результат измерения размеров анатомической структуры и не требователен. + +Однако обе данных задачи являются достаточно объемными для текущего этапа работы, поэтому был выбран обучающий вариант, чтобы научиться работать с нейронными сетями и столкнуться с подводными камнями, связанными с работой в реальном времени. + +Задача повышения разрешения является широко исследованной по состоянию на 2025 год и уже имеется большое количество апробированных реализаций в данной области \cite{li2020deep}, что делает ее хорошим кандидатом для обучающего проекта. \ No newline at end of file diff --git a/chapters/01_dataset.tex b/chapters/01_dataset.tex new file mode 100644 index 0000000..83820f7 --- /dev/null +++ b/chapters/01_dataset.tex @@ -0,0 +1,3 @@ +\chapter*{Данные для обучения нейронной сети} +\addcontentsline{toc}{chapter}{Данные для обучения нейронной сети} % Добавляем введение в оглавление + diff --git a/chapters/02_choose.tex b/chapters/02_choose.tex new file mode 100644 index 0000000..ffa40b6 --- /dev/null +++ b/chapters/02_choose.tex @@ -0,0 +1,99 @@ +\chapter*{Выбор архитектуры нейронной сети} +\addcontentsline{toc}{chapter}{Выбор архитектуры нейронной сети} % Добавляем введение в оглавление + +\section{Super Resolution Convolutional Neural Network (SRCNN)} + +Использование сверточных нейронных сетей для данной работы является стандартом, поэтому и начать стоит с нее. Super Resolution Convolutional Neural Network\cite{DongLHT15} является одним из популярных решений для данной задачи. Архитектура сверточной нейронной сети (рис. \ref{fig:screenshot001})представлена в виде 3 слоев, входного слоя с 3 входами для каждого цвета и 64 фичами, после которых идет один скрытый сверточный слой и один выходной слой. В данном случае, первый слой извлекает набор фич из изображения, в то время, как второй слой нелинейно размечает данные фичи на патчи с высоким разрешением, а последний слой комбинирует предсказания с оценкой окружающих патчей и отдает на выход изображение с повышенным разрешением. + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\linewidth]{screenshot001} + \caption{Архитектура нейронной сети SRCNN \cite{DongLHT15}} + \label{fig:screenshot001} +\end{figure} + + +Стоит отметить, что в данной архитектуре входное изображение уже должно быть нужного разрешения, увеличивая вычислительную сложность нейронной сети. Что является потенциальным решающим фактором в пользу более продвинутых реализаций методов повышения разрешения. + +\begin{lstlisting}[ + style=compactpython, + caption=Протестированная реализация SRCNN, + label={lst:SRCNN} + ] +class SimpleSuperResolutionNet(nn.Module): + def __init__(self, kernel_size=3, n_feats=64, colors=3): + super(SimpleSuperResolutionNet, self).__init__() + self.conv = nn.Conv2d( + colors, n_feats, kernel_size=kernel_size, padding=kernel_size//2) + + half_feats = n_feats//2 + self.conv2 = nn.Conv2d( + n_feats, half_feats, kernel_size=kernel_size, padding=kernel_size//2) + + self.conv3 = nn.Conv2d( + half_feats, colors, kernel_size=kernel_size, padding=kernel_size//2) + + def forward(self, x): + x = torch.relu(self.conv(x)) + x = torch.relu(self.conv2(x)) + x = self.conv3(x) + return x + +\end{lstlisting} + +Можно увидеть в листинге \ref{lst:SRCNN}, что размер ядра был выбран отличным от представленных в работе, связано это с тем, что при обучении на наших тестовых данных, одинаковое ядро показало лучшие результаты, в сравнении с оригинальными. + +\section{Fast Super Resolution Convolutional Neural Network (FSRCNN)} + +sdada + +\section{Enhanced Deep Super Resolution (EDSR)} + +Некоторым продвижением в задаче повышения разрешения можно считать применение в сверточных нейронных сетях остаточных блоков.\cite{he2016deep} В ключевой реализации \cite{LimSKNL17} была предложена архитектура состоящая из большого количества скрытых остаточных блоков (рис. \ref{fig:resblockedsr}), после начального входного слоя. + +% TODO: \usepackage{graphicx} required +\begin{figure}[h!] + \centering + \includegraphics[width=0.2\linewidth]{res_block_edsr} + \caption[Структура остаточного блока в сети EDSR]{} + \label{fig:resblockedsr} +\end{figure} + +В отличии от стандартных остаточных блоков, использованных в ResNet \cite{HeZRS15}, в EDSR из остаточного блока удален блок пакетной нормализации, так как данный блок может быть нежелательным в данной задаче + +% TODO: \usepackage{graphicx} required +\begin{figure}[h!] + \centering + \includegraphics[width=0.6\linewidth]{edsr_arch} + \caption[Архитектура нейронной сети EDSR \cite{LimSKNL17}]{} + \label{fig:edsrarch} +\end{figure} + +Были проверены две реализации: "state-of-the-art", предоставленная авторами статьи, уже предобученная модель, а также своя реализация по образу и подобию предоставленной авторами. + +Сеть состояла из 8 остаточных блоков, в каждом из которых было по 64 фичи, с ядром размера 3х3, и значением множителя 0.1 + +\begin{lstlisting}[ + style=compactpython, + caption=Структура остаточного блока, + label={lst:ResBlock} + ] +class ResidualBlock(nn.Module): + def __init__(self, n_feats, kernel_size, bias=True, bn=False, act=nn.ReLU(True), res_scale=1.0): + super(ResidualBlock, self).__init__() + m = [] + for i in range(2): + m.append(nn.Conv2d(n_feats, n_feats, kernel_size, + padding=(kernel_size//2), bias=bias)) + if bn: + m.append(nn.BatchNorm2d(n_feats)) + if i == 0: + m.append(act) + self.body = nn.Sequential(*m) + self.res_scale = res_scale + + def forward(self, x): + res = self.body(x).mul(self.res_scale) + res += x + return res +\end{lstlisting} \ No newline at end of file diff --git a/images/edsr_arch.png b/images/edsr_arch.png new file mode 100644 index 0000000..4591b0d Binary files /dev/null and b/images/edsr_arch.png differ diff --git a/images/res_block_edsr.png b/images/res_block_edsr.png new file mode 100644 index 0000000..15bf6a6 Binary files /dev/null and b/images/res_block_edsr.png differ diff --git a/images/screenshot001.png b/images/screenshot001.png new file mode 100644 index 0000000..bc16bcd Binary files /dev/null and b/images/screenshot001.png differ diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..ce199ad --- /dev/null +++ b/main.tex @@ -0,0 +1,29 @@ +% --- ОСНОВНОЙ ФАЙЛ ДОКУМЕНТА --- +\documentclass[a4paper, 12pt]{report} + +% --- ПОДКЛЮЧЕНИЕ ПРЕАМБУЛЫ ИЗ ОТДЕЛЬНОГО ФАЙЛА --- +\input{preamble.tex} + +% --- ДАННЫЕ ДЛЯ ТИТУЛЬНОГО ЛИСТА --- +% Эти команды можно переопределить здесь при необходимости +\title{Применение нейронных сетей для повышения разрешения выходного изображения в реальном времени в области лапароскопической хирургии} +\author{Мухамадиев Артур Юрисович} +\date{\today} + +\begin{document} + +% --- ТИТУЛЬНЫЙ ЛИСТ --- +\input{title.tex} + +% --- СОДЕРЖАНИЕ --- +%\tableofcontents +%\newpage + +% --- ПОДКЛЮЧЕНИЕ ГЛАВ ИЗ ПАПКИ chapters --- +\input{chapters/00_introduction.tex} +\input{chapters/01_dataset.tex} +\input{chapters/02_choose.tex} +% --- СПИСОК ЛИТЕРАТУРЫ --- +\printbibliography[title={Список использованных источников}] + +\end{document} diff --git a/preamble.tex b/preamble.tex new file mode 100644 index 0000000..84df3e9 --- /dev/null +++ b/preamble.tex @@ -0,0 +1,62 @@ +% --- ПРЕАМБУЛА: ПОДКЛЮЧАЕМЫЕ ПАКЕТЫ И НАСТРОЙКИ --- + +% --- КОДИРОВКА И ЯЗЫК --- +\usepackage[T2A]{fontenc} % Кодировка для кириллицы +\usepackage[utf8]{inputenc} % Кодировка исходного файла +\usepackage[russian]{babel} % Поддержка русского языка +\usepackage{titling} +\usepackage{sourcecodepro} + +% --- ГЕОМЕТРИЯ СТРАНИЦЫ (ПОЛЯ) ПО ГОСТ 7.32-2017 --- +\usepackage[left=3cm, right=1.5cm, top=2cm, bottom=2cm]{geometry} + +% --- ШРИФТЫ И ИНТЕРВАЛЫ --- +\usepackage{setspace} +\onehalfspacing % Полуторный интервал +\usepackage{indentfirst} % Красная строка для первого абзаца в разделе +\usepackage{titlesec} +\titleformat{\chapter}[display]{\fontsize{16pt}{16pt}\bfseries}{}{5pt}{} +\titlespacing{\chapter}{0pt}{24pt}{1\baselineskip} +\titleformat{\section}[display]{\fontsize{14pt}{14pt}\bfseries}{}{5pt}{\arabic{section} } +% --- МАТЕМАТИКА --- +\usepackage{amsmath, amsfonts, amssymb, amsthm, mathtools} + +% --- ГРАФИКА --- +\usepackage{graphicx} +\graphicspath{{images/}} % Указываем папку для изображений +\usepackage{caption} % Для настройки подписей к рисункам и таблицам +\captionsetup[figure]{labelsep=period, name=Рисунок} % Подпись "Рисунок 1." +\captionsetup[table]{labelsep=period, name=Таблица} % Подпись "Таблица 1." + +% --- БИБЛИОГРАФИЯ (ГОСТ) --- +\usepackage[ + backend=biber, + style=gost-numeric, % Стиль цитирования по ГОСТ + sorting=none +]{biblatex} +\addbibresource{references.bib} % Файл с библиографией +\usepackage{listings} +\usepackage{xcolor} + + +\lstdefinestyle{compactpython}{ + language=Python, + basicstyle=\ttfamily\footnotesize, % Smaller font + upquote=true, % Correct quotes + commentstyle=\color{gray}\itshape, % Smaller, italic comments + keywordstyle=\color{blue}\bfseries, % Bold keywords + stringstyle=\color{red}, % Red strings + numberstyle=\tiny\color{gray}, % Tiny line numbers + numbers=left, % No line numbers (or 'left' if desired) + frame=single, % No frame around the listing + showstringspaces=false, % Don't show spaces in strings + breaklines=true, % Allow lines to break + tabsize=2, % Smaller tab size + % For even more compactness, consider removing line numbers, frames, or captions. + % numbers=none, + % frame=none, + % captionpos=b, % Caption below +} + +% --- ГИПЕРССЫЛКИ И НАВИГАЦИЯ (опционально, но удобно для PDF) --- +\usepackage[unicode, colorlinks=true, linkcolor=blue, citecolor=green]{hyperref} diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..a174a46 --- /dev/null +++ b/references.bib @@ -0,0 +1,85 @@ +@article{li2020deep, + title={Deep learning methods in real-time image super-resolution: a survey}, + author={Li, Xiaofang and Wu, Yirui and Zhang, Wen and Wang, Ruichao and Hou, Feng}, + journal={Journal of Real-Time Image Processing}, + volume={17}, + number={6}, + pages={1885--1909}, + year={2020}, + publisher={Springer} +} +@article{HeZRS15, + author = {Kaiming He and + Xiangyu Zhang and + Shaoqing Ren and + Jian Sun}, + title = {Deep Residual Learning for Image Recognition}, + journal = {CoRR}, + volume = {abs/1512.03385}, + year = {2015}, + url = {http://arxiv.org/abs/1512.03385}, + eprinttype = {arXiv}, + eprint = {1512.03385}, + timestamp = {Wed, 25 Jan 2023 11:01:16 +0100}, + biburl = {https://dblp.org/rec/journals/corr/HeZRS15.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} +@article{LimSKNL17, + author = {Bee Lim and + Sanghyun Son and + Heewon Kim and + Seungjun Nah and + Kyoung Mu Lee}, + title = {Enhanced Deep Residual Networks for Single Image Super-Resolution}, + journal = {CoRR}, + volume = {abs/1707.02921}, + year = {2017}, + url = {http://arxiv.org/abs/1707.02921}, + eprinttype = {arXiv}, + eprint = {1707.02921}, + timestamp = {Tue, 20 Feb 2024 13:39:57 +0100}, + biburl = {https://dblp.org/rec/journals/corr/LimSKNL17.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} +@article{DongLT16, + author = {Chao Dong and + Chen Change Loy and + Xiaoou Tang}, + title = {Accelerating the Super-Resolution Convolutional Neural Network}, + journal = {CoRR}, + volume = {abs/1608.00367}, + year = {2016}, + url = {http://arxiv.org/abs/1608.00367}, + eprinttype = {arXiv}, + eprint = {1608.00367}, + timestamp = {Wed, 18 Sep 2024 14:53:44 +0200}, + biburl = {https://dblp.org/rec/journals/corr/DongLT16.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} +@article{DongLHT15, + author = {Chao Dong and + Chen Change Loy and + Kaiming He and + Xiaoou Tang}, + title = {Image Super-Resolution Using Deep Convolutional Networks}, + journal = {CoRR}, + volume = {abs/1501.00092}, + year = {2015}, + url = {http://arxiv.org/abs/1501.00092}, + eprinttype = {arXiv}, + eprint = {1501.00092}, + timestamp = {Wed, 18 Sep 2024 14:53:44 +0200}, + biburl = {https://dblp.org/rec/journals/corr/DongLHT15.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} +@inproceedings{he2016deep, + author = {He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian}, + title = {Deep Residual Learning for Image Recognition}, + booktitle = {2016 Computer Vision and Pattern Recognition}, + year = {2016}, + month = {June}, + abstract = {Abstract}, + publisher = {IEEE}, + url = {https://www.microsoft.com/en-us/research/publication/deep-residual-learning-for-image-recognition/}, + pages = {770-778}, +} diff --git a/title.tex b/title.tex new file mode 100644 index 0000000..1a6f6c4 --- /dev/null +++ b/title.tex @@ -0,0 +1,42 @@ +% --- ТИТУЛЬНЫЙ ЛИСТ --- +\begin{titlepage} + \centering % Вместо окружения center для лучшего контроля + \thispagestyle{empty} % Убираем нумерацию на титульной странице + + \normalsize\textbf{ + МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ} + + \normalsize + ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ + + \normalsize\textbf{ + НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИТМО + } + \vspace{3cm} + + \large + \textbf{\MakeUppercase{\thetitle}} + + \large + для дисциплины \\ + «Основы нейронных сетей (продвинутый уровень)» + \vspace{5cm} + + \begin{flushright} + \large + \textbf{Выполнил:} \\ + аспирант 2-го года \\ + Физико-Технического мегафакультета \\ + направления 2.2.4 \\ + «Приборы и методы измерения (оптические величины)» \\ + \theauthor \\ + \vspace{1cm} + \textbf{Проверил:} \\ + профессор, д.т.н. \\ + Бессметрный Игорь Александрович + \end{flushright} + \vspace{\fill} % Растягивает пространство до нижнего края + + \large + Санкт-Петербург, \the\year +\end{titlepage}