-
Количество публикаций
3 873 -
Зарегистрирован
-
Посещение
-
Days Won
346
Сообщения, опубликованные пользователем Smorodov
-
-
Ну так PSNR используют обычно: http://docs.opencv.org/2.4/doc/tutorials/gpu/gpu-basics-similarity/gpu-basics-similarity.html
-
Похоже на это:
и это, судя по картинками в конце pdf-ки это именно оно и есть.
-
Если вы знаете где точка находилась на предыдущем кадре, знаете оптический поток для этой точки, то координаты точки на текущем кадре будут равны координатам точки на предыдущем кадре плюс оптический поток в этой точке.
-
Матрицу err не использовал, а получаете ответ на вопрос: где будут заданные точки текущего кадра на следующем кадре? Да возьмите пример из стандартных примеров OpenCV там все понятно.
-
Ну возьмите датасет и сравните, то что должно получиться (ground truth) с тем что у вас получается.
Хотя бы здесь: http://sintel.is.tue.mpg.de/
-
Просто инициализация переменных, привычка.
-
Установите тип проекта x64 или OpenCV установите x32.
-
Здравствуйте, ну это вы вероятно форумом ошиблись.
Это больше по теме здесь: https://ru.stackoverflow.com/ .
-
Есть еще "MS-Celeb-1M Dataset" но не помню есть там метки обозначающие персону или нет.
Вообще да, CASIA довольно грязный и неравномерный датасет, строил гистограмму получается что то похожее на экспоненту.
То есть одних фоток во много раз больше чем других.
UPD: глянул, вроде должны быть метки: https://msceleb.github.io/celeb1m/1m
-
ЦитатаkNN сейчас тоже курю...:-)) вот интересно есть некие алгоритмы, встроенные сразу в несколько СУБД( MSSQL, postgres), вроде MSSQL Analysis Services(както так) и вроде бы эти алгоритмы как раз так и называются: Поиск ближайшего соседа(ей). Я бегло гуглил примеру работы с ними - они все для геоданных, у которых размерность маленькая.. и чесно говоря непонятно, можно ли натянуть их на задачу поиска среди 128ммерных данных.. Может кто слышал об этом что-нить?? Хорошо наверно было бы запользовать готовый велосипед.. С
Я как-то занимался чем то подобным, из готовых БД скорее https://support.hdfgroup.org/HDF5/ подходит, а поиск соседей делать ручками. Но в конце остановился на простой загрузке векторов из файла в память, в моем случае этого вполне достаточно было, ну и поиск OpenCV-шным kNN.
-
Да со сферой то ничего сложного, для каждого лица есть 128-мерный вектор, длина которого равна единице.
Для того чтобы сравнить два вектора, можно найти угол между ними, ну или косинус угла.
Так как векторы нормированные, то косинус угла будет равен скалярному произведению.
Вот косинус и будет определять насколько похожи лица с точки зрения OpenFace.
Естественно при добавлении новых данных качество поиска будет падать.
То же верно и для человеческого восприятия, среди 10000 человек, всегда найдутся похожие, которых вам будет трудно различить, в случае нескольких человек, вы просто запоминаете отличия одного от другого, создавая более настроенную на этих людей систему признаков. В случае большого количества необходимо использовать более общие, соответственно менее точные метрики.
К тому же SVM плохо доучивается, да, есть разные извращения по этому поводу, но широкого применения я почему то не вижу.
То есть, добавил человека, переучивай SVM.
Можно еще использовать kNN если человек при внесении в базе делает несколько фотографий, точность такой классификации должна быть повыше простого сравнения расстояний или углов с единственной фотографией в базе.
-
К сожалению актуален.
-
Так то так, но это если пространство правильно деформировано и имеет правильную размерность, тогда лица каждого человека будут формировать гиперсферы одинакового радиуса. Но вот это как раз и есть сферический конь в вакууме, такое редко бывает на практике.
Обычно получется так что точки для одного человека ложатся в виде N-мерной гиперколбасы и гиперколбасы эти переплетены между собой узлами. Так вот, чтобы понять где чье лицо нужно создать границы (не сферические), чтобы классификатор мог отличить где кто. Вот при обучении SVM и обучается классифицировать кто какой гиперколбасе принадлежит.
А вообще, насколько я помню, OpenFace выдает вектор на 128-мерной гиперсфере радиуса 1, и можно измерять углы между векторами, чтобы узнать кто на кого похож.
Есть еще t-sne, которые могут выкладывать гиперпространство на плоскости или в 3-D.
-
Не ну есть конечно метод, но он "через назад".
Можно обучить по бинарному SVM классификатору на каждый символ. Дальше думаю понятно.
-
Что то мне подсказывает, что SVR служит для интерполяции функций по точкам.
-
Есть один выход, открыть исходники и посмотреть, что делается при установленном флаге returnDFVal = true.
-
Проверить не могу, у меня версия 3.x там такого параметра нет, только что попробовал.
-
По поводу svm.get_support_vector, в SVM по определению расстояния до опорных векторов вроде как всегда равно единице (ну или величине зазора, если они не нормированы, но одинаковые), в SVM c "мягкой" (soft margin svm) границей возможны варианты. Параметр С, насколько я помню, как раз и задает "жесткость" границы.
Не параметр целочисленный, а, возможно, сетка целочисленная используется при решении, поэтому и расстояния целые.
Я расстояния до границы не использовал в SVM, так что могу только предполагать.
-
В смысле целые числа, так-то функция возвращает float.
Попробуйте запустить OpenCV-шный пример points_classifier, для SVM ну допилить чуть, чтобы выдавал расстояние, до границы, сможете визуально проверить то он выдает или нет.
Глянул еще раз документацию, похоже оптимизация идет на сетке
Generates a grid for SVM parameters.
-
C++:
CvSVM::
get_default_grid
(int param_id) -
Parameters: -
param_id –
SVM parameters IDs that must be one of the following:
- CvSVM::C
- CvSVM::GAMMA
- CvSVM::P
- CvSVM::NU
- CvSVM::COEF
- CvSVM::DEGREE
The grid is generated for the parameter with this ID.
-
param_id –
The function generates a grid for the specified parameter of the SVM algorithm. The grid may be passed to the function
CvSVM::train_auto()
.Сетка строится по параметрам, которые вы задаете, возможно она в вашем случае целочисленная.
Но вообще там double
CvParamGrid::CvParamGrid
The constructors.
-
C++:
CvParamGrid::
CvParamGrid
()
-
C++:
CvParamGrid::
CvParamGrid
(double min_val, double max_val, double log_step)
The full constructor initializes corresponding members. The default constructor creates a dummy grid:
CvParamGrid::CvParamGrid() { min_val = max_val = step = 0; }
-
C++:
-
SVM дискриминативный метод, а не генеративный, то есть по умолчанию вероятности не дает, а дает только границу разделения.
Но можно приспособить расстояние до границы разделения,как упомянуто выше, даже добавить сигмоиды, будет очень похоже внешне, но это не вероятность.
-
Поток GUI работает в цикле WinMain, там обрабатываются сообщения системы, чтобы закрыть, нужно отправить соответствующее сообщение. Тогда программа завершит этот цикл и теоретически должна закрыться. Но может надо просто камеру вначале закрыть, она тоже может держать программу.
-
Не знаю, с cli + IplImage не работал. Может умны указатель убирает сам за собой ?
-
Упс, цикл у вас в обработчике нажатия кнопки. Не ну это так не делается. В обработчиках событий должен быть короткий быстро выполняющийся код, ну никак не вечный цикл. То что у вас сделано, это очень плохо. Посмотрите, на форуме есть примеры вывода видео на форму.
-
С формами такое не работает. Вам нужно сделать нормальный выход из программы, послать сообщение закрытия например.
Цикл крутите отдельным потоком?
Детектор движения
в Обсуждение общих вопросов
Опубликовано · Report reply
Я как то запускал исходники этого метода, на МАТЛАБ по моему, что то там далеко от реалтайма то было, насколько помню.