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

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

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

Информационные технологии
06.03.2023
619
Поделиться
Библиографическое описание
Копанев, Р. А. Построение карты относительной глубины по одному изображению в режиме реального времени / Р. А. Копанев. — Текст : непосредственный // Молодой ученый. — 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

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