Построение карты относительной глубины по одному изображению в режиме реального времени | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №9 (456) март 2023 г.

Дата публикации: 06.03.2023

Статья просмотрена: 437 раз

Библиографическое описание:

Копанев, Р. А. Построение карты относительной глубины по одному изображению в режиме реального времени / Р. А. Копанев. — Текст : непосредственный // Молодой ученый. — 2023. — № 9 (456). — С. 20-23. — URL: https://moluch.ru/archive/456/100532/ (дата обращения: 18.12.2024).



В настоящей работе представлено программное решение задачи определения относительной глубины по одному изображению в режиме реального времени. Представленное решение было реализовано на основе программной модели «DPT» группы моделей «MiDaS» при помощи программной библиотеки «OpenCV».

Ключевые слова : карта относительной глубины, PyTorch, OpenCV, MiDaS, DPT.

Введение

Карта относительной глубины кадра содержит в себе информацию о расстоянии между различными объектами, представленных на кадре. Карта относительной глубины представляет собой изображение, где для каждого пикселя вместо информации о цвете хранится информация о расстоянии от камеры до объекта.

Данная информация, например, может иметь применение для определения ориентации в окружающем пространстве беспилотных робототехнических комплексов.

Карту относительной глубины можно получить при помощи специальной камеры глубины или стереокамеры, использующей в качестве входной информации пару стереоскопических кадров одного и того же объекта. Определение глубины по стереопаре кадров заключается в определении для каждой точки на одном кадре парной ей на другом кадре. По полученной паре соответствующих точек производится определение координат их прообраза в трехмерном пространстве [1]. Определив координаты прообраза, глубина вычисляется как расстояние до плоскости камеры. Определение глубины с помощью стереокамеры остается сложной задачей, поскольку требуется дополнительная наладка и точная настройка двух стереоскопических камер.

Карту относительной глубины также может быть получена с использованием искусственных нейронных сетей. Одним из готовых решений является группа моделей «MiDaS» [2], реализованная на основе программной библиотеки «PyTorch». Модели «MiDaS» предназначены для вычисления относительной глубины по одному изображению. Программные модели были обучены на 10 различных наборах данных, включающие данные, полученные с использованием стереоскопического метода. Различные наборы данных, содержащие информацию о глубине, несовместимы с точки зрения масштаба и смещения. «MiDaS» вводит новую функцию потерь, которая позволяет устранить проблемы совместимости и позволяя одновременно использовать для обучения несколько наборов данных из различных источников [3].

Представленное программное решение будет основываться на программной модели «DPT», представленной компанией Intel Corp.

Основная часть

Основной алгоритм вычисления относительной глубины по одному изображению в режиме реального времени заключается в захвате кадра из видео, передаче его в модель для прогнозирования и дальнейшей обработке полученных данных для визуализации.

Загрузка модели и преобразований

Для передачи кадра в модель необходимо изначально произвести наладку программной модели. Затем произвести подготовку входного кадра.

Для подготовки входного кадра к передаче необходимо произвести над ним определенные преобразования. Загрузка модели и преобразований представлена в листинге 1.

Листинг 1. Загрузка модели и преобразований

1

2

3

4

5

6

7

model_type = "DPT_Large"

model = torch.hub.load("intel-isl/MiDas", model_type)

midas_transforms = torch.hub.load("intel-isl/MiDas", "transforms")

if model_type == "DPT_Large" or model_type == "DPT_Hybrid":

transform = midas_transforms.dpt_transform

else:

transform = midas_transforms.small_transform

В данном случае используется программная модель «DPT-Large».

В зависимости от установленной программной модели производится выбор необходимого типа преобразования.

Загрузка входного кадра

Для загрузки входного кадра применяется программная библиотека «OpenCV». Для загрузки кадра необходимо создать объект захвата видео VideoCapture [4]. Исходный программный код представлен в листинге 2.

Листинг 2. Загрузка входного кадра

1

2

3

cap = cv2.VideoCapture(0)

if not cap.isOpened()

exit()

Для получения кадра из видео применятся функция VideoCapture().read() .

Прогнозирование и обработка выходных данных

Для прогнозирования изначально производится передача преобразованных данных входного кадра в модель. После прогнозирования результата производится преобразование полученных выходных данных к исходному размеру. В завершении производится нормализация выходных данных для визуализации. Исходный программный код представлен в листинге 3.

Листинг 3. Прогнозирование и обработка выходных данных

1

2

3

4

5

6

7

8

9

10

11

12

while True:

retval, frame = cap.read()

if not retval:

break

input_batch = transform(frame)

with torch.no_grad():

predict = model(input_batch)

predict = torch.nn.functional.interpolate(predict.unsqueeze(1),

size=frame.shape[:2], mode="bilinear")

predict = predict.squeeze()

predict = torch.nn.functional.normalize(input=predict, p=3)

output = predict.numpy()

Пример входного кадра и результат определения относительной глубины для него представлен на рисунке 1, а и б.

аб

Рис. 1. Результат определения относительной глубины для входного кадра при помощи программной модели «DPT-Large» группы «MiDaS»: a — пример входного кадра («Руины Пальмиры»); б — полученная карта относительной глубины ( mode=«bilinear »)

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

Чем дальше распложены объекты от плоскости камеры, тем они более темнее. Объекты, расположенные ближе к камере — более светлее.

Соответствующая карта глубины для рассмотренного примера в трехмерной системе координат представлена на рисунке 2.

Соответствующая карта глубины для рассмотренного входного кадра в трехмерной системе координат

Рис. 2. Соответствующая карта глубины для рассмотренного входного кадра в трехмерной системе координат

Представленная карта глубины в трехмерной системе координат приведена в сокращенном виде. В данном случае количество точек сокращено на 100 единиц.

Заключение

В результате выполнения настоящей работы было представлено программное решение задачи определения относительной глубины по оному кадру в режиме реального времени. Представленное решение было реализовано на основе программной модели «DPT-Large» группы моделей «MiDaS» при помощи программной библиотеки «OpenCV». Применение искусственных нейронных сетей в решении задачи построения карты относительной глубины позволяет производить вычисления глубины с применением одного изображения, в отличии от стереоскопического метода, который использует два изображения в качестве входной информации об объекте и который дополнительно требует точной наладки и настройки оборудования для захвата кадра. Рассмотренная программная модель «DPT» является практичным средством для решения задачи вычисления относительной глубины по одному изображению.

Литература:

  1. Gary Bradski. Learning OpenCV 3 / Gary Bradski, Adrian Kaehler. O'Reilly Media. — 2016. — 1024 с. — [Электронный ресурс]. Режим доступа: https://www.oreilly.com/library/view/learning-opencv-3/9781491937983/?_gl=1*du23ls*_ga*MTMwNzc2NzkyNy4xNjc3ODI3MjM5*_ga_092EL089CH*MTY3NzgyNzIzOS4xLjEuMTY3NzgyNzUwMy42MC4wLjA
  2. MIDAS: MiDaS models for computing relative depth from a single image. [Электронный ресурс]. Режим доступа: https://pytorch.org/hub/intelisl_midas_v2/
  3. René Ranftl. Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer / René Ranftl, Katrin Lasinger, David Hafner, Konrad Schindler, Vladlen Koltun. — 2020. — 14 c. — [Электронный ресурс]. Режим доступа: https://arxiv.org/abs/1907.01341
  4. Jan Erik Solem. Programming Computer Vision with Python / Jan Erik Solem. O'Reilly Media. — 2012. — 272 с. — [Электронный ресурс]. Режим доступа: https://www.oreilly.com/library/view/programming-computer-vision/9781449341916/
Основные термины (генерируются автоматически): относительная глубина, входной кадр, программная модель, программная библиотека, группа моделей, загрузка модели, реальное время, трехмерная система координат, исходный программный код, стереоскопический метод.


Ключевые слова

OpenCV, карта относительной глубины, PyTorch, MiDaS, DPT

Похожие статьи

Разработка программы для оптического распознавания символов с помощью Tesseract

В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.

Проектирование информационной системы при помощи UML-диаграмм на примере информационной системы ресторана

В данной статье рассматривается проектирование информационной системы при помощи UML-диаграмм. Для построения диаграмм используется case-средство Visual Paradigm.

Разработка программного модуля защиты информации методом стеганографии

В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.

Сравнительный анализ времени отображения экранов с использованием стандартного подхода в Android и библиотеки Jetpack Compose

В данной статье проводятся измерения скорости отображения интерфейса и сравнение Jetpack Compose со стандартным подходом создания интерфейсов. Измеряется скорость отображения с использованием режима отладки и R8, а также комбинированием подходом при ...

Поисковые возможности контент-менеджмент системы Adobe Experience Manager

В представленной работе рассматриваются наиболее интересные и важные особенности поисковых движков и способы конструирования индексации с целью повышения скорости поиска в рамках контент-менеджмент системы Adobe Experience Manager. Данные основываютс...

Пути исследования нечетких систем управления в среде fuzzyTECH Explorer Edition

Рассмотрена структура и исследованы параметры нечетких систем управления на основе теории нечетких множеств. Получены результаты моделирования функции нечеткого контроллера и оценки его функциональности путем его моделирования в программе fuzzyTECH E...

Методика создания библиотеки компонентов электрической схемы в виде базы данных в среде САПР Altium Designer

В представленной работе объектом исследования являлась методика создания компонентной библиотеки в виде базы данных для Altium Designer оптимальным методом.

Конфигурирование и тестирование производительности вычислительного кластера на базе неоднородных многоядерных узлов

В работе рассматривается выбор оборудования, программного обеспечения, вопросы настройки и тестирования производительности вычислительного кластера на базе небольшого числа неоднородных многоядерных серверных узлов. Оценка производительности выполняе...

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Сравнение и разработка методов многокритериального анализа принятия решений

В данной статье рассматриваются методы многокритериального анализа принятия решения и их применение для конкретных данных. Разрабатывается библиотека на языке Python для сравнения методов анализа TOPSIS, ELECTRE I, SAW.

Похожие статьи

Разработка программы для оптического распознавания символов с помощью Tesseract

В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.

Проектирование информационной системы при помощи UML-диаграмм на примере информационной системы ресторана

В данной статье рассматривается проектирование информационной системы при помощи UML-диаграмм. Для построения диаграмм используется case-средство Visual Paradigm.

Разработка программного модуля защиты информации методом стеганографии

В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.

Сравнительный анализ времени отображения экранов с использованием стандартного подхода в Android и библиотеки Jetpack Compose

В данной статье проводятся измерения скорости отображения интерфейса и сравнение Jetpack Compose со стандартным подходом создания интерфейсов. Измеряется скорость отображения с использованием режима отладки и R8, а также комбинированием подходом при ...

Поисковые возможности контент-менеджмент системы Adobe Experience Manager

В представленной работе рассматриваются наиболее интересные и важные особенности поисковых движков и способы конструирования индексации с целью повышения скорости поиска в рамках контент-менеджмент системы Adobe Experience Manager. Данные основываютс...

Пути исследования нечетких систем управления в среде fuzzyTECH Explorer Edition

Рассмотрена структура и исследованы параметры нечетких систем управления на основе теории нечетких множеств. Получены результаты моделирования функции нечеткого контроллера и оценки его функциональности путем его моделирования в программе fuzzyTECH E...

Методика создания библиотеки компонентов электрической схемы в виде базы данных в среде САПР Altium Designer

В представленной работе объектом исследования являлась методика создания компонентной библиотеки в виде базы данных для Altium Designer оптимальным методом.

Конфигурирование и тестирование производительности вычислительного кластера на базе неоднородных многоядерных узлов

В работе рассматривается выбор оборудования, программного обеспечения, вопросы настройки и тестирования производительности вычислительного кластера на базе небольшого числа неоднородных многоядерных серверных узлов. Оценка производительности выполняе...

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Сравнение и разработка методов многокритериального анализа принятия решений

В данной статье рассматриваются методы многокритериального анализа принятия решения и их применение для конкретных данных. Разрабатывается библиотека на языке Python для сравнения методов анализа TOPSIS, ELECTRE I, SAW.

Задать вопрос