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

Smorodov

Главные администраторы
  • Количество публикаций

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

  • Посещение

  • Days Won

    346

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

  1. Non maxima supression для heatmap?

    Трехмерная мапа x,y и scale. Это дает менее дискретное нахождение масштаба, т.к. с интерполяцией, ну и еще надежнее получается, т.к. если объект присутствует в кадре, то он должен отметиться не на одном этаже пирамиды а на нескольких смежных. Причем эти этажи должны идти подряд, если нет, это шум. Если ищем на каждом отдельно, получается больше шума. Слой может дать высокий отклик а на соседних ничего нет, в таком случае, вряд-ли там есть объект, размытие по этажам, кстати, уменьшает вес таких пиков. Затем убрав шум (взяв только правильные этажи), можно уточнить координаты рамки. ЗЫ: ничего против NMS боксов не имею, работают в большинстве случаев отлично.
  2. Чтобы сохранить данные нужно самому дописать функции сохранения. Покопайте здесь: https://github.com/pdollar/coco/tree/master/PythonAPI/pycocotools
  3. Так там же есть питонский экстрактор. Просто при помощи этого экстрактора перезапишите все в более удобном для вас формате.
  4. Я предлагаю соорудить маппинг свойств юзера (юзер-метрика) на свойства юзера которого он лайкает (лайк-метрика). Похожие юзеры будут лайкать примерно одинаково.
  5. Non maxima supression для heatmap?

    Я так делал, размытие помогает собрать более-менее гладкий сгусток иначе получаются сплошные квадраты. Наслаивая как кальку, получим максимальную вероятность. Найдя x,y координаты, смотрим по слоям вдоль оси масштабов, там, при достаточном количестве этажей пирамиды будет кривая с максимумом. Аппроксимируем ее гауссианом или параболой и получаем координату максимума по масштабу.
  6. Соорудить пространство юзеров по их свойствам, затем выполнить ембеддинг (t-sne например) по лайк-метрике и мерять расстояния между юзерами.
  7. Non maxima supression для heatmap?

    Не а, если размывать гауссианом в 3D, то мы и получим максимум в 3D точке, а масштаб можно легко вывести аппроксимацией (Z координата), впихнув точки в колокол и посмотрев где максимум.
  8. Non maxima supression для heatmap?

    А почему нет ? Привести к общему масштабу и сложить, неплохо еще после этого 3D гауссианом размыть (по слоям (X,Y) и между слоями (Z) ).
  9. Что то не очень понятно. Можно с минимальным примером ?
  10. Выделялка ROI

    Наконец то добавили выделялку ROI: http://www.learnopencv.com/how-to-select-a-bounding-box-roi-in-opencv-cpp-python/ Как юзать: #include <opencv2/opencv.hpp> // selectROI is part of tracking API #include <opencv2/tracking.hpp> using namespace std; using namespace cv; int main (int argc, char **arv) { // Read image Mat im = imread("image.jpg"); // Select ROI Rect2d r = selectROI(im); // Crop image Mat imCrop = im(r); // Display Cropped Image imshow("Image", imCrop); waitKey(0); return 0; }
  11. VOTR имеет скрипт на питоне, правда там для трекинга одной цели, как я понимаю. Вот для нескольких целей: https://github.com/glisanti/CLEAR-MOT И чедендж: https://motchallenge.net
  12. По классике для сравнения объектов, обычно выделяются признаки, совокупность которых, по сути своей, является компактным представлением класса объектов, позволяющим максимально точно различать эти объекты между собой. Если мы имеем дело с лицами, то признаками может быть например словесное описание особенностей лица, если человек знает с чем имеет дело, то ему и не нужно описывать как выглядит лицо, так как большинство лиц похожи. А важна только информация, позволяющая выделить конкретного человека. Классификатор, это такой инструмент, который позволяет вывести необходимые нам признаки, чтобы мы могли различать объекты, подавая на него новые данные. Могут быть как обучаемые, так и жестко заданные вручную. Обучаемые могут быть построены на основе простых математических правил (если a > 0.5 тогда это "кот" иначе "собака"), математической статистики (задаются распределения и выводится вероятность принадлежности объекта к заданному классу ("кот") ), или нейронных сетей (тоже бывают разные). Как признаки, так и правила разделения классов могут быть как заданными вручную, так и обучаемыми на данных. см. "собственные лица" (eigen faces) как обучаемые признаки, или SIFT, FAST, LBP, SURF и т.д. как универсальные синтетические признаки (созданы вручную). Метки объектов, это просто их удобное для компа представление (0-фон, 1-кот, 2-пес). Каскадное преобразование, я имел ввиду проводим одно и то же действие с одним и тем же изображением но в разных масштабах. Можно изменять масштаб после обработки, например суперпикселями, а после обратным ходом, объединив суперпиксели и передав метки с наименьшего масштаба наибольшему получить сегментацию для исходной картинки. Ну это просто как вариант. После этого объединяем результат. Еще называется "пирамида".
  13. Да кривых рассеяния важно именно что там после рендеринга получается картинка очень близкая к исходному растру. А хранить нужно только эти самые кривые. Почему привел ? потому что это метод уменьшения избыточности изображения. Сеперпиксели также позволяют уменьшить размерность задачи и поводить сегментацию изображения по меньшему количеству элементов. Можно провести каскадное преобразование или пропустить через классификатор и получить метки объектов. Ваш метод безусловно интересен, и результаты очень хорошие, но пользы от количества предоставленной по нему информации не много.
  14. Как варианты могут быть интересны: Кривые рассеяния: https://habrahabr.ru/post/156903/#first_unread http://lcs.ios.ac.cn/~guofu/files/vectorization/SparseImageCurves.pdf Суперпиксели: http://ivrl.epfl.ch/research/superpixels
  15. Да вроде его и собирать то не нужно, заголовки включил и ладно. Вот тут посмотрите: https://eigen.tuxfamily.org/dox/TopicMultiThreading.html
  16. Я говорил что метод тяжелый . У меня вообще прямолинейный реализован, тупо решает систему уравнений как есть. Есть разные оптимизации, но почти все будут требовать много ресурсов . Вот список: http://www.alphamatting.com/eval_25.php Все равно на CUDA будет лучше. Еще можете попробовать robust matting: main.cpp но он тоже не быстрый 8 сек для 500x500 на Core i-7-4790. Кстати, на нейронке тоже есть (и датасет автор обещает выслать ): http://www.cse.cuhk.edu.hk/leojia/projects/automatting/index.html
  17. Что то мне кажется что тут сегментация по цвету не прокатит, на примере автора вопроса даже участков кожи-то нет.
  18. Ну если так, то остается еще GabCut и Matting оба метода тяжелые, но часто дают неплохой результат. При крепил результат Matting, на входе trimap и изображение, на выходе маска. Тут правда и обычный порог хорошо справится, но другие пример искать долго А вот, кстати нашел: Есть довольно быстрые методы маттинга, в сети видел такие, но реалтайм не встречал, везде секунды и больше на кадр.
  19. Ну так бы и сказали Вот сюда попробуйте фотки загрузить и посмотреть результат: http://www.robots.ox.ac.uk/~szheng/crfasrnndemo (почему то у меня открывается только через tor браузер). А вот исходники этой радости: https://github.com/torrvision/crfasrnn
  20. Да, сильно смахивает на edge preserving smoothing группу алгоритмов по определению. Посмотрите в сторону алгоритмов базирующихся на решении уравнений пуассона, здесь есть пример реализации суть в том, что можно выделить градиенты из изображения, отфильтровать их как нужно и восстановить изображение обратно. При подавлении слабых градиентов, изображение станет более "плоским". Есть еще selectiveGaussian пощупать можно в gimp, оптимизированные исходники там-же, если по простому, то создается маска, выделяющая точки которые более чем на заданный порог отличаются от всех точек скользящего окна, также создается обычное размытое изображение, и последним шагом пиксели исходного изображения по маске заменяются на пиксели размытого изображения. Параметры метода: величина порога, и размер скользящего окна (размер окрестности). По поводу фильтров еще есть такая популярная картинка, BLF это билатеральный фильтр, WLS это взвешенные наименьшие квадраты оба фильтра есть в OpenCV. WLS - аналог вроде называется FastGlobalSmootherFilter и находится в файле contrib/modules/ximgproc/src/fgs_filter contrib. Ну и для коллекции: https://github.com/soundsilence/ImageSmoothing
  21. Так там про нормирование в интервал [0:1] и не говорится, а говорится о взвешивании. Если у нас открытое множество данных, то заранее невозможно установить рамки так, чтобы оптимально по распределению и умещалось в заранее заданный интервал. Просто взяли некую площади за единицу, и посчитали соотношения.
  22. Ну так взяли за единицу нечто среднее, вот и скачет в обе стороны, тем более площадь, там же квадратичная зависимость от стороны. ЗЫ: А что за синий текст ?
  23. Отдельная история. Контора специально собирала (3ТБ данных), естественно они под NDA .
  24. Добавьте в библиотеки imgcodecs (у меня называется opencv_imgcodecs310.lib ). Она была добавлена в третьей версии.
  25. Простейший пример: #include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char** argv) { Mat img; img=imread("image.png",1); imshow("my image",img); waitKey(); return 0; } А для вывод на форму посмотрите это: SimpleQTApp.rar
×