Использование методов обнаружения объектов, основанных на глубоком обучении, имеет тенденцию достигать действительно высокой точности обнаружения. Глубокая нейронная сеть - это тенденция к повышению точности ограничивающего прямоугольника, разработка разумной функции потери регрессии также является важным способом. Так что, если вы рассматриваете точность как важный фактор в проекте, вам, возможно, придется рассмотреть вопрос об использовании глубокого обучения.
Но если точность не имеет большого значения, и вы действительно предпочитаете не использовать глубокое обучение, тогда вы можно использовать другие простые способы.
Обычное обнаружение 2D-объекта дает 4-градусные (DoF) ориентированные по оси ограничивающие рамки с центром (x, y) и 2D-размером (w, h), 3D-ограничивающие рамки в контексте автономного вождения обычно имеют 7 степеней свободы: трехмерный физический размер (w, h, l), расположение трехмерного центра (x, y, z) и рыскание. Обратите внимание, что крен и шаг обычно предполагаются равными нулю. Теперь вопрос в том, как нам восстановить объект 7-DoF из объекта 4-DoF? Вы можете найти решение и объяснение подхода на основе этого исследования , но оно немного сложное, поскольку оно пришло из исследования.
В вашем 2-й подход:
" Аннотирование данных с помощью 3d-боксов с предварительно обученной моделью "
Вы можете попробовать это, затем поставить все работать для создания 3D-коробки во время вывода. Это слишком конкретная c и очень сложная проблема, чтобы ответить на нее напрямую, даже более того, без глубокого изучения. Но я надеюсь, что мой ответ может помочь.
Вот еще один подход, которым я могу поделиться на всякий случай, если вы захотите рассмотреть:
Вы также можете обучить свою собственную модель, которая имеет разные классы для каждого Направление автомобиля. На самом деле это может занять много времени, чтобы подготовить набор данных для него. Используя эту модель, вы можете легко определить направление движения автомобиля. Таким образом, вы можете позволить определенной функции c создавать 3D-боксы на основе обнаруженного направления движения. Хотя я не могу рекомендовать этот подход, если вы не предпочитаете создавать свой собственный аннотированный набор данных, так как это действительно занимает много времени.
Вы можете использовать OpenCV для создания трехмерного bbox, получив указанные вами c значения, которые вы ' Вам понадобится 2D bbox.
Но учтите, что он не даст вам наилучшей точности. Это все еще лучший способ использовать Deep Learning вместо этого для лучшей точности. Вы можете найти много реализации этого в net.