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

Молодой учёный

Построение карты относительной глубины по одному изображению в режиме реального времени

Информационные технологии
06.03.2023
633
Поделиться
Аннотация
В настоящей работе представлено программное решение задачи определения относительной глубины по одному изображению в режиме реального времени. Представленное решение было реализовано на основе программной модели «DPT» группы моделей «MiDaS» при помощи программной библиотеки «OpenCV».
Библиографическое описание
Копанев, Р. А. Построение карты относительной глубины по одному изображению в режиме реального времени / Р. А. Копанев. — Текст : непосредственный // Молодой ученый. — 2023. — № 9 (456). — С. 20-23. — URL: https://moluch.ru/archive/456/100532/.


В настоящей работе представлено программное решение задачи определения относительной глубины по одному изображению в режиме реального времени. Представленное решение было реализовано на основе программной модели «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/
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
карта относительной глубины
PyTorch
OpenCV
MiDaS
DPT
Молодой учёный №9 (456) март 2023 г.
Скачать часть журнала с этой статьей(стр. 20-23):
Часть 1 (стр. 1-73)
Расположение в файле:
стр. 1стр. 20-23стр. 73

Молодой учёный