Перейти к содержимому
Compvision.ru
Jove

Нахождение ключевых точек объекта и угла его поворота в пространстве

Recommended Posts

Добрый день!

Подскажите в каком направлении копать.

Задача: в режиме реального времени в кадре найти определенный объект, например, стул. Кроме того, определить ключевые/крайние точки (ножек, спинки и другие) - и, как следствие, определить угол наклона этого объекта относительно камеры по всем 3 осям.

Насколько я понимаю, задача не сильно отличается от того же определения ключевых точек на лице методом Виолы-Джонса, но мне не понятно каким образом натренировать поиск не просто самого объекта, а конкретных точек на нем.

Какие варианты реализации задачи существуют и какие из них наиболее точные и производительные?

Поделиться сообщением


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

Посмотрите в сторону openpose, как делается тренировка скелета или вот....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, LexaP сказал:

Посмотрите в сторону openpose, как делается тренировка скелета или вот....

Не нашел ни одного туторила о том, как самому средствами openpose обучить нейронную сеть находить ключевые точки на своих объектах. Плохо искал или таких средств не существует?

Кроме того, openpose требует CUDA, что мне не подходит...

Поделиться сообщением


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

Без CUDA тоже будет работать, но медленней. По факту ключевые точки на лице ищутся не методом Виолы-Джонса, им только лицо, а точки уже другими способами: AAM, нйросети (регрессия) и т.д. Возможно, тебе подойдут active shape models, которые до нейростей были лидером по качеству и не требовали видеокарты. Хотя сейчас с OpenVINO многие нейросети и так быстро работают.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Nuzhny сказал:

По факту ключевые точки на лице ищутся не методом Виолы-Джонса, им только лицо, а точки уже другими способами: AAM, нйросети (регрессия) и т.д. Возможно, тебе подойдут active shape models, которые до нейростей были лидером по качеству и не требовали видеокарты. Хотя сейчас с OpenVINO многие нейросети и так быстро работают.

Правильно ли я понимаю, что реализация должна быть примерно следующей:

1. Найти искомый объект (объекты) в кадре с помощью классификационной нейронной сети.

2. В найденных объектах с помощью AAM найти ключевые точки.

3. По геометрии взаимного расположения точек в пространстве или с помощью регрессионной нейронной сети (по статистике расположения координат и соответствующих им углам) определить углы наклона.

 

Или возможна более простая реализация?

И насколько производительна может быть такая схема для отслеживания изменения состояний объектов в режиме реального времени на не очень производительном железе?

Поделиться сообщением


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

Просто тут не будет :)

AAM , по опыту, довольно медленный.

ASM , как правило, быстрый, но дерганый, нужно сглаживать движение.

Посмотрите этот проект: https://github.com/TadasBaltrusaitis/CLM-framework/tree/master

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

Может пригодится еще : https://github.com/patrikhuber/eos 

 

 

 

  • Like 1

Поделиться сообщением


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

Иллюзий по поводу простоты я не строю :) Но меньше всего хочется двигаться в неправильном направлении...

Насколько реалистична такая реализация:

1. Раз в несколько секунд с помощью AAM или ASM находим очертания интересующего нас объекта, а также ключевые точки внутри него для последующего отслеживания.

2. Отслеживаем найденные точки (обычный tracking) с целью определения возможного изменения положения объекта в пространстве. И по этим точкам пересчитываем углы наклона.

3. Если отслеживаемые точки потеряны, то заново запускаем п. 1, ну и просто с какой-то периодичностью запускаем п. 1 для корректировки п. 2.

 

И кто-нибудь пробовал вот это решение - насколько оно точное и производительное?

https://docs.opencv.org/4.1.0/d2/d42/tutorial_table_of_content_cnn_3dobj.html

3D модели в формате ply я вполне могу насоздавать для обучения.

Правда, насколько я понял, таким образом я смогу только обнаружить объект и узнать его положение, но не смогу получить ключевые точки/очертания объекта.

Поделиться сообщением


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

Наткнулся на похожий проект: https://github.com/lmb-freiburg/mv3d 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 23.07.2019 at 17:56, Smorodov сказал:

Наткнулся на похожий проект: https://github.com/lmb-freiburg/mv3d 

Спасибо.

Нашел у них же еще более интересное решение, которое на выходе выдает 3D координаты (21 точку на каждой руке). Не знаю, правда, насколько все это производительно - надо пробовать...

https://github.com/lmb-freiburg/hand3d

  • Like 1

Поделиться сообщением


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

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

https://github.com/timzhang642/3D-Machine-Learning

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

687474703a2f2f7669732d7777772e63732e756d

Поделиться сообщением


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

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×