Jump to content
Compvision.ru

All Activity

This stream auto-updates     

  1. Last week
  2. Спасибо, значит проблема не в конфигах.
  3. Иллюзий по поводу простоты я не строю Но меньше всего хочется двигаться в неправильном направлении... Насколько реалистична такая реализация: 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 я вполне могу насоздавать для обучения. Правда, насколько я понял, таким образом я смогу только обнаружить объект и узнать его положение, но не смогу получить ключевые точки/очертания объекта.
  4. Просто тут не будет AAM , по опыту, довольно медленный. ASM , как правило, быстрый, но дерганый, нужно сглаживать движение. Посмотрите этот проект: https://github.com/TadasBaltrusaitis/CLM-framework/tree/master Там есть и матлабовские скрипты для обучения моделей. Может пригодится еще : https://github.com/patrikhuber/eos
  5. Для начала соберите изображения, на которых сеть ошибается и дообучите сеть на них. (лучше новые, собранные при реальной работе) Можно просто дублировать их в датасете, чтобы встречались почаще. Ну и повторять процесс, пока результат не устроит.
  6. Правильно ли я понимаю, что реализация должна быть примерно следующей: 1. Найти искомый объект (объекты) в кадре с помощью классификационной нейронной сети. 2. В найденных объектах с помощью AAM найти ключевые точки. 3. По геометрии взаимного расположения точек в пространстве или с помощью регрессионной нейронной сети (по статистике расположения координат и соответствующих им углам) определить углы наклона. Или возможна более простая реализация? И насколько производительна может быть такая схема для отслеживания изменения состояний объектов в режиме реального времени на не очень производительном железе?
  7. Добрый день, я пытаюсь разобраться с TFOD и никак не могу понять, почему нейронка пропускает объекты. Размечено всё хорошо, и на одной нейросети ( у других людей, всё ок. У меня не особо получается сделать чтобы находило все) Использую я faster_rcnn_resnet50_coco.config На 10000 шагов страдает определение объектов. (классификация уже лучше) Больше чем 10000 шагов очень хорошо всё с классификацией, но всё так же остается с определением объектов. Но когда модель обучается на faster_rcnn_inception_resnet_v2_atrous_coco всё отлично и с тем и с тем, НО он очень долго обучается и медленно работает. Есть какие то соображения? Может кто сталкивался?
  8. Без CUDA тоже будет работать, но медленней. По факту ключевые точки на лице ищутся не методом Виолы-Джонса, им только лицо, а точки уже другими способами: AAM, нйросети (регрессия) и т.д. Возможно, тебе подойдут active shape models, которые до нейростей были лидером по качеству и не требовали видеокарты. Хотя сейчас с OpenVINO многие нейросети и так быстро работают.
  9. Не нашел ни одного туторила о том, как самому средствами openpose обучить нейронную сеть находить ключевые точки на своих объектах. Плохо искал или таких средств не существует? Кроме того, openpose требует CUDA, что мне не подходит...
  10. Посмотрите в сторону openpose, как делается тренировка скелета или вот....
  11. Добрый день! Подскажите в каком направлении копать. Задача: в режиме реального времени в кадре найти определенный объект, например, стул. Кроме того, определить ключевые/крайние точки (ножек, спинки и другие) - и, как следствие, определить угол наклона этого объекта относительно камеры по всем 3 осям. Насколько я понимаю, задача не сильно отличается от того же определения ключевых точек на лице методом Виолы-Джонса, но мне не понятно каким образом натренировать поиск не просто самого объекта, а конкретных точек на нем. Какие варианты реализации задачи существуют и какие из них наиболее точные и производительные?
  12. Взаимно , еще пока не совсем вернулся, но надеюсь скоро втянусь по полной.
  13. Earlier
  14. https://github.com/AliMorty/Markov-Random-Field-Project/blob/master/Codes/README.md https://github.com/nicholasjclark/MRFcov https://github.com/xinario/defocus_segmentation
  15. Возможно, но там ничего не сказано про сегментацию и нет кода. Я бы хотел для начала попробовать как "чёрный ящик"
  16. Про это речь ? https://habr.com/ru/post/241317/ Есть пример проекта на с++, если нужно могу поискать. Проект кажется был по теме анализа фото. Да и на форуме, где то была тема по распознаванию лиц по данной теме.
  17. Добрый день, хочу в целях самообразования поэксперементировать со случайными полями Маркова. Точнее сегментация с помощью их. Есть у кого нибудь скетч на питоне ? Знаю что варианты там есть всякие, но без разницы. Любое сойдёт. Интересен случай как обучение с учителем так и без. P.S. гуглить пробовал.
  18. Многое стало понятно, введу максимальную скорость перемещения объекта, что позволит отсекать глюки. Возникли новые технические трудности: информация с потоков может поступать не по-порядку. Вначале информация о настоящем кадре, а затем о предыдущем. Необходимо еще реализовать буфер для выравнивания последовательности поступающих кадров.
  19. Да, всё верно, сегменты привязываются к объектам. Каждый объект может хранить у себя не только последние координаты, но и число-счётчик: на скольких последних кадрах он был найден. Если потеряется в середине кадра и не найдётся, скажем, в течение секунды, то считать потеряным и удалять. Если найдётся, то обнулять счётчик. В реальности его можно ещё и доискивать, если не найден, но это уже может быть не реалтайм. Также можно в каждом объекте хранить его модель движения: в простейшем виде это просто скорость: сколько пикселей за 1 кадр он проходит по Х и по У. Чуть сложнее - линейный фильтр Калмана из OpenCV или самому. Тогда, если 2 человека объединились в 1 объект, один человек станет типа потерян. Но на каждом кадре всё равно изменять его последние координаты с помощью известных скоростей или фильтра Калмана. Получится, что в момент разделения потерянный объект "пройдёт" это расстояние сам по инерции.
  20. Рад Вас видеть! Хорошая идея зная какие ветки люстры включены подставлять нужный фон, заранее сформированный. Проблема в том что мы выполняем часть работы: даем команду какую ветку включать в соответствии с перемещаемыми людьми. Другие ребята делают еще какие то эффекты (меняют цвета, освещенность) и у меня нет информации о фоне. Спасибо Nuzhny за Ваши ответы! Можно для меня разжевать? Мне действительно не понятно. Венгерский алгоритм - это задача о оптимизации. После обработки кадра из 3 МБайт(Full HD) информации я получаю массив не более 256 байт (1 объект 16 байт), поэтому могу позволить сделать не оптимально. Хочу понять суть. Получается я должен сравнить 2 соседних кадра. Предположим на 1-кадре 4 сегмента, а на 2 кадре тоже 4 сегмента. Я должен назначить назначить привязку сегментов к объектам. На первом кадре назначаю номер сегмента равным номеру объекта. На втором кадре допустим для простоты (выбор метрики сейчас не важен можно площадь пересечения или как предлагают по ссылке искать коэффициенты https://cyberleninka.ru/article/v/algoritm-trekinga-obektov-v-realnom-vremeni-s-obrabotkoy-oshibok) ищу минимальное расстояние между центрами сегментов и объектов. Далее присваиваю сегменту номер ближайшего объекта. С этим понятно. Понятно, если появился или исчез объект на краях кадра. А что делать, если появился или исчез сегмент в центре кадра? Как определить это глюк, или 2 человека рядом дошли до середины сцены и разделились? Или наоборот зашли с разных концов сцены и объединились?
  21. Ну, результаты детекции выглядят очень неплохо. Просто применить классический венгерский алгоритм разве не получится? В качестве метрики между объектами использовать расстояние Жаккарда (IoU) - отношение пересечения прямоугольников к объединению. Кажется, что работать будет и быстро, и точно
  22. Может и несколько фантастичный вариант, но в качестве направления для подумать. 1. выгнать всех с площадки, выключить свет. 2. включать по очереди по одному прожектору, фоткать что получилось. 3. во время трекинга синтезировать фоновое изображение, сложением изображений включенных в данный момент прожекторов ( предполагаем известным) 4. применяем вычитание фона. 5. ..... т.д.
  23. Выполнил включение освещение сцены чисто по детектору движения, без трекинга. Камера работает в ИК-диапазоне. Для управления освещением использовал midi-протокол (библиотека rtmidi), виртуальный драйвер midi, который управляет освещением сцены (стандартная программа QLC+). На видео Вы можете видеть квадрат на полу, который имитирует размеры люстры. Вот что получилось: Обрабатываются все 25 кадров в секунду. Хотелось бы реализовать трекинг. Но приведенная ссылка является научной статьей, у которой еще 50 ссылок на другие статьи. Мне необходимо усреднять 5 соседних кадров для устранения дерганий и пропадания объекта. Как правильно это сделать?
  24. Посмотрите книжку "Practical time series analysis" (раздел "Recurrent neural networks for time series forecasting") Там как раз ваш случай разобран.
  25. Кусок кода слишком мал, ничего не ясно из него.
  26. На предыдущем шаге в некоторых центрах контуров рисую белые точки. Тут проверяю, если центры не белые то ставлю там большую черную точку, прорисовываю этот контур и добавляю в список, иначе добавляю в другой. Списки изначально пустые.Точки ставит верно но контура рисуются абсолютно все и естественно добавляются все в оба спискаЧто я делаю не так? for i, v in enumerate(c1): for m, z in enumerate(centers): pixel = imgcopy1[z[1], z[0]] if (pixel<200)==True: cv.circle(imvvv, z, 0, (0, 0, 255), 5) # нарисовали точки ellip = cv2.fitEllipse(v) cv2.ellipse(imvvv, ellip, (0, 0, 255), 2) dee.append(v) n = n + 1 else: deliq.append(v)
  1. Load more activity
×