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

privetvision

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

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

  • Посещение

  • Days Won

    2

Сообщения, опубликованные пользователем privetvision


  1. 1 час назад, Smorodov сказал:

    Вот упрощенный вариант алгоритма с псевдокодом: 

    http://cs229.stanford.edu/materials/smo.pdf

     

    Исходник алгоритма на питоне:

    https://github.com/pbharrin/machinelearninginaction/blob/master/Ch06/svmMLiA.py

    Вы лучше скажите, что делать после того как как вычислил производные по лямбда 1, 2, 3. Мне главное математически понять, а там закодить получится. 


  2. В 25.05.2016 at 23:43, Smorodov сказал:

    Ух!

    Нарисовал последовательность шагов.

    1) Берем начальную гипотезу границы (случайно).

    ищем ближайшие точки из каждого набора (E и H). 

     

    2) Передвигаем прямую так, чтобы выровнять расстояния.

     

    3) Заново ищем ближайшие точки.

     

    4) Опять выравниваем расстояния.

     

    5) повторять до сходимости.

    6) Нормировать коэффициенты так, чтобы расстояние до каждого класса было равно единице.

     

    Вроде так должно получиться. 

    Что касаемо этого метода, то вот ловушка. Screenshot_2.png

    • Like 2

  3. Я попробовал через множители Лагранжа сделать, но застрял здесь. Пробовал найти производную по лямбда 1, 2, 3 объеденить в систему в решить, но в итоге крамером не решается, т.к. бесконечное множество решений, а гаусс выдал x = -3, y = -2, но это не совпадает с решением на этом сайте. 
    Screenshot_1.png


  4. Правильно ли я понимаю, что после того, как мы уровняли расстояние от прямой до точек из разных кластеров, мы должны поворачивать эту прямую вокруг своей оси на 360*, чтобы найти максимальное расстояние.

    Хотя, так подумав, максимальным расстоянием до прямой между двумя точками будет перпендикурялр опущенный к центру этого расстояния


  5. 6 часов назад, Smorodov сказал:

    Ну так максимизировать отступы и выровнять расстояния и прямая встанет как надо.

    Screenshot_3.png.9f9650c8f4e60bf0bab11f624a1b94fc.png

    Мне тут подсказали, что тут зацикливание будет, мол находится новая ближайшая точка, а на след. итерации предыдущая точка стала ближе и так зациклимся. 


  6. И все-таки, начал делать на яве, простой вопрос, как найти вектор весов (нормаль к гиперпроскости) ? 

    Если у нас такой случай, как на картинке ниже и если мы будем делать как видео в первом посте, то W = (0:3) что полная чушь...

     

    Screenshot_8.png


  7. Недавно стало известно, что приложение MSQRD купил Facebook за 10 млрд руб. (российских)

    MSQRD - мобильное приложение, созданное Белорусскими разработчиками (10 человек).

    Понятно, что такие деньги были отвалены за быстрый алгоритм трекинга лица, то и правда лицо находит без лагов и задержек, часто хватает даже небольших черт лица.

    Пробовал кто-нибудь ресерчить и пробовать ускорять имеющиеся алгоритмы? 


  8. 2 часа назад, Smorodov сказал:

    Просто берете две ближайшие друг к другу точки соседних выборок

    Ну вот, я этот момен описал более детальнее:

    18 часов назад, privetvision сказал:

    Вот вопрос, в начале когда у нас два класса: круги и квадраты, нам надо найти:

    1. крайний правый круг для левого класса

    2. крайний левый квадрат для правого класса?

    Путем сравнения координат по x и y?

    А дальше работать с этими двумя точками, как в алгоритме выше

     

    Цитата

    , проводите между ними прямую, находите середину этой прямой, проводите перпендикуляр через эту точку.

    Хм, вот этого раньше не встречал! Круто! Вопрос, перпендикуляр это вектор нормали, он же w в нашем алгоритме верно?

    Цитата

    Делите координаты всех точек (и коэффициенты прямой) на половину расстояния между двумя ближайшими точками. 

    хм, не понял зачем делить координаты ВСЕХ точек? Что это дает? например точка p7 (3; 2) ее коорды делить на ||w||/2, пусть ||w|| = 10, тогда будет p7 / 5, в итоге у нас будет новый вектор p7 (3/5; 2/5), что он дает?

     

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


  9. 1 час назад, Smorodov сказал:

    Не "крайний левый" и "крайний правый", а ближайший к границе со стороны квадратов и ближайший к границе со стороны кругов (это и будут опорные векторы).

    PS: Есть формула для определения расстояния от точки до прямой.

    Я про самое начало, на примере рассматриваются 2 точки, а если их больше будет? Где сам алгоритм выбора этих 2-ух точек? Граница ищется относительно этих 2 точек, а как их выбрать, если их множество. Тут на ум приходит только самый крайний левый и крайний правый. А вы уже рассказываете конец алгоритма.


  10. Вот вопрос, в начале когда у нас два класса: круги и квадраты, нам надо найти:

    1. крайний правый круг для левого класса

    2. крайний левый квадрат для правого класса?

    Путем сравнения координат по x и y?

    А дальше работать с этими двумя точками, как в алгоритме выше


  11. Постепенно подкапываюсь к понимаюнию. Только вот, что это Screenshot_1.png такое? Двойной модуль? Или корень от квадрата w?

    И немного перепутал w и w0, в первом случае это вектор весов или нормали к гиперплоскости, а w0 - это омега, какое-то число, пока не понял для чего.

    П.С. что-то хостинг периодически жалуется на лимит ресурсов процессора 

    S5rbkpK.png


  12. Отступление:

    Перебрал кучу разных статей по svm и везде одно и тоже, ну так сухо рассказывают, просто жесть, такое ощущение, что читатели априори математики. И нигде нет примера на пальцах, ну как же без примера? Ну на кой черт сухие формулы пихать. Достаточно одного рабочего примера, что вот это X, а это Y, тут 1 а тут 2, теперь складываем, получаем вектор, это дает нам это, а вот дальше делим на это число и получаем. НО нет, они рассказывают все заумными фразами, что мне хочется зевать. 

    Проблема.

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

     

    Что мне не понятно.

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

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

    1. Находим крайнюю кружочек и крайний квадрат.2

    2. Получаем их координаты, на видео это x1 = (1,1) и x2 = (2,3)

    3. Потом ищется вектор весов (или нормали) w = (2,3) - (2,1) = (1, 2) = (a, 2a) - первый вопрос зачем? Что это?

    4.Потом берется формула w*x1 - w0 = 1    и      w*x2 - w0 = -1. Что такое w0?

    5. Далее подставляем в формулу значения и выражаем w0 = 1 - 8a  и w0 = -1 - 3a

    6. Выражаем одно через другое, 1 - 8a = -1 -3a, 5a = 2, и получаем a =2/5

    7. Потом подставляем a = 2/5 в формулу w0 = 1 - 8a и получаем w0 = - 11/5

    8. Подставляем a=2/5 в вектор w = (a, 2a) = (2/5, 4/5) - повторный вопрос это что за вектор?

    9.Ну и наконец мы подставляем координаты вектора w в формулу g(x) = 2/5 * z1 + 4/5 * z2 - w0. Тут вопрос, что это за функция g(x), что это за значения z1 и z2?

    И как все-таки мы построили гиперплоскость? Как получить координаты гиперплоскости? Что-то я упустил

    • Like 1

  13. Что с точки зрения математики представляют собой выпуклые и дефектны точки? Каким образом они находятся. Проще говоря мне нужно понять внутренность opencv-ой функции convexityDefects.

    Как я понимаю:

    Что-то похоже на график функции, если он пошел на спад по Y, то это начальная точка выпуклая, потом в цикле ищется конечная выпуклая точка, которая должна быть >= по Y начальной точке, если так, то мы нашли начальную и конечную выпуклые точки. Затем находим точку дефектную в пределах этого отрезка, фильтруем по глубине.


  14. В общем целый день про*ался, в итоге так и не получилось собрать gpu под mingw.

    Валится на 56%, поиск в гугле ничего не дает, уже что только не искал...

    Скрин ошибки.

    fKJWFtE.png


  15. Есть такая проблема, видео с одной камеры отображается быстро, но если в этой же программе поулчать кадры со второй камеры, то начинает подтормаживать. В чем зарыта проблема? Что является узким горлышком?

    Пробовал разбивать на два отдельных потока, для каждой камеры свой, но результата не дало. Вот погуглил про GPU, есть  у кого примерчик простой, как получать с камеры поток кадров и распараллелить вычисления на gpu?

    Только не понятно, из вычислений - только поток кадров получаем, подойдет ли для этого GPU.


  16. Заметил такую вещь, когда освещение плохое, движение руки происходит быстро, без лагов, как только увеличить освещение в помещении, то видна задержка обработки, рука перемещается уже с лагами. Как это называется, где копать?

    Как можно получать быстрее кадры, но хуже по качеству? 

×