Прогнозирование поверхности автомобиля с помощью 2d bbox и пластины bbox - PullRequest
2 голосов
/ 17 марта 2020

Я пытаюсь решить интересную проблему без использования интенсивной модели графического процессора во время вывода. (Без глубокого изучения)

Ввод: 2D-изображение, которое содержит в себе автомобиль (-ы), с точными bbox, а также bbox автомобиля пластины. (Мы также знаем, что камеры расположены чуть чуть над автомобилями)

Вывод: Поверхность предсказания автомобиля (нижняя сторона кубоида в 3d bbox)

Подход 1: Я пытаюсь использовать тот факт, что у меня есть некоторые предварительные знания, за исключением 2d bbox автомобиля, но также 2d bbox пластины, который может дайте мне ориентацию автомобиля, я подумал о том, чтобы взять угол между центральным bbox автомобиля и центральным bbox 2-й пластины, чтобы понять, в каком направлении смотрит автомобиль.

После того, как я знаю, направление, в котором находится автомобиль, я также могу приблизительно знать, где должен быть один из краев поверхности, потому что 3d bbox ограничен 2d bbox (таким образом, поверхность также ограничена), а также тот факт, что 2d bbox пластины находится в нескольких пикселях от поверхности, поэтому можно оценить один из краев поверхности.

Но проблема здесь в том, чтобы определить боковые ребра, какими «длинными» они должны быть. Я не совсем уверен, как оценить боковые стороны нижней поверхности, но я думаю, что это может быть каким-то образом определено размером 1020 * 2-го bbox автомобиля (который, опять же, должен ограничить эту поверхность) , Возможно, я смогу решить эту проблему после того, как найду край поверхности, а затем исследую способы вывести боковые края этой поверхности.

Подход 2: Аннотирование данных с помощью 3D bbox с предварительно обученной моделью, и пытаюсь предсказать 3d bbox из 2d bbox (и, возможно, еще несколько приоров, таких как 2d bbox на планшете), но я использую не глубокую модель для этого, а простой NN с несколькими слоями, чтобы предсказать 3d Bbox. (тренируется под надзором)

1 Ответ

1 голос
/ 19 марта 2020

Использование методов обнаружения объектов, основанных на глубоком обучении, имеет тенденцию достигать действительно высокой точности обнаружения. Глубокая нейронная сеть - это тенденция к повышению точности ограничивающего прямоугольника, разработка разумной функции потери регрессии также является важным способом. Так что, если вы рассматриваете точность как важный фактор в проекте, вам, возможно, придется рассмотреть вопрос об использовании глубокого обучения.

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

Обычное обнаружение 2D-объекта дает 4-градусные (DoF) ориентированные по оси ограничивающие рамки с центром (x, y) и 2D-размером (w, h), 3D-ограничивающие рамки в контексте автономного вождения обычно имеют 7 степеней свободы: трехмерный физический размер (w, h, l), расположение трехмерного центра (x, y, z) и рыскание. Обратите внимание, что крен и шаг обычно предполагаются равными нулю. Теперь вопрос в том, как нам восстановить объект 7-DoF из объекта 4-DoF? enter image description here Вы можете найти решение и объяснение подхода на основе этого исследования , но оно немного сложное, поскольку оно пришло из исследования.

В вашем 2-й подход:

" Аннотирование данных с помощью 3d-боксов с предварительно обученной моделью "

Вы можете попробовать это, затем поставить все работать для создания 3D-коробки во время вывода. Это слишком конкретная c и очень сложная проблема, чтобы ответить на нее напрямую, даже более того, без глубокого изучения. Но я надеюсь, что мой ответ может помочь.

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

Вы также можете обучить свою собственную модель, которая имеет разные классы для каждого Направление автомобиля. На самом деле это может занять много времени, чтобы подготовить набор данных для него. Используя эту модель, вы можете легко определить направление движения автомобиля. Таким образом, вы можете позволить определенной функции c создавать 3D-боксы на основе обнаруженного направления движения. Хотя я не могу рекомендовать этот подход, если вы не предпочитаете создавать свой собственный аннотированный набор данных, так как это действительно занимает много времени.

Вы можете использовать OpenCV для создания трехмерного bbox, получив указанные вами c значения, которые вы ' Вам понадобится 2D bbox.

Но учтите, что он не даст вам наилучшей точности. Это все еще лучший способ использовать Deep Learning вместо этого для лучшей точности. Вы можете найти много реализации этого в net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...