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

BeS

Пользователи
  • Количество публикаций

    349
  • Зарегистрирован

  • Посещение

  • Days Won

    43

Все публикации пользователя BeS

  1. Там есть раздел с туториалами: http://eblearn.cs.nyu.edu:21991/doku.php?id=all_tutorials
  2. Проекция --> в 3D

    В общем случае при построении обратного отображении к R^3 -> R^2, получаем отображение R^2 -> R^3, где каждой точке (x, y) соответствует множество точек {(x, y, z)}. В случае проекции конкретного 3D объекта на 2D плоскость, каждой точке плоского изображения может соответствовать несколько точек 3D объекта(какая конкретно - зависит от ракурса и т.д. и т.п.). Т.е. для нахождения соответствия вам скорей всего придется проецировать все 3D точки на искомую плоскость, а дальше разрешать сюръективность при помощи эвристик(например из всех 3D точек отобразившихся в одну 2D точку выбирать ближайшую по цвету и т.п.).
  3. VIBE

    Кому интересно, написал довольно шуструю вычиталку фона(пока только последовательная версия, до распараллеливания пока руки не дошли) основанную на алгоритме VIBE с оберткой для использования в OpenCV. Оригинальная статья: http://orbi.ulg.ac.be/bitstream/2268/145853/1/Barnich2011ViBe.pdf Мои исходные коды: https://github.com/BelBES/VIBE
  4. Трекинг точек на лице

    Ну наверно это выглядеть должно примерно как в этом видео: http://www.ecse.rpi.edu/homepages/cvrl/Demo/Demo_Wang.avi Где узлы "сетки" это ваши синие точки. А оптимизировать вероятно длины ребер и углы между ними. Более подробно не знаю т.к. не занимался задачей распознавания мимики.
  5. Трекинг точек на лице

    1) Не советую использовать ANSI C интерфейсы в opencv, т.к. уже в opencv 3.0 эти интерфейсы по сути deprecated, в следующих версиях их вероятно выпилят полностью. 2) Судя по примеру картинки - точки не рандомно по лицу натыканы, а имеют какую-то структуру. Отсюда возникает мысль, что имеет смысл построить параметрическую модель(модель в виде графа мне кажется вполне приемлемой) этих точек и искать их положение через задачу оптимизации. Так вы сможете достраивать модель даже в том случае, если некоторое число точек не было найдено.
  6. PDB файлы - это всего лишь файлы содержащие дебажную информацию, без них максимум что не получится отладчиком зайти в opencv'шные библиотеки.
  7. Все зависит от характера объектов. Вы-бы лучше выложили пример изображения с объектами.
  8. С FANN не работал - не знаю. "предобучением через отжиг" - грубо говоря сначала раскаляем динамическую систему(берем большие значения весов в НС), а затем остужаем её, при этом ДС переходит в некоторое состояние равновесия, полученную таким образом НС использовать как начальное приближение при обучении методом обратого распространения ошибки. Подробнее можно почитать например в книге Хайкина "Нейросети: полный курс".
  9. 1)Суть применения kernel trick - повышение размерности задачи, как альтернативу ему, можно пробовать понижать размерность за счет фильтрации шумов при помощи например МГК или RF, правда для линейно неразделимых и разумно подобранных фич этот трюк прокатит навряд ли. 3)Kernel Trick вообще никаких гарантий не дает, есть лишь предположение о том, что при отображении данных в пространство большей размерности множества окажутся линейно разделимыми. 4)Насколько я помню, для случая линейно разделимости только 1 гиперплоскость является оптимальной и много гиперплоскостей могут быть допустимыми.Причем и опорные вектора и гиперплоскость вроде находятся в этом случае однозначно.
  10. Для детектирования использовать LatentSVM. Для распознавания использовать глубокую сеть с предобучением через отжиг (на задаче распознавания знаков на таких сетях на практике достигают точности в районе 99,8%).
  11. Подсчет людей в кадре

    Подтормаживает потому, что: 1) вероятно вы используете изображения большого размера 2) вероятно вы используете Хааровские классификаторы, если взять LBP, то алгоритм будет ворочаться пошустрее, но менее точно. В туториале с opencv.org есть переменная std::vector<cv::Rect> faces; Там лежат координаты ROI всех найденных лиц, faces.size() вернет количество лиц найденных на изображении.
  12. Подсчет людей в кадре

    Чтобы прочитать консольный вывод, существует магическая кнопка F10 в VS, тогда можно выполнять программу пошагово и смотреть на чем краш происходит. Cannot find or open the PDB file - это значит, что не найдены файлы с дебажной информацией. The thread 'Win32 Thread' (0x9d8) has exited with code -1073741510 (0xc000013a). - это по видимому говорит о том, что где-то в приложении есть мультитрэйдинг и в нем некорректно, либо авварийно завершаются порожденные потоки(основной судя по всему корректно умирает). По поводу сампла на opencv: http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html#cascade-classifier вот туториал по созданию каскадных классификаторов на основе Хааровски слабых классификаторов.
  13. Ну в Shazam, например, для поиска песен используется Time-Frequency Analysis, вероятно для поиска "похожих" песен тоже можно применить)
  14. Подсчет людей в кадре

    У вас должен быть список координат ROI найденных лиц? слить ROI который принадлежат одним и тем-же лицам и будет вам размер вектора соотвествовать числу лиц в кадре...
  15. А никто не знает хорошего описания на русском языке по Deep Learning? А то на английском вагон статей, а в рунете такое ощущение что никто не пользуется.
  16. У Золотых Н.Ю. на сайте есть еще методички к лабораторным работам с описанием основ работы с R http://www.uic.unn.ru/~zny/ml/ А еще есть интересный сайт, где можно повышать свои скилы в это области, участвуя в конкурсах https://www.kaggle.com/
  17. А как победили?
  18. нейросеть в opencv

    Вот там есть документация по всем алгоритмам машинного обучения в OpenCV: http://docs.opencv.org/modules/ml/doc/ml.html
  19. А не пробовали скармливать этому солверу ГУ как у вас, а в качестве начальных условий например сифтовые дескрипторы? Интересно было-бы взглянуть на результаты.
  20. У вас в коде в нескольких местах присутствуют примерно такие конструкции: for(int i=0;i<H-1;i++) { for(int j=0;j<W-1;j++) { gyy.at<float>(i+1,j)=gy.at<float>(i+1,j)-gy.at<float>(i,j); gxx.at<float>(i,j+1)=gx.at<float>(i,j+1)-gx.at<float>(i,j); } } Если тут использовать для обращения к отдельным элементам вместо .at<> явное обращение через указатель, то будет прирост производительности.
  21. сшивка в панораму

    Ну у нас есть для каждой точки SIFT дескриптор, образ ищем как точка с ближайшим по заданной метрике дескриптором. Собственно пары точек это если говорить терминами OpenCV - это объекты типа cv::DMatch. Вообще ваша задача мне напоминает Kinect Fusion, только в вашем случае пространственной информации меньше. Вот описание того, как работает kinfu: http://razorvision.tumblr.com/post/15039827747/how-kinect-and-kinect-fusion-kinfu-work, может оно натолкнет на какую-то идею.
  22. сшивка в панораму

    Я не понимаю что вы пытаетесь формализовать в виде графа и какие циклы обходить...
  23. сшивка в панораму

    У вас есть два набора точек с каждого изображения. Берем один из наборов как исходный и пытаемся найти каждой точке из набора образ в наборе точек с другого изображения -> получаем пары точек. Ребро в графе связывает 2 пары точек, т.е. 2 точки исходного изображения и 2 точки соответствующих образов. По последней ссылке, насколько я понял при беглом осмотре, на каждом шаге берем новое изображение, строим гомографию между ним и каждым изображением уже вошедшим в панораму, потом пытаемся вклеить это изображение в сцену минимизируя ошибку преобразования при добавлении этого изображения.
  24. сшивка в панораму

    Да, строю полный подграф с вершинами представляющими соответствия, а "хитрая формула" - это ф-я оценки взаимного расположения для 4х точек(2 точки с каждой вершины). Потом я строю для каждой вершины окрестрость (выбираю те вершины вес от котороых до текущей больше порогового) и в окрестности ищу локальный максимум при помощи линейного программирования, затем для пересекающихся локальных максимумов(окрестность строю для каждой вершины, поэтому много чего пересекаться будет) объединяю окрестности и на выходе получаю уже образы, размер которых определается размером локальных максимумов. Свойство непересечения логично вытекает из физической природы мира (одна и та же точка не может принадлежать разным объектам). Оптимальное в глобальном смысле решение не гарантируется (т.к. оно будет соответствовать глобальному максимуму, который мы не ищем), но решение получается приемлемым. Ищем мы столько образов сколько есть на изображении а не только максимальный. Размеры образов для поиска можно регулировать выбирая различную ф-ю задающую вес ребра и выбирая различные окрестности. Мера похожести задается при помощи выбора различных криетриев для построения исходного набора соответствий и выбор различных весовых функций. Для N изображений я даже не задумывался как обобщить, можно и все изображения попарно прогонять, а можно попробовать последовательно прогнать и транзитивно строить преобразования между всеми изображениями (гесли знаем гомографию A -> B и B -> C, то логично предположить, что мы сможем аналитически построить преобразование A -> C), но это надо на практике проверять уже.
  25. сшивка в панораму

    Клика — полный подграф неориентированного графа. Другими словами, клика графа есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это подмножество не принадлежит никакому большему подмножеству с тем же свойством. В данном случае ссылку я кинул только для того, чтобы показать идею того, как это принципиально решается. По сути вы хотите решить NP-полную задачу, а они за "умеренное"(относительно полного перебора естественно) время решаются через линейное программирование. Собственно эту задачу я и решал) В статье у меня граф как раз так и строится, только там в качестве вершин используются не патчи с одного изображения а соответствия, тем самым я сразу уменьшил количество рассматриваемых вершин(можно сразу отсеять совсем неудачные варианты просто по дистанции между дескрипторами) и получаю возможность свести задачу с полного перебора по двум графам к задаче оптимизации на одном графе. Если вас интересует построение панорам в принципе, то я бы посоветовал вам посмотреть вот эту книгу: http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf , там вроде целая глава была посвящена склеиванию панорам.
×